有哪些有用的emacs重构函数?

有哪些有用的emacs重构函数?,emacs,refactoring,elisp,Emacs,Refactoring,Elisp,目前,我一直坚持使用匹配缓冲区中出现的和rgrep,虽然功能强大,但我想这仍然是非常基本的 尽管我意识到除了匹配regexp和重命名之外,还需要与CEDET的semantic bovinator集成,但我觉得这里还有改进的余地 内置函数、软件包或自定义代码完成工作时,您觉得什么有帮助 干杯这取决于你使用的语言;如果您的语言受支持,则有一系列who命令:slime who calls、who references、who bind、calls who等。它们提供真实的、基于语义的信息,因此比reg

目前,我一直坚持使用匹配缓冲区中出现的
rgrep
,虽然功能强大,但我想这仍然是非常基本的

尽管我意识到除了匹配regexp和重命名之外,还需要与CEDET的semantic bovinator集成,但我觉得这里还有改进的余地

内置函数、软件包或自定义代码完成工作时,您觉得什么有帮助


干杯

这取决于你使用的语言;如果您的语言受支持,则有一系列who命令:slime who calls、who references、who bind、calls who等。它们提供真实的、基于语义的信息,因此比regexp匹配更可靠。

在CEDET中,有一个符号引用工具。默认情况下,它还在项目中使用find/grep查找符号的出现点。最好使用GNUGlobal、IDUtils或CScope在项目中创建数据库。然后,您可以使用语义symref symbol,该symbol将使用gnu global或任何东西来查找所有引用

一旦进入symref列表缓冲区,您就可以查看点击。然后,您可以选择各种点击并对所有点击执行诸如符号重命名或更强大的“执行宏”等操作


虽然可以生成更多的有针对性的命令,但宏功能允许非常了解Emacs键盘宏的专家用户几乎可以执行任何操作。

如果您正在编辑lisp,我发现使用该软件包很有用(通常)。按照链接获取文档,视频是一个很好的介绍。

在我看来,这是一个重复。然而,我不确定你会在那里找到满意的答案。我真的没有(我的也被接受了)。嗨,Eric,那么基本上CEDET可以提供一个通用的架构来引用符号,它可以根据手边的语言从更专业的包中填充?如果是这样,这听起来很有趣!在你的网站上读到,我现在有了答案。然而,我仍然想知道如何将其扩展到使用其他工具,比如在另一个答案中提到的slime。。。这里的起点是什么?是的。CEDET试图在特定语言的解决方案和更通用的接口之间提供通用接口。因此,任何特定语言的任何特定代码索引器都可以在语义上改装到“symref”api中。之后,任何使用symref的工具,比如我上面提到的symref列表模式,都可以使用它。其他人也可以实现一些新工具,使用symref API来做其他事情,因为他们知道它可以与各种工具一起工作。如果你看一下semantic-symref-global.el,如果你想支持slime,这是一个非常基本的例子。似乎CEDET是一个不错的选择,它将允许在定义重构时使用语言不可知的语义,比如“将方法移动到超类”(当然不是最好的例子…)。我已经有一段时间不停地想做这件事了,但听起来是时候系紧安全带了!谢谢Eric的回答和出色的工作。