【问题标题】:Emacs: Using and initializing CEDETEmacs:使用和初始化 CEDET
【发布时间】:2010-06-19 15:20:15
【问题描述】:

我使用 Emacs 和 CEDET 并自动完成代码完成。最初我设置了 CEDET,所以它每次在 Emacs 启动时加载。

但是,这需要很长时间,所以我认为在需要时加载它会很聪明,即 - 在我的情况下 - 在进入 C++ 模式时。

所以我把原来的函数移到了一个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++ 模式,一切正常。

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

【问题讨论】:

    标签: emacs hook elisp cedet


    【解决方案1】:

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

    您可以做的是在启动时加载 CEDET,然后在 C 模式挂钩中初始化代码助手。这样 C++ 模式将使用 mode-local 进行初始化,但额外的功能将在钩子运行后安装,因此可能会起作用。我自己没试过。

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

    【讨论】:

    • 感谢您的回答。所以 CEDET 取代了原来的 C++-mode-hook,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多