我想添加一个before-save-hook,我可以对上次保存后更改的行进行一些操作。例如,删除尾随空格,检查缩进等。我不想为整个文件执行此操作,并且我知道每个文件都有单独的选项(只是删除所有更改行的尾随空格,等..),但我想要一些通用的东西,以便我可以添加更多的东西。我想有些东西可以让我更改行号列表,或者get-first-changed-line(),get-next-changed-line()类型的函数。
答案 0 :(得分:3)
您可以使用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上的空格以保存以进行修改 线。