我想添加一个 before-save-hook,我可以在其中对自上次保存以来更改的行进行一些操作。例如,删除尾随空格、检查缩进等。我不想对整个文件执行此操作,而且我知道每个文件都有单独的选项(只是为了删除所有更改行的尾随空格,等等..),但我想要一些通用的东西,以便我可以添加更多的东西。我想有一些东西可以让我改变行号列表,或者 get-first-changed-line(), get-next-changed-line() 类型的函数。
问问题
308 次
1 回答
3
使用highlight-changes-mode机制
您可以使用highlight-changes-mode
,然后hilit-chg
使用next-single-property-change
.
例如,
(with-current-buffer "my-buffer-name"
(let ((beg (point-min)) end)
(while (setq end (next-single-property-change beg 'hilit-chg))
(setq beg (next-single-property-change end 'hilit-chg))
(message "[[%s]]" (buffer-substring-no-properties end beg)))))
将产生以下内容:
[[
these are my changes
]]
[[ and here]]
[[
here are more changes
]]
在*Messages*
缓冲区(和回声区域)。
完整的实现示例
ws-butler使用此机制在 EOL 处修剪空格以保存修改的行。
于 2013-01-03T18:09:43.630 回答