如何在Emacs执行上更改线操作之前保存?(How to perform operations on

2019-08-05 09:20发布

我想补充一个之前保存钩在那里我可以只是改变了自上次保存行做一些操作。 对于例如,删除尾随的空白,检查压痕等。我不想对整个文件做到这一点,我知道有对于这些(只是为了消除对所有更改的行尾随空白个人的选择,等等),但我想的东西通用的,因此,我可以添加更多的东西给它。 我想有什么东西在那里我可以得到改变的行号的列表,或获取先改线(),获得-下改变线()类型的函数。

Answer 1:

利用强光的变化模式机械

你可以使用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-管家使用这个机制在EOL上保存对修改过的线修剪空格。



文章来源: How to perform operations on changed lines in Emacs before-save?
标签: emacs elisp