emacs语义/参议员:外部lib的自动完成

时间:2012-05-16 13:19:39

标签: emacs cedet

看来这个论坛比邮件列表更活跃:http://sourceforge.net/mailarchive/forum.php?forum_name=cedet-semantic。 我想从一周前那里重新发布我的任务:

首先,对所有为CEDET贡献这个伟大包裹的人们说:D。

没有太多麻烦,我能够完成大部分CEDET期货的工作,但是当涉及到参议员/语义时,事情会变得更加充实:\。

解析本地文件很好。 我不使用EDE不会让事情变得更复杂。 我使用1.0.6 git trunk版本,以便与ECB兼容。

  1. 首先是关于emacs core / cedet git-trunk hussle的隆隆声。如何检查当前安装是否正在运行后者? (我已经做了一些.emacs修改,见下文)。

  2. 我通常无法为外部库提供正确的自动完成功能 - 在本例中是OGRE3D项目,它们都位于/ usr / include / OGRE中。我想我已经添加到'搜索路径'包括正确,语义描述-c-env。看到他们添加得当。

  3. 2.a语义分析器的基本命令是什么? ,那就是我需要强制它解析所需的包含。

    我看到在'空闲时间'中语义解析OGRE文件。仍然自动完成功能不起作用(OGRE:RAY不作为一种类型被重新识别)。 senator-completition-menu-pop给出了一些不匹配的'c ** p'

    2.b我知道有语义的自定义组选项,他们的描述很难对我说。

    来自另一篇文章:

    “是的,有一个设置成本。您可以使用semanticdb.sh来预先解析您的 代码,但如果您从未打开每个文件,您最终可能会使用Emacs 拥有如此庞大的数据结构,它会变得更大,你的机器可以 处理。如果您的项目很小,这应该不是问题。“

    这可能是,如果那样可以解析OGRE。

    这是我的.emacs:

    .emacs at pastebin.com

1 个答案:

答案 0 :(得分:0)

这是我在邮件列表上得到的内容,希望它能帮助某人,感谢Eric Ludlam:D:

======================

1. First is the rumble about the emacs core / cedet git-trunk hussle. How do I check that current installation is running the latter ? ( I have done some .emacs modificaitons see below) . 

启动emacs后,请使用:

M-x cedet-version RET

并从CEDET / bzr中寻找1.1版本。

我只是试过这个并注意到并非所有东西都有正确的版本 数。有趣。我必须调查一下。

无论如何,接下来要尝试的是:

M-x locate-library RET cedet RET

并确保它指向您认为应该的位置。

2. I generally cannot get the proper autocomplete working for external libs - in this case the OGRE3D project, which all are in the /usr/include/OGRE. I suppose I have added to 'search path' include properly, semantic-describe-c-env. sees them added properly. 

如果启用全局语义装饰模式,则可以右键单击 头文件,它会给你一些选项,比如显示在哪里 标题是什么,并显示它是否已被解析。

2.a What are the basic commands to the semantic parser ? , that is I need to force it to parse the desired includes. 

您可以使用include菜单强制解析标头,或访问 说包括。如果找不到,可以将OGRE添加到您的路径中 那里也是。

如果您对标题进行访问,则可以使用参议员菜单强制执行文件 重新分析,或使用:

C-u M-x bovinate RET

去做。

Once I saw semantic parsing the OGRE files in the 'idle time'. Still the autocomplete does not work ( OGRE:RAY is not recongized as a type). senator-completition-menu-pop gives some non-matching 'c**p' 

自动填充功能可能因多种原因而失败。找出原因的最佳方法是:

M-x语义分析 - 调试 - 辅助RET

在您想要完成的地方。它会告诉你关于你的事情 头文件,符号等。它可能是你的预处理器 符号需要一些设置。

对于大型复杂的库标题,有时它只是一个问题 在Semantic中设置正确的预处理器符号,以便 标题的右边位被解析为符号。你必须访问一个 标题,您想要完成的符号,并查看它是否已被解析。   使用:

M-x boviante RET

将转储符号表。

2.b I know there are customize-group options for semantic, tough their description say little to me.

    From the other post: 

"Yes, there is a setup cost. You can use semanticdb.sh to pre-parse your code, but if you never open *every* file, you might end up with Emacs having such a huge data structure it gets larger that your machine can handle. If your project is small, this shouldn't be a problem." Well this might be, if that would parse OGRE. 

我怀疑解析include是问题所在。我认为有 我们将不得不处理的食人魔标题中的新内容。

埃里克

===================================