emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/undo-tree 8697a0b 077/195: Clear registers referring to


From: Stefan Monnier
Subject: [elpa] externals/undo-tree 8697a0b 077/195: Clear registers referring to nodes being discarded from undo history.
Date: Sat, 28 Nov 2020 13:41:25 -0500 (EST)

branch: externals/undo-tree
commit 8697a0bec4d70ddc2ba6b5008362b04d44d3e41a
Author: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Commit: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>

    Clear registers referring to nodes being discarded from undo history.
---
 undo-tree.el | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/undo-tree.el b/undo-tree.el
index 7b9886f..59254cf 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -1520,6 +1520,10 @@ Comparison is done with `eq'."
          nil)
         ;; discard root
          (t
+         ;; clear any register referring to root
+         (let ((r (undo-tree-node-register node)))
+           (when (and r (eq (get-register r) node))
+             (set-register r nil)))
           ;; make child of root into new root
           (setq node (setf (undo-tree-root buffer-undo-tree)
                            (car (undo-tree-node-next node))))
@@ -1542,6 +1546,10 @@ Comparison is done with `eq'."
       (let* ((parent (undo-tree-node-previous node))
              (current (nth (undo-tree-node-branch parent)
                            (undo-tree-node-next parent))))
+       ;; clear any register referring to the discarded node
+       (let ((r (undo-tree-node-register node)))
+         (when (and r (eq (get-register r) node))
+           (set-register r nil)))
        ;; update undo-tree size
        (decf (undo-tree-size buffer-undo-tree)
              (+ (undo-list-byte-size (undo-tree-node-undo node))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]