emacs undo中的一次按键
最近,emacs开始在一次撤销中撤销多个击键。我不喜欢那样。我不想那样。我似乎从过去就记得它,然后它就停止了,或者不知何故我停止了它。我怎样才能阻止它?如果删除的字符太多,我希望能够撤消该字符。如果我键入的字符太多,我希望能够撤消该操作。目前,它撤消了一些随机数目的更改。我不想这样。确实有些变化:在过去,连续单字符插入的撤销记录(使用emacs undo中的一次按键,emacs,undo,Emacs,Undo,最近,emacs开始在一次撤销中撤销多个击键。我不喜欢那样。我不想那样。我似乎从过去就记得它,然后它就停止了,或者不知何故我停止了它。我怎样才能阻止它?如果删除的字符太多,我希望能够撤消该字符。如果我键入的字符太多,我希望能够撤消该操作。目前,它撤消了一些随机数目的更改。我不想这样。确实有些变化:在过去,连续单字符插入的撤销记录(使用self-insert命令)被合并(20人一组),但在Emacs-25中,这被扩展到使用delete-backward char的单字符向后删除 这些组的大小(20
self-insert命令
)被合并(20人一组),但在Emacs-25中,这被扩展到使用delete-backward char
的单字符向后删除
这些组的大小(20
)用C硬编码,现在用Elisp硬编码(在undo auto mergage
)。因此,尽管它仍然是硬编码的,但是不需要编译自己的Emacs就可以更容易地覆盖它
查看代码,我怀疑您可以通过以下方式禁用此合并业务:
(advice-add 'undo-auto--last-boundary-amalgamating-number
:override #'ignore)
Emacs使用计时器存储最近的更改。如果你真的想做的话,你可以在每一次击键时都把这个放到
post-command钩子上。请参见undo auto--boundary timer
和undo auto--boundary sure timer
。或者,您可以更改保存计时器的时间间隔--看起来它设置为10秒--我认为这是相关的代码行:(在时间10 nil时运行#'undo-auto--boundary timer)
@lawlist:请将其作为答案提交。请记住:评论可以随时删除,并且评论不可用于全局搜索(AFAIK)。