2010-06-19 12 views
6

Estoy usando Emacs con CEDET y me he completado automáticamente para completar el código. Originalmente configuré CEDET para que se cargue en Emacs cada vez que arranque.Emacs: Uso e inicialización de CEDET

Sin embargo, esto llevó bastante tiempo, así que pensé que sería inteligente cargarlo solo si fuera necesario, es decir, en mi caso, al ingresar a C++ - Mode.

Así que se trasladó a la función original en un lambda que se llama cuando entra en C++ - Modo:

; cscope for c(++) programming (finding symbols, etc.) 
(require 'xcscope) 

; C++ stuff 
(add-hook 'c++-mode-hook 
     (lambda() 
     (load-file "/usr/share/emacs/site-lisp/cedet-common/cedet.el") 
     (global-ede-mode 1) ; enable project management system 
     (semantic-load-enable-code-helpers) ; enable prototype help and smart completion 
     (require 'auto-complete-config) 
     (add-to-list 'ac-dictionary-directories "~/elisp/ac-dict") 
     (add-to-list 'ac-sources 'ac-source-semantic) 
     (local-set-key (kbd "C-:") 'semantic-ia-complete-symbol-menu) ; set shortcut for auto completion. 
     (local-set-key (kbd "C-.") 'ac-complete-semantic) 
     (ac-config-default) 
     ) 
    ) 

no hay errores, pero tengo el siguiente problema: Cuando Emacs entra en C++ - el modo por primera tiempo, la finalización del código no funciona correctamente. Pero si Emacs entra en modo C++ por segunda vez, todo funciona bien.

¿Alguien sabe lo que estoy haciendo mal?

Respuesta

8

La inicialización de CEDET configura ganchos en modo C y C++ propios. Si instala su hook mientras ejecuta el mismo hook, no se ejecutará, y su primer búfer no se habrá inicializado.

Lo que podría hacer es cargar CEDET al inicio, pero luego inicie los códigos auxiliares en el gancho del modo C. De esta forma, el modo C++ se inicializará con mode-local, pero las funciones adicionales se instalarán después de que se ejecute el gancho, por lo que puede funcionar. Yo no lo había probado yo mismo.

Creo que el modo EDE no es lento, por lo que probablemente también se puede hacer eso en el momento de inicio.

+0

Gracias por la respuesta. Entonces CEDET reemplaza al C++ original - modo-gancho, ¿verdad? – phimuemue

Cuestiones relacionadas