如何将多个终止线折叠为Emacs中的一个撤消历史记录?

时间:2014-06-09 15:03:27

标签: emacs elisp

我只是想知道是否有那些将同一编辑命令的多次调用合并为1个撤消历史记录的elisp包/片段。例如,如果我按住Ck杀死10行,有没有办法告诉Emacs将它们全部折叠为1撤消历史记录,如果我撤消,而不是必须撤消10次,我可以撤消一次?

(没有回答告诉我使用C-u 10 C-k或类似的东西将被接受)

提前致谢!

1 个答案:

答案 0 :(得分:1)

当您重复执行 C-k 时,您必须advice kill-append

(defadvice kill-append (after merge-undo activate)
  (let ((prev buffer-undo-list)
        (next (cdr buffer-undo-list)))
    ;; find the next undo boundary
    (while (car next)
      (pop next)
      (pop prev))
    ;; remove this undo boundary
    (setcdr prev (cdr next))))

要禁用此功能,请执行 M-x ad-unvvise RET kill-append RET