优化wgrep的可用性

时间:2013-12-18 13:16:35

标签: emacs grep

我经常使用wgrep进行重构,通常它表现得非常好。但是,我希望可以解决一些小麻烦:

  1. 执行rgrep搜索后,更改为wgrep并在rgrep缓冲区中执行更改,wgrep将打开所有要更改的文件并执行修改。但是,这样做时,文件在emacs中正常打开,因此它们将经历正常的模式加载,如果此操作涉及被解析的大型源文件,则可能需要相当长的时间。

      

    是否可以修改 wgrep ,以便以最基本的模式打开文件(我猜基本模式 正常模式 )而不是?

  2. 执行更改后,wgrep将不会关闭任何新打开的缓冲区。

      

    是否可以更改 wgrep ,以便它会自动关闭在执行阶段打开的所有缓冲区(即在 wgrep 过程启动之前未打开的缓冲区)。

  3. 最后, meta 问题:这是一个问题是要发布到wgrep developer的问题跟踪器还是一个正确的StackOverflow问题?

1 个答案:

答案 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或类似的东西)]