标签: cedet

如何制作emacs语义使用GTAGS生成的TAG文件

我的emacs版本是23.2.1虽然我使用以下内容来更改后端以使用GTAGS.(需要'semantic/db-global)(semanticdb-enable-gnu-global-databases'c-mode)(semanticdb-enable-gnu-global-databases'c ++ - mode)我试着生成一个GTAGS文件用作语义的后端.但是,每次打开C文件时,Semantic仍然在不使用GTAGS文件的情况下解析文件.

  1. 是否可以使用GTAGS文件而不是内置的语义解析器?我发现内置的解析器不是很准确.

  2. 是否可以在不指定项目范围的情况下使用GTAGS文件?在我的情况下,我试图将GTAGS文件放在/ usr/include中,这应该是emacs的标准包含路径.但是语义学并没有使用它.

emacs cedet gnu-global emacs-semantic

7
推荐指数
1
解决办法
2372
查看次数

如何在SCons中使用Emacs和CEDET?

如何在不破坏语义和自动完成的情况下集成SCons和emacs + cedet?

c++ emacs scons cedet emacs-semantic

7
推荐指数
1
解决办法
883
查看次数

如何为C++创建EDE项目

我一直在尝试为C++设置一个EDE项目(emacs24 +内置CEDET),我开始变得绝望,因为我似乎无法找到我希望生成makefile的方式.我对Emacs比较陌生.我会试着描述一下我在做什么:

我有一个像这样的玩具项目:

main.cpp
other/
  Utils.cpp 
  Utils.h
  CGrabBuffer.cpp
  CGrabBuffer.h
Run Code Online (Sandbox Code Playgroud)

main.cpp在"other /"目录中包含.h's.以下是使用此简单目录设置设置EDE项目的步骤:

  • 在emacs中打开main.cpp并执行M-x ede-new; 类型:Make; 姓名:main-proj.
  • 打开"其他"目录中的一个文件并执行M-x ede-new; 类型:Make; 姓名:aux-proj.
  • 现在是时候创建目标了(我相信在这种情况下是三个):
    • 在main.cpp缓冲区:M-x ede-new-target; 名称:main; 类型:program.出现提示时,我将main.cpp添加到此目标.
    • 我对其他两个目标(Utils具有Utils.cpp和Utils.h以及具有CGrabBuffer.cpp和CGrabBuffer.h的CGrabBuffer)重复相同的操作.在这里,我发现了第一个问题.这两个目标必须是什么类型的?我只希望他们生成.o文件.
  • 完成后,我输入M-x ede-customize-current-target所有三个目标,然后添加一些包含路径,一些库等.
  • 在此之后,如果我调用M-x ede-compile-project它不会编译,因为:
    • 它首先尝试编译main.cpp; 在尝试构建main.cpp之前,我不知道如何指定(使用EDE)Utils.o和CGrabBuffer.o都需要.
    • 如果我手动更改顺序(编辑Makefile),它无法链接main.cpp,因为它找不到Utils.o和CGrabBuffer.o.

正如你所看到的,我正处于一团糟之中.也许我甚至不理解EDE中"目标"的含义.我还读到了ede-cpp-root-project的存在,它必须在.emacs文件中指定.我没有尝试过,因为我认为它只是帮助语义.它不会生成Makefile,是吗?我是否可以(或者我需要)使用Project.el构建的EDE项目和使用ede-cpp-root-project进行语义相同的事情?还是多余的?

抱歉,如果我误解了很多东西,但我很困惑,对emacs不熟悉会让事情变得更糟.谢谢你的耐心!

编辑:通过一些修补和我收到的回复,我已经能够找出很多东西,所以非常感谢.我还不明白的是使用ede-cpp-root-project,它必须在.emacs文件中指定.它只是用于c ++语义吗?使用Project.el的项目和.emacs中的elisp行是否是多余的?

c++ emacs cedet emacs-semantic

7
推荐指数
1
解决办法
4488
查看次数

Emacs,向量的C++代码完成

我是Emacs的新手,我将以下代码作为示例.我安装了GNU Emacs 23.1.1(i386-mingw-nt6.1.7600),安装了cedet-1.0pre7.tar.gz.,安装ELPA公司.您可以在底部找到我的简单Emacs配置.

问题是,当我在main()中输入q [0]并按下时.(点),我看到向量的37个成员,而不是Person,虽然first_namelast_name是预期的.完成在函数greet()中按预期工作,但它与vector无关.

我的问题是,我如何才能完成向量元素的代码完成?

#include <iostream>
#include <vector>
using namespace std;

class Person
{
  public:
    string first_name;
    string last_name;
};

void greet(Person a_person)
{
  // a_person.first_name is completed as expected!
  cout << a_person.first_name << "|";
  cout << a_person.last_name << endl;
};

int main()
{
  vector<Person> q(2);

  Person guy1;
  guy1.first_name = "foo";
  guy1.last_name = "bar";

  Person guy2; …
Run Code Online (Sandbox Code Playgroud)

emacs intellisense customization stdvector cedet

6
推荐指数
1
解决办法
2471
查看次数

Emacs源代码导航功能

我正在开发一个大型的c ++项目.我在过去的六个月里一直在使用emacs.我尝试配置CEDET以便能够轻松导航但我发现了一些问题.

1.-有时语义不会找到一些符号,有时候他不会...我不清楚哪些文件是语义索引.我曾尝试使用EDE(按照本文中的说明http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),但我也发现了一些问题......

  • 我有同一个项目的多个版本(Releases),每个版本都在自己的文件夹中.我如何告诉emacs我正在使用哪个项目?
  • 我如何告诉ede在哪里查找我的头文件?我可以只指定一个根目录,语义将在所有子目录中搜索头文件吗?

2.-前段时间我正在使用vim + cscope,我记得有一种方法可以在符号堆栈中导航回来(Ctrl-t).在emacs中有这样的东西吗?

PD>一些数据使问题更加清晰.

我有同一个项目的多个版本.每个人都有自己的根目录.每个项目都有多个模块,每个模块都在一个子目录中.每个模块都有头文件.

/home/user/
          |
           \Release-001
          |           |
          |            \makefile
          |            \ Module-001
          |           |           |
          |           |            \makefile
          |           |            \subdir-001
          |           |           |          \header-001.h
          |           |           |          \header-002.h
          |           |            \subdir-002
          |           |           |          \header-003.h
          |            \ Module-002
          |           |           |
          |           |            \makefile
          |           |            \subdir-003
          |           |           |          \header-004.h
          |           |           |          \header-005.h
          |           |            \subdir-004
          |           |           |          \header-006.h
          |
           \Release-002
          |           |
          |            \makefile
          | …
Run Code Online (Sandbox Code Playgroud)

emacs cedet emacs-semantic

6
推荐指数
1
解决办法
2527
查看次数

Emacs 24内置cedet功能突出

我想摆脱上面的下划线功能,例如,如上面的"无效"屏幕截图所示:

http://cedet.sourceforge.net/img-gen/semantic-ia-complete-menu.png

我在文档中找不到任何明显的东西,但是,我甚至不知道首先要搜索什么.("功能标记","下划线",......)

我设置了这样的cedet:

;; cedet
(require 'semantic)
(require 'semantic/sb)
(require 'srecode)
(global-ede-mode 1)
(semantic-mode 1)
(global-semanticdb-minor-mode 1)
(global-semantic-idle-scheduler-mode 1)
(global-semantic-idle-completions-mode 1)
(global-semantic-decoration-mode 1)
(global-semantic-highlight-func-mode 1)
(global-semantic-stickyfunc-mode -1)
(global-semantic-idle-summary-mode 1)
(global-semantic-mru-bookmark-mode 1)
(semanticdb-enable-gnu-global-databases 'c-mode)
(semanticdb-enable-gnu-global-databases 'c++-mode)
(set-default 'semantic-case-fold t)
Run Code Online (Sandbox Code Playgroud)

有人能指出我正确的方向吗?

谢谢,马里奥

emacs cedet

6
推荐指数
1
解决办法
2907
查看次数

自动提取gcc -I路径以在Emacs中索引源代码

看完之后:

我了解到,在创建包含现有make文件和源代码的项目文件夹时,我可以通过以下任一方式对文件进行语义索引:

  1. 定义一个简单的EDE项目:

    (ede-cpp-root-project ... :system-include-path '( "~/exp/include/boost_1_37" )

  2. 或者通过直接指定包含语义的路径

    (semantic-add-system-include "~/exp/include/boost_1_37" 'c++-mode)

但这仍然需要我手动输入路径.有没有办法include现有的make文件中自动提取语义路径?

背景: 某些IDE具有从现有make文件自动发现 gcc -I路径的功能.例如,在Eclipse中,您可以在具有现有make文件和源代码的路径上创建项目,Eclipse将在构建项目时推断其"intellisense"的包含路径(我假设Eclipse将GNU make的输出解析为做这个).我想在Emacs中做同样的事情.

emacs gcc makefile autocomplete cedet

6
推荐指数
1
解决办法
272
查看次数

CEDET中的自动完成?

我正在尝试在Emacs 24.3中设置CEDET 2.2来为我提供自动完成功能,使用"对cedet的温和介绍",但它并不完全想按照我想要的方式工作.

首先,我尝试使用CEDET自己的完成,但是那个没有提供"弹出菜单",只有它能找到的第一个完成,并且没有办法循环.然后我安装了自动完成包,并按照页面上的描述进行设置.这也行不通 - 自动完成崩溃说auto-complete error: (void-variable ac-source-semantic).ac-source-gtags也是如此.

这是不可能的,因为目前有缺陷的CEDET,还是我错误配置了它?

emacs cedet emacs-ecb emacs24

6
推荐指数
1
解决办法
2471
查看次数

在ubuntu的emacs 24中安装ECB

从这个问题中了解到,CEDET安装在emacs 24中而无需额外安装,所以我不需要在这里遵循这些说明,也不需要在此处遵循CEDET部分.

我没有使用emacs入门套件,就像这个答案一样.

所以,当我使用elpa安装ecb时,我收到以下错误:

Compiling file /home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/jn-file-tree.el at Mon Dec 30 16:13:57 2013
Entering directory `/home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/'
jn-file-tree.el:31:1:Error: Cannot open load file: jn-tree-node

Compiling file /home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/jn-tree-node.el at Mon Dec 30 16:13:57 2013
jn-tree-node.el:32:1:Error: Cannot open load file: jn-utils

Compiling file /home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/jn-tree-view.el at Mon Dec 30 16:13:57 2013
jn-tree-view.el:31:1:Error: Cannot open load file: jn-window

Compiling file /home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/jn-utils.el at Mon Dec 30 16:13:57 2013

Compiling file /home/mittenchops/.emacs.d/elpa/ecb-20131116.1319/ecb2/jn-window.el at Mon Dec 30 16:13:57 2013 …
Run Code Online (Sandbox Code Playgroud)

emacs cedet elpa emacs-ecb

6
推荐指数
1
解决办法
2956
查看次数

在emacs 24.3.1中使用CEDET

我了解到CEDET内置于我安装的emacs 24.3.1中.不幸的是,所有在线教程都会指导您安装CEDET并为您提供引用和加载已安装的软件包和文件的配置文件.

如何配置内置CEDET并在不进行任何外部安装的情况下使用它?我不知道如何利用内置版本.

emacs elisp cedet

6
推荐指数
1
解决办法
790
查看次数