2017-01-09 33 views
2

最近,emacs開始在一次撤消時撤銷多個按鍵。我不喜歡那樣。我不想那樣。我似乎從過去記得它,然後它停下來,或者我以某種方式阻止了它。我怎麼能阻止呢?如果我刪除一個字符太多,我想能夠撤消那個字符。如果我輸入一個字符太多,我想能夠撤消。目前它解除了一些隨機數的變化。我不想那樣。emacs中的一次按鍵undo

+1

Emacs使用定時器來存儲最近的變化。如果這真的是你想要做的,你可以把它放在每個關鍵筆劃的'post-command-hook'上。查看'undo-auto-boundary-timer'和'undo-auto-boundary-ensure-timer'。或者,你可以改變保存定時器的時間間隔 - 它看起來像設置爲10秒 - 我認爲這是相關的代碼行:'(run-at-time 10 nil#'undo-auto - boundary-定時器)'。 – lawlist

+0

@lawlist:請將其作爲答案提交。請記住:評論可隨時刪除,評論不適用於全球搜索(AFAIK)。 – Drew

回答

2

確實有些事情發生了變化:過去,連續單字符插入的撤消記錄(與self-insert-command)合併(以20個爲一組),但在Emacs-25中,這被擴展爲單字符後向刪除delete-backward-char

這些組的大小(20)在C中被硬編碼,現在在Elisp中硬編碼(在undo-auto-amalgamate中)。所以,儘管它仍然是硬編碼的,但在不編譯自己的Emacs的情況下重寫它更容易。

看代碼我懷疑你也許能禁用此合併業務:

(advice-add 'undo-auto--last-boundary-amalgamating-number 
      :override #'ignore)