Я использую Emacs с CEDET и автозаполнением для завершения кода. Первоначально я настроил CEDET, чтобы он загружался при запуске Emacs каждый раз.
Однако, это заняло довольно много времени, поэтому я подумал, что будет разумно загрузить его только в случае необходимости, то есть - в моем случае - при входе в C ++ - Mode.
Итак, я переместил исходную функцию в lambda
, который вызывается при входе в режим C ++:
; 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)
)
)
Нет ошибок, но у меня есть следующая проблема: Когда Emacs впервые входит в режим C ++ - автозавершение кода не работает должным образом. Но если Emacs входит в режим C ++ во второй раз, все работает просто отлично.
Кто-нибудь знает, что я делаю не так?