emacs24语义补全

emacs24语义补全,emacs,cedet,Emacs,Cedet,我正在尝试使用Emacs24和它附带的cedet版本实现语义补全。完成操作适用于我在自己的源文件中定义的类,但完成操作不适用于标准库或STL,这是我的emacs配置: (require 'cedet) (require 'semantic) (require 'semantic/ia) (require 'semantic/bovine/gcc) (semantic-add-system-include "/usr/include/c++/4.6.3" 'c++-mode) (setq sema

我正在尝试使用Emacs24和它附带的cedet版本实现语义补全。完成操作适用于我在自己的源文件中定义的类,但完成操作不适用于标准库或STL,这是我的emacs配置:

(require 'cedet)
(require 'semantic)
(require 'semantic/ia)
(require 'semantic/bovine/gcc)
(semantic-add-system-include "/usr/include/c++/4.6.3" 'c++-mode)
(setq semantic-default-submodes
      '(global-semantic-idle-scheduler-mode
        global-semanticdb-minor-mode
        global-semantic-idle-summary-mode
        global-semantic-idle-completions-mode
        global-semantic-highlight-func-mode
        global-semantic-decoration-mode
        global-semantic-mru-bookmark-mode))
(setq semanticdb-default-save-directory "~/.semanticdb/"
  semantic-complete-inline-analyzer-idle-displayor-class 'semantic-displayor-ghost)
(semantic-mode t)
在我的/.SytTyDB目录中,我只看到“!!!!!!!C++!4.6!x86y64-LIUX-GNU.BITS!语义.Cache”,甚至不使用CONFIG. 例如,当我尝试对std::list进行M-x语义分析时,我得到一个错误:“找不到std::list的类型”


有没有关于如何调试或修复的建议?

我今天在新的SSD上安装了一个全新的Ubuntu 13.04, 下面是我配置CEDET的步骤(我检查了它是否为
std::list
提供了补全)

基本设置
  • 获取一个新的并从源代码构建它。 这很容易

    ./configure&&make&&sudo make安装

  • 添加到
    .emacs
    (语义模式1)

  • 这就是全部设置

    测试
  • 在不加载任何内容的情况下运行emacs:

    emacs-q test.cc

  • 输入代码

    #包括

  • M-x
    语义模式

  • 指向
    $
    ,M-x
    语义ia显示变体
  • 故障排除 如果这些东西不起作用,很可能是语义数据库损坏了

    只要找到它所在的位置,对我来说它是
    semanticdb默认保存目录
    =“~/.emacs.d/semanticdb”, 把所有的东西都拿走


    然后,当访问源文件时,调用
    semantic force refresh

    可能是系统配置的问题。我在CentOS上运行,我尝试了上面的步骤,但得到了相同的错误。在第4步之后,我得到“找不到'std::list lst'的类型”。您是否完成了故障排除步骤?另外,确保您已经启动了所构建的emacs<代码>f1 C-a将显示版本。它必须是24.3.4
    int main() {
        std::list lst;
        lst.$
        return 0;
    }