我有一个工作流程,我在shell中使用grep和其他工具来搜索不同的项目,即使我的主编辑器是emacs。我经常处理bug修复和源代码的小开发,这对我来说通常是未知的,因此搜索代码很重要。我主要工作的语言是php,ruby,java,perl,有时候是python。
在emacs中是否有一些常见的IDE扩展可以让我从多个跨越所有这些语言的文件中获得“goto definition”等功能?是否有其他一些可能有用的模块,无论是代码浏览还是索引搜索?
答案 0 :(得分:6)
答案 1 :(得分:2)
代码浏览可能意味着一堆不同的东西。你提到使用grep的模式意味着你正在寻找函数定义,或者寻找特定函数的使用。
虽然CEDET支持您列出的所有语言(有些使用ctags解析器),但在新的源代码区域中重新开始是CEDEt不太擅长的事情,直到它为您列出的那些任务索引整个项目。但是,您可以使用GNU Global或idutils。我认为idutils支持更多语言。
在CEDET中,`semantic-symref'和相关命令将使用grep,global或idutils执行类似grep的操作(取决于您创建的标记表的类型。)与grep样式输出不同,symref输出buffer显示哪些函数正在使用相关命令。然后,您可以对您关心的符号的点击执行宏来执行大型重构操作。
CEDET也支持像跳转到功能的标签,但是如果你已经使用了像ctags这样的东西也可以正常工作。在某些情况下,CEDET在处理多态时更好。
使用CEDET,您还可以通过imenu,speedbar和ECB(emacs代码浏览器)进行结构化浏览。 ECB特别好,方法缓冲区允许您快速导航到类的不同部分。对于那些片段遍布的类,特别是在C ++中,特别方便。 CEDET甚至可以创建与您的代码相关联的类继承结构的可爱UML图。
CEDET确实需要学习,并且您列出的某些语言并不完全支持所有工具,但上面讨论的基本浏览应该没问题。
答案 2 :(得分:1)
etags-select
(您可以从ELPA获得)根据我的经验,如果您将 M - 。绑定到etags-select-find-tag
,则可以更好地浏览您的TAGS文件。
答案 3 :(得分:1)
与etags / ctags一样,尝试使用M-x grep而不是shell运行grep,以获取Emacs中的可点击链接,而不必手动查找与grep输出匹配的文件和行。
答案 4 :(得分:1)
对于代码浏览,您还可以使用M-x imenu-tree
答案 5 :(得分:0)
标签浏览,动态完成,过滤(子串,正则表达式,模糊),循环:
http://www.emacswiki.org/emacs/Icicles_-_Emacs_Tags_Enhancements