emacs无法跳转父类中的函数,如何解决

Vim、Emacs配置和使用
回复
firestone
帖子: 31
注册时间: 2008-07-21 10:02

emacs无法跳转父类中的函数,如何解决

#1

帖子 firestone » 2011-04-07 16:38

本人主要用cedet进行c++编程,发现如果调用一个类A的函数,比如f1(),但是这个函数是在这个类的父类B中,我发现emacs对于这种情况没有办法semantic,有没有人知道这种情况怎么办?

具体就是
class B{
puublic:
void f1();
};

class A:public B{
public:
void f2();
.......
};

当生成一个A的类 a 时,比如我想调用a.f2()时,当我敲入.时emacs能够给出f2,但是无法给出f1,不知道大家怎么解决的?

在这里感谢2楼提出的方法,本人也大致看了一下auto-complete的manual,发现这个插件只是针对当前buffer和已有的dictionary来进行解析,也就是说上面的A类和B类如果是本人自己编写的,auto-complete能给出对应的函数列表,因为auto-complete能将写入的函数加入到对应的dictionary当中。那么现在的问题是,如果我现在新导入一个c++类库,比如本人目前正在用Qt编程,那么它的基本类库肯定不会自动加入到auto-complete的dictionary中,所以auto-complete还是无法给出父类的函数。(也许本人理解有误,还请各位大虾指正)。

举个详细的例子,比如QApplication是从QCoreApplication当中继承过来的,其中的postEvent是QCoreApplication的一个函数,如果我用QApplication,emacs就无法找到postEvent,尽管我已经加载了Qt对应的include列表。在这点上eclipse就能够准确无误的给出,本人绝对不是来推荐eclipse的,只是想知道emacs是不是也有相应的插件能够给出准确的函数列表。当然我也不得不承认,如果类是自己编写的,那么auto-complete还是能给出父类的函数。如果哪位大虾知道如何解决,请告诉我,在下感谢万分!
上次由 firestone 在 2011-04-08 8:50,总共编辑 2 次。
头像
tangboyun
帖子: 701
注册时间: 2009-07-25 1:57
联系:

Re: emacs无法跳转父类中的函数,如何解决

#2

帖子 tangboyun » 2011-04-07 17:03

没有问题。下最新的cedet不要用自带的,auto-complete插件,clang 和 auto-complete-clang.el
附件
Screenshot.png
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
firestone
帖子: 31
注册时间: 2008-07-21 10:02

Re: emacs无法跳转父类中的函数,如何解决

#3

帖子 firestone » 2011-04-07 17:10

自己顶一下,希望有达人能帮忙解决!
firestone
帖子: 31
注册时间: 2008-07-21 10:02

Re: emacs无法跳转父类中的函数,如何解决

#4

帖子 firestone » 2011-04-08 15:01

继续呼唤高手
firestone
帖子: 31
注册时间: 2008-07-21 10:02

Re: emacs无法跳转父类中的函数,如何解决

#5

帖子 firestone » 2011-04-12 9:20

没人知道吗?
firestone
帖子: 31
注册时间: 2008-07-21 10:02

Re: emacs无法跳转父类中的函数,如何解决

#6

帖子 firestone » 2011-04-26 14:34

自己顶
deepwhite
帖子: 14
注册时间: 2008-01-15 14:11

Re: emacs无法跳转父类中的函数,如何解决

#7

帖子 deepwhite » 2011-04-29 16:46

我刚刚试了一下,可以的,参考下图(fileselector 的定义在别的文件中)。
a.png
配置文件可参考这里: https://tubo-emacs-config.googlecode.com.
其中,和 cedet 相关的文件集中在其中的 trunk/.emacs/rc/11-rc-prog-mode.el 。

只要能够让 cedet 正确的找到所需分析的文件,就应该能通过 semantic-ia 自动补齐。
头像
tangboyun
帖子: 701
注册时间: 2009-07-25 1:57
联系:

Re: emacs无法跳转父类中的函数,如何解决

#8

帖子 tangboyun » 2011-05-03 15:49

Qt库的设置,我记得就前几天在坛子里发过个链接里有专门谈到的,http://alexott.net/en/writings/emacs-de ... Cedet.html

Qt的补全 自己去检查有没有正确的设置预处理器,semantic-lex-c-preprocessor-symbol-file就是这个变量。
https://github.com/tangboyun
http://tangboyun.is-programmer.com/
提问的智慧————Eric Steven Raymond
回答的智慧————Andrew Clarke
吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。
急急急标题什么的,最讨厌了!
急急复急急,急急何其多,我生待急急,万事急急急。
回复