用于C ++开发的EMACS - CEDET代码完成和项目的问题

时间:2009-09-26 17:59:51

标签: c++ emacs customization cedet

我正在为UBUNTU上的C ++项目设置EMACS。到目前为止,我在安装

方面取得了成功
  1. ECB
  2. CEDET - 我完成了代码完成和其他功能。
  3. 颜色主题
  4. 我遇到EDE包问题。 “项目”菜单未显示。我已将(global-ede-mode t)添加到 .emacs 文件中,但没有运气。我是否需要单独安装EDE包,还是附带CEDET?如何解决此问题并获得项目菜单?

    我的第二个问题是语义无法找到系统包含文件。它说无法找到头文件,因此代码完成不适用于标准库。我添加了(require'semantic-gcc)但没有运气。我通过添加(semantic-add-system-include“/usr/include/c++/4.3”'c ++ - mode)解决了这个问题,但我不认为这是正确的方法。我怎样才能获得(require'semantic-gcc)的作品?

    这是.emacs文件。

    (load-file "~/emacs/cedet/common/cedet.el")
    (load-file "~/emacs/cedet/ede/ede.el")
    (semantic-load-enable-minimum-features)
    (semantic-load-enable-code-helpers)
    (semantic-load-enable-gaudy-code-helpers)
    (semantic-load-enable-excessive-code-helpers)
    (semantic-load-enable-semantic-debugging-helpers)
    (require 'semantic-ia)
    (require 'semantic-gcc)
    (add-to-list 'load-path  "/home/nkn/emacs/ecb-2.40")
    (require 'ecb)
    (require 'ecb-autoloads)
    (setq ecb-tip-of-the-day nil)
    (ecb-activate)
    
    ;; custom key bindings for smart completion
    (global-set-key "\C-x\C-m" 'semantic-ia-complete-symbol-menu)
    
    (load "/home/nkn/emacs/color-theme-6.6.0/color-theme.el")
    (color-theme-initialize)
    (setq color-theme-is-global t)
    (color-theme-classic)
    
    (require 'ede)
    (setq global-ede-mode t)
    
    (semantic-add-system-include "/usr/include/c++/4.3" 'c++-mode)
    

    我已经检查了Alexarticle关于这个主题,但找不到与我的问题相关的任何信息。

    任何帮助都将不胜感激。

    修改

    CEDET版本:cedet-1.0pre6

2 个答案:

答案 0 :(得分:3)

您使用的是哪个版本的CEDET?

第二行配置不是必需的 - 第一行应加载所有...

从第3-7行开始,您只需要留下一个具有所需功能的一组。对于大多数情况,您只需要使用第4行或第5行

EDE应该由行激活(global-ede-mode 1) - 至少,这对我有用。您可以查看my cedet config

答案 1 :(得分:1)

如果您在项目中,则仅显示EDE“项目”菜单。 EDE可以自动检测项目,例如包含Automake文件的任何目录。它还将自动检测Emacs或Linux内核。

要从头开始创建新项目,请使用命令`ede-new'。然后,您需要知道要创建的项目类型。以这种方式创建的项目将创建一个Project.ede文件,并可以为您自动生成Makefile。

要使gcc自动检测支持工作,请尝试:

M-x语义 - 描述 - 环境

看看它可能做了什么。您也可以使用:

M-x semantic-gcc-setup

强制它运行。如果您使用的是gnu,gnu / linux,mac或cygwin系统,它会自动执行此操作。