代码之家  ›  专栏  ›  技术社区  ›  phimuemue

Emacs:使用和初始化CEDET

  •  6
  • phimuemue  · 技术社区  · 16 年前

    我正在使用Emacs和Cedet以及Auto Complete来完成代码。最初我设置了cedet,所以每次Emacs启动时都会加载它。

    然而,这花费了很长的时间,所以我认为如果需要的话,即在我的情况下加载C++模式是很聪明的。

    所以我把原来的函数 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++模式,一切都会很好。

    有人知道我做错了什么吗?

    1 回复  |  直到 16 年前
        1
  •  8
  •   Eric    16 年前

    CEDET初始化设置它自己的C和C++模式钩子。如果它在运行同一个钩子时安装钩子,那么它就不会运行,并且第一个缓冲区也不会初始化。

    您可以在启动时加载cedet,然后在C模式挂钩中初始化代码助手。这样,C++模式将以模式本地进行初始化,但在钩子运行后将安装额外的函数,这样就可以工作。我自己没试过。

    我认为EDE模式不是很慢,所以在初始化时也可以这样做。