2009-03-21 14 views
16

Recientemente cambié a emacs para editar mi código, y en su mayoría funciona bien.Emacs, Objective-C, y autocompletar

Sin embargo, para Objective-C me encuentro desaparecidos función de autocompletar de Xcode ya que tengo problemas para recordar los nombres de las funciones largos como

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation screen:(NSScreen *)screen; 

¿Hay una manera de conseguir la terminación automática de estilo Xcode en emacs?

Además, ¿hay algún buen paquete para ayudar con Cocoa o Objective-C en general que debería tener?

+0

Me gustaría señalar que puede usar combinaciones de teclas de Emacs en Xcode para que pueda obtener algunas de las ventajas de Emacs dentro de Xcode. – TechZen

+0

Desvanecimiento del cacao, ya que es mucho más relevante para Objective-C, y porque "autocompletar el cacao" es algo completamente diferente. – paulmelnikow

Respuesta

3

No he usado XCode, pero emacs viene con varios modos de autocompletar.

Ver:

  • construido en dabbrev-expand (M/ejecuta el comando dabbrev-expandir el cual "se completa automáticamente a" texto escrito parcialmente)
  • AutoComplete
  • HippieExpand

también cedet para algo más sofisticado, pero no creo que funcione con objetivo-c desafortunadamente.

+1

Gracias, no estoy seguro de que alguno de estos funcione bien (sin embargo, no parece que ninguno sea lo suficientemente sensible al contexto), creo que puedo limitarme a XCode para Objective-C. – cobbal

5

Un poco buggy y hacky, pero muy buena solución se encuentra en el clang-completion-mode.elclang svn.

9

me escribió un script para exportar las definiciones de funciones en Cocoa SDK como fragmentos yasnippet: http://github.com/zegal/yasobjc

Con la ayuda con ETAGS y auto-completar, la experiencia finalización está muy cerca de XCode. Puedes intentarlo.

+2

¡Muy inteligente y súper útil, me encanta! Gracias zegal – julien

+1

Buen trabajo! Sin embargo, me pregunto si es posible vincular esto a la Semántica. Si conozco el nombre del mensaje, yasnippet + yasobjc están bien para completarlo, pero ¿qué sucede si primero necesito encontrar el mensaje correcto? La semántica podría determinar el tipo de objeto en cuestión y presentar mensajes válidos de yasnippets. – Arne

+0

@Arne, me temo que actualmente la semántica no es compatible con objetivo-c .... – zegal

1

Editar el archivo auto-complete.el (buscar en la carpeta que ha instalado "auto-completar" paquete, por supuesto):

línea Goto 165, te garantizo que sabe qué hacer ya. :)

+2

Prefiero la 'M-x' personalizar-variable' RET' ac-mode 'RET'. O aún mejor en ti .emacs agrega '(setq ac-mode (cons 'objc-mode ac-mode))' – mathk