标签: cedet

Emacs的标签:etags,ebrowse,cscope,GNU Global和旺盛的ctags之间的关系

我从事C++项目,我在StackOverflow中浏览了Alex Ott的CEDET指南和其他关于标签的线程,但我仍然对Emacs如何与这些不同的标签系统进行交互以促进自动完成,查找定义,源代码导航感到困惑.代码库或doc-strings的预览.

  1. 有什么区别(在功能方面如)之间 etags,ebrowse,exuberant ctags,cscope,GNU GlobalGTags?在Emacs中使用它们需要做什么?

  2. 如果我想使用标签导航/自动完成符号,我是否需要语义/参议员(CEDET)?

  3. 语义在这些不同的标记实用程序之上带来了什么?它如何与这些工具接口?

emacs cscope cedet gnu-global

99
推荐指数
4
解决办法
2万
查看次数

CEDET和ECB在Emacs中的地位24.2

我对在Emacs 24.2.1中运行CEDET和ECB需要做些什么感到困惑.

Emacswiki 有以下文字:

如何启用与Emacs合并的CEDET工具

在Emacs 23.2中,CEDET被合并到主要的Emacs发行版中.CEDET教程中解释的配置代码不再起作用.例如,您不能使用(semantic-load-enable-gaudy-code-helpers)来启用有用的功能.

TODO:请说明加载CEDET提供的最有用的IDE工具所需的代码

我有一个基本配置来处理我的.emacs中的以下内容:

