我经常使用wgrep
进行重构,通常它表现得非常好。但是,我希望可以解决一些小麻烦:
执行rgrep
搜索后,更改为wgrep
并在rgrep
缓冲区中执行更改,wgrep
将打开所有要更改的文件并执行修改。但是,这样做时,文件在emacs中正常打开,因此它们将经历正常的模式加载,如果此操作涉及被解析的大型源文件,则可能需要相当长的时间。
是否可以修改 wgrep ,以便以最基本的模式打开文件(我猜基本模式
正常模式)而不是?
执行更改后,wgrep
将不会关闭任何新打开的缓冲区。
是否可以更改 wgrep ,以便它会自动关闭在执行阶段打开的所有缓冲区(即在 wgrep 过程启动之前未打开的缓冲区)。
最后, meta 问题:这是一个问题是要发布到wgrep developer的问题跟踪器还是一个正确的StackOverflow问题?
答案 0 :(得分:3)
从我在wgrep.el源代码中看到的,您需要修改(或积极地defadvice
)wgrep.el的一些函数。
特别是,在wgrep-get-file-buffer
中,find-file-noselect
的RAWFILE参数应为t,在您的情况下,缓冲区应添加到要杀死的缓冲区列表中。在wgrep-finish-edit
中,可以使用该新列表中的dolist
来终止wgrep打开的缓冲区。
因此,对作者的功能请求可能是有序的: - )
与此同时,您需要的更改很容易实现(只需覆盖wgrep-get-file-buffer
之后的短wgrep-finish-edit
和“defadvice”,但是您很容易在包上升级。
[当然可以向作者发送补丁/拉取请求,但在这种情况下可能会添加一个新的配置变量(wgrep-auto-kill-buffer
或类似的东西)]