3

我有几个正在处理的 C++ 项目。为了自动完成,我一直在使用语义。但是,我想更好地利用现有的工具。

我有以下目录结构

  • 项目/
    • 生成文件
    • 源/
      • 我的 .cpp 和 .h 文件
      • 情侣其他目录/
    • 测试/
      • 我的测试文件

我目前在我的 .emacs 中有以下内容

(load-file "~/.emacs.d/vendor/cedet-bzr/cedet-devel-load.el")

(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-local-symbol-highlight-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-show-parser-state-mode)
(add-to-list 'semantic-default-submodes 'global-semantic-highlight-edits-mode)
(semantic-mode 1)
(require 'semantic/ia)

(require 'semantic/bovine/clang)

;; PROJECTS

(global-ede-mode t)

(ede-cpp-root-project "MyProject"
                      :name "My Project"
                      :file "/path/to/project/Makefile"
                      :include-path '("/path/to/first/includes"
                                      "/path/to/second/include")
                      :system-include-path '()
                      :spp-table '())

每当我打开项目时,C-c . g我会在迷你缓冲区中收到一个错误,Method project-rescan called on nil这会阻止我为了自动完成而扫描所有源文件。

我在这里做错了什么?

我一直在尝试关注 Alex Ott 的A Gentle Introduction to CEDET,但它似乎没有提到任何关于这个错误的内容。

我也在使用集市上的 CEDET。

这就是我的M-x cedet-version样子。

CEDET Version:  2.0
                    Requested   File        Loaded
  Package           Version     Version     Version
  ----------------------------------------------------------
  cedet:            2.0         ok          ok
  eieio:            1.4         ok          ok
  semantic:         2.2         ok          ok
  srecode:          1.2         ok          ok
  ede:              1.2         ok          ok
  cogre:            1.2         ok          Not Loaded
  cedet-contrib:    1.2         nil         Not Loaded
4

1 回答 1

1

绑定的键C-c . g绑定ede-rescan-toplevel是用于扫描项目定义数据,而不是用于解析源文件。由于ede-cpp-root-project项目中没有定义数据,因此它从未实现过该功能。

如果您访问源文件,该源文件将根据需要进行解析。它还会根据需要找到您的包含和解析。此外,如果您稍等片刻,它将在空闲时间重新解析您正在编辑的文件附近的所有文件,以便在您需要时,数据应该已经存在。

于 2014-07-15T02:49:30.193 回答