(global-ede-mode 1)
(require 'semantic/sb)
(semantic-mode 1)
Run Code Online (Sandbox Code Playgroud)
  • Q1: CEDET和ECB现在是否与Emacs捆绑在一起?如果是这样,为什么有一个单独的Sourceforge项目呢?
  • Q2:如何在Emacs 24.2中启用CEDET和ECB?我是否仍需要从各自的网站下载源代码并单独安装?

emacs cedet emacs-ecb

22
推荐指数
2
解决办法
1万
查看次数

CEDET可扩展性提示

我使用CEDET(最新的CVS)和几个中等规模的项目(每个几百kLOC,主要是C,但有些C++),有时会遇到长时间停顿,系统几秒钟内完全没有响应.更少见的是,它完全旋转失控,我必须进行混搭C-g并尝试移动光标或切换到不同的缓冲区以获得控制权.

我使用GNU Global为我使用的项目创建标签,但这有时仍然很慢,特别是对于semantic-symref-symbol,有些跳转似乎需要解析大量的头文件和源文件.在某些情况下semantic-ia-fast-jump,semantic-ia--fast-jump-helper: Tag SomeFunction has no buffer information即使gtags-find-tag发现它(在同一个项目中),也可能在过时的位置发现错误; 这可能是一个临时的错误,通常semantic-ia-fast-jump是可靠的.

我很感激有关如何做的任何建议

  • 节流CEDET而不会失去所有的语义分析.
  • 找出导致CEDET失控的原因,以便我可以修复我的项目定义或提交错误报告.
  • 确定某些语义分析失败的原因.
  • 获取语​​义来缓存更多信息以使其更具响应性,我有很多内存,我想使用它.
  • 管理不同位置(包括系统目录)中的多个项目的GNU Global(创建并保持最新).
  • 管理我已配置的项目之间的依赖关系ede-cpp-root-project.
  • 管理具有多个构建配置的项目,每个构建配置都有自己的"config.h"和构建目录.

文章http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html中有一些提示,我正在寻找除该文章之外的任何内容.

emacs scalability cedet

18
推荐指数
1
解决办法
3099
查看次数

emacs intellisense

我知道这已经讨论了很多次但是在emacs中有没有很好的c/c ++ intellisense方法?我从来没有能够正确设置cedet.

现在我正在开发一个带有huuge代码库的维护项目,没有适当的智能感知就很难管理.目前我正在使用带有ctags/cscope的vim和用于intellisense的omnicomplete功能,效果很好; 但是我希望能够使用emacs.

emacs intellisense cscope cedet

17
推荐指数
1
解决办法
7759
查看次数

为GNU Emacs配置CEDET 23.2.1

我最近为OS X 10.6构建并安装了Emacs 23.2.1,它显然预先安装了CEDET 1.0pre7,但是我的旧CEDET配置失败了(例如(semantic-load-excessive-code-helpers)甚至(semantic-load-code-helpers)未定义),即使在我的.emacs中添加了以下内容之后:

(require 'cedet)
(semantic-mode 1)
(require 'semantic)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

emacs cedet

12
推荐指数
1
解决办法
5306
查看次数

Emacs,Cedet和语义

我在Alex文章之后为emacs配置了CEDET (很棒!!).现在,问题:

  1. 我已经在我的Gnu Global中生成了GTAGS /usr/include,如何检查语义是否正在使用GTAGS?
  2. 我可以将我的GTAGS保存在另一个目录中并指示语义使用该目录吗?
  3. 在C/C++源代码中,include语句(来自系统头文件)的完成不会列出所有可用的头文件.好吧,这是一个愚蠢的问题..但让我觉得有些事情是行不通的

c c++ emacs cedet emacs-semantic

11
推荐指数
1
解决办法
5472
查看次数

在具有给定工作目录的emacs中打开shell

我想make-shells在emacs中有一个命令,它将打开一些emacs-shell缓冲区,每个缓冲区都有自己的工作目录.我的想法是,对于我正在处理的每个项目,我都有一个从该项目目录开始的shell,因此我可以轻松地在它们之间切换.

目前我有这个代码:

(defun shell-dir (name dir)
  (interactive "sShell name: \nDDirectory: ")
  (shell name)
  (switch-to-buffer name)
  (comint-send-string (current-buffer) (concat "cd " dir "\r"))
  (sleep-for 0 10)
  (dirs))

(defun make-shells ()
  (interactive)
  (shell-dir "project1" "~/proj/project1")
  (shell-dir "project2" "~/proj/project2")
  (shell-dir "project3" "~/proj/project3")
  (delete-window))
Run Code Online (Sandbox Code Playgroud)

但这很丑陋,有一半的时间(dirs)没有找到正确的路径,因此标签完成会中断,直到我手动重新运行它.是否有内置方法来设置emacs shell的当前工作目录?或者像CEDET这样的东西(再加上对shell和emacs模式的依赖程度更低)是一个更好的解决方案吗?

emacs elisp cedet

11
推荐指数
1
解决办法
3198
查看次数

将cedet 1.0更新为1.1

我目前在OS X上使用emacs24.

CEDET Version:  1.0
                        Requested       File            Loaded
  Package               Version         Version         Version
  ----------------------------------------------------------
  cedet:                1.0             nil             ok
  eieio:                1.3             nil             ok
  semantic:             2.0             nil             ok
  srecode:              1.0             nil             Not Loaded
  ede:                  1.0             nil             Not Loaded
  speedbar:             1.0             nil             Not Loaded
Run Code Online (Sandbox Code Playgroud)

emacs24附带cedet,我正在尝试将cedet 1.0升级到1.1.我编译了cedet:

emacs -Q -nw -l cedet-build.el -f cedet-build -f save-buffers-kill-terminal
Run Code Online (Sandbox Code Playgroud)

然后加入(load-file "~/.emacs.d/cedet/common/cedet.el").emacscedet告诉我一切都很好,花花公子

CEDET Version:  1.1
                        Requested       File            Loaded
  Package               Version         Version         Version
  ----------------------------------------------------------
  cedet:                1.1             ok              ok
  eieio:                1.4             ok              ok
  semantic:             2.1             ok              ok …
Run Code Online (Sandbox Code Playgroud)

emacs cedet emacs24

11
推荐指数
1
解决办法
3445
查看次数

semantic-complete-jump-local在Emacs中返回"No Match"

我正在使用CEDET 1.1运行Emacs 23.3.1.该命令semantic-complete-jump-local总是返回"No Match"semantic-complete-jump工作正常.

我调查了semantic-complete.el但是我对elisp的了解并不足以理解发生了什么......

emacs cedet emacs-semantic

10
推荐指数
0
解决办法
252
查看次数

奇怪的语义错误

我在一个新的linux主机上重新安装了emacs 24.2.50,并基于magnars emacs配置启动了一个新的dotEmacs 配置.由于我在之前的工作流程中使用了CEDET取得了一些成功,因此我开始配置它.但是,每当我加载C++源文件时,都会有一些奇怪的行为.

[本部分已解决]
正如预期的那样,语义解析所有包含的文件(并在初始设置期间解析由semantic-add-system-include变量指定的所有文件),但它会打印出如下所示的错误消息:

WARNING: semantic-find-file-noselect called for /usr/include/c++/4.7/vector while in set-auto-mode for /usr/include/c++/4.7/vector. You should call the responsible function into 'mode-local-init-hook'.

在上面的示例中,为STL向量打印错误,但是为我正在访问的文件和任何后续包含的文件所包含的每个文件打印相应的错误消息.因此,完成需要相当长的时间,不幸的是,重复该过程的任何类型我打开一个新的缓冲区.

[此问题也解决了]
此外,当我将点放在非c基本类型(即不是int,double,float等)之上而不是打印类型的定义时,看起来解析并不真正起作用. modeline一条错误消息

Idle Service Error semantic-idle-local-symbol-highlight-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, (((0) \"IndexMap\"))" Idle Service Error semantic-idle-summary-idle-function: "#<buffer DEPFETResolutionAnalysis.cc> - Wrong type argument: stringp, ((\"fXBetween\" 0 nil nil))"

其中DEPFETResolutionAnalysis.cc是我正在编辑的文件和缓冲区,而IndexMapfXBetween是我正在编辑的文件所包含的文件中定义的类型/我正在编辑的文件所包含的某个文件.

我没有测试CEDET /语义的任何进一步的功能,因为问题非常烦人.我的cedet配置可以在这里找到.

编辑:在Alex Ott的帮助下,我解决了第一个问题.这是由于我可怕的cedet初始化.请参阅他的第一个答案,了解配置CEDET的正确方法!
仍然存在问题Idle Service Error(当启用时global-semantic-idle-local-symbol-highlight-mode,永久发生,不仅在检查点上类型的定义时). …

c++ emacs cedet emacs-semantic

10
推荐指数
2
解决办法
1687
查看次数