emacs是否具有一个函数或库,即使它在另一个文件中定义,也可以允许用户转到该函数声明?
如果是这样,支持哪些语言?
这个问题的灵感来自下面的文章,其中讨论了emacs永远无法与IDE竞争的一些原因。
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
emacs是否具有一个函数或库,即使它在另一个文件中定义,也可以允许用户转到该函数声明?
如果是这样,支持哪些语言?
这个问题的灵感来自下面的文章,其中讨论了emacs永远无法与IDE竞争的一些原因。
http://henrikwarne.com/2012/06/17/programmer-productivity-emacs-versus-intellij-idea/
Answers:
您可以立即跳转到整个项目的任何定义/引用,这些定义/引用与Linux内核源代码树(大于36k)一样大。有关详细信息,请参见我的C / C ++指南。对于C / C ++,我建议使用支持C,C ++,Yacc,Java,PHP4和汇编语言的GNU Global。
关键是,如果要具有某种语言的IDE功能,则必须安装该语言的插件。以下是一些我所知道的动态语言包:
js2-mode
,请参阅说明;但实质上js2-mode
是一个完整的Javascript解析器,该解析器生成AST以执行适当的IDE功能。如果您安装的skewer-mode
比js2-mode
默认情况下要多,则skewer-mode
取决于它。
- 跳转到方法定义
- 跳到super或在point处调用的构造函数
- 跳转到模块或类(如果已定义至少一个方法)
- 显示方法文档
- 显示有关使用ElDoc在点调用的方法的信息
- 方法和常量名称完成
您还可以ctags
用来支持多种语言,例如Shell脚本或Tcl。
emacs中对此的主要解决方案是使用TAGS文件,这些文件是由诸如etags或gtags之类的程序创建的。我自己使用(并推荐)旺盛的ctags和etags-select.el来帮助您在搜索符号位于多个目标位置时缩小目标范围。支持的语言很多,请参见各个工具的手册。甚至还支持添加您自己的语言,从而可以提供一个正则表达式来指示ctags如何隔离您感兴趣的标签。
ctags -e -R *
从根目录将为您进行设置。
irony-clang
为此签出。您是否阅读了该文章的评论?