Emacs: Используя и инициализирующий CEDET

Я использую Emacs с CEDET и автоматический завершенный для завершения кода. Первоначально я настроил CEDET, таким образом, он загружается при запуске Emacs каждый раз.

Однако это заняло довольно долгое время, таким образом, я думал, что это будет умно для загрузки его просто в случае необходимости, т.е. - в моем случае - при вводе C ++-Mode.

Таким образом, я переместил исходную функцию в a lambda это называют при вводе C ++-mode:

; 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 ++-mode впервые, завершение кода не работает правильно. Но если Emacs вводит C ++-mode во второй раз, когда все работает просто великолепно.

Кто-либо знает то, что я делаю неправильно?

6
задан phimuemue 19 June 2010 в 15:25
поделиться

1 ответ

Инициализация CEDET устанавливает собственные перехватчики режимов C и C ++. Если он устанавливает ловушку во время выполнения той же ловушки, она не будет работать, и ваш первый буфер не будет инициализирован.

Что вы можете сделать, так это загрузить CEDET при запуске, но затем запустить помощники кода в обработчике режима C. Таким образом, режим C ++ будет инициализирован с помощью mode-local, но дополнительные функции будут установлены после запуска ловушки, так что это может сработать. Сам я не пробовал.

Я думаю, что режим EDE не медленный, поэтому, вероятно, можно сделать это и во время инициализации.

8
ответ дан 16 December 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: