4

我想添加一个 before-save-hook,我可以在其中对自上次保存以来更改的行进行一些操作。例如,删除尾随空格、检查缩进等。我不想对整个文件执行此操作,而且我知道每个文件都有单独的选项(只是为了删除所有更改行的尾随空格,等等..),但我想要一些通用的东西,以便我可以添加更多的东西。我想有一些东西可以让我改变行号列表,或者 get-first-changed-line(), get-next-changed-line() 类型的函数。

4

1 回答 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 回答