一些用于重构的有用emacs函数是什么?

4

目前我坚持使用multi-occur-in-matching-buffersrgrep,虽然强大,但仍然相当基本。

尽管我意识到除了匹配正则表达式和重命名之外的任何复杂操作都需要与CEDET's semantic bovinator集成,但我觉得这里仍有改进的空间。

内置函数、软件包或自定义代码——你认为哪些对完成工作有帮助?

干杯


1
在我看来,这似乎是一个重复的问题,与https://dev59.com/NXRB5IYBdhLWcg3wSVYI#673606相同。然而,我不确定你是否能在那里找到令人满意的答案。我自己的回答并没有得到认可。 - T.E.D.
3个回答

3
在CEDET中,有一个符号参考工具。默认情况下,它还会在项目中使用find/grep来查找符号的出现次数。最好使用GNU Global、IDUtils或CScope来创建项目中的数据库。然后可以使用semantic-symref-symbol,它将使用gnu global或其他工具来查找所有引用。
一旦进入symref列表缓冲区,您可以查看命中结果。然后,您可以选择各种命中结果,并执行各种操作,例如符号重命名,或更强大的,在所有命中结果上执行宏。
虽然可以制作更专注的命令,但宏功能允许熟练掌握Emacs键盘宏的专家用户几乎可以发生任何事情。

嗨Eric,基本上CEDET可以提供一个通用的架构来引用符号,这些符号可以根据手头的语言从更专业的包中填充。如果是这样的话,听起来非常有趣! - julien
在你们的网站上看到了相关信息,现在我有点明白了。但是,我仍然想知道如何扩展它以使用其他工具,比如在另一个答案中提到的slime...这里的起点是什么? - julien
是的。CEDET试图在语言特定解决方案和更通用接口之间提供通用接口。因此,任何特定语言的特定代码索引器都可以改装到Semantic中的“symref”API中。之后,使用symref的任何工具,例如我上面提到的symref列表模式,都可以使用它。其他人也可以实现一些使用symref API执行其他操作的新工具,知道它将与各种工具一起使用。如果您查看semantic-symref-global.el,如果要支持slime,则是一个相当基本的示例。 - Eric
看起来CEDET是前进的方式,因为它允许在定义重构时使用语言无关的语义,例如“将方法移动到超类”(可能不是最好的例子...)。我已经拖延了一段时间才开始学习它,但听起来现在是时候开始行动了!感谢Eric提供的答案和出色的工作。 - julien

1

这取决于您使用的编程语言;如果您的语言受到slime的支持,那么有一系列命令:slime-who-calls、who-references、who-binds、calls-who等。它们提供真实的基于语义的信息,因此比正则表达式匹配更可靠。


0

如果你正在编辑Lisp,我发现使用paredit.el包通常很有用。请点击链接查看文档,视频是一个很好的入门介绍。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接