2017-01-09 4 views
2

Kürzlich Emacs begann mehrere Tastenanschläge auf einem rückgängig zu machen. Das mag ich nicht. Ich will das nicht. Ich scheine es aus der Vergangenheit zu erinnern und dann hörte es auf oder irgendwie hörte ich auf. Wie kann ich das stoppen? Wenn ich zu viele Zeichen lösche, möchte ich das rückgängig machen können. Wenn ich zu viele Zeichen eintippe, möchte ich das rückgängig machen können. Derzeit werden einige zufällige Änderungen rückgängig gemacht. Ich will das nicht.Ein Tastendruck in Emacs rückgängig

+1

Emacs verwendet einen Timer die aktuellen Änderungen zu speichern. Sie setzen dies auf den 'post-command-hook' für jeden Tastenanschlag, wenn das wirklich das ist, was Sie tun möchten. Siehe "Undo-Auto-Boundary-Timer" und "Undo-Auto-Boundary-Garantie-Timer". Oder Sie können das Speicherintervall ändern - es sieht so aus, als wäre es auf 10 Sekunden eingestellt - ich denke, das ist die relevante Codezeile: '(run-at-time 10 nil # 'undo-auto - boundary- timer) '. – lawlist

+0

@lawlist: Bitte reichen Sie das als Antwort ein. Denken Sie daran: Kommentare können jederzeit gelöscht werden und Kommentare sind nicht für die globale Suche verfügbar (AFAIK). – Drew

Antwort

2

der Tat hat sich etwas verändert: in der Vergangenheit rückgängig machen Datensätze für aufeinanderfolgende Einzelzeichen Einfügungen (mit self-insert-command) wurden amalgamiert (in Gruppen von 20), aber in Emacs-25, dies mit delete-backward-char Single-char rückwärts Deletionen erweitert wurde . Die Größe dieser Gruppen (20) wurde in C fest codiert und ist nun in Elisp (in undo-auto-amalgamate) fest codiert. Während es immer noch fest codiert ist, ist es einfacher, es zu überschreiben, ohne eigene Emacs zu kompilieren.

auf den Code der Suche Ich vermute, dass Sie diese Verschmelzung Geschäft zu deaktivieren könnte der Lage sein, mit:

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