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

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

[elpa] externals/undo-tree f3e7324 090/195: Use undo-tree-inhibit-kill-v


From: Stefan Monnier
Subject: [elpa] externals/undo-tree f3e7324 090/195: Use undo-tree-inhibit-kill-visualizer to inhibit undo-tree-kill-visualizer.
Date: Sat, 28 Nov 2020 13:41:28 -0500 (EST)

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

    Use undo-tree-inhibit-kill-visualizer to inhibit undo-tree-kill-visualizer.
    
    Previously, we used a non-nil undo-in-progress for this purpose, but that
    meant that the visualizer wasn't killed on an undo or redo in the parent
    buffer.
---
 undo-tree.el | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/undo-tree.el b/undo-tree.el
index 7f01755..ce94d78 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -618,6 +618,9 @@
 ;; * make various interactive commands signal an error if buffer is read-only
 ;; * let-bind `inhibit-read-only' instead of setting and restoring
 ;;   `buffer-read-only'
+;; * use non-nil `undo-tree-inhibit-kill-visualizer' instead of
+;;   `undo-in-progress' to inhibit `undo-tree-kill-visualizer', so that
+;;   undoing and redoing in parent buffer also kill visualizer
 ;;
 ;; Version 0.3.5
 ;; * improved `undo-tree-switch-branch': display current branch number in
@@ -863,6 +866,10 @@ in visualizer."
 
 (defconst undo-tree-visualizer-buffer-name " *undo-tree*")
 
+;; dynamically bound to t when undoing from visualizer, to inhibit
+;; `undo-tree-kill-visualizer' hook function in parent buffer
+(defvar undo-tree-inhibit-kill-visualizer nil)
+
 ;; prevent debugger being called on "No further redo information"
 (add-to-list 'debug-ignored-errors "^No further redo information")
 
@@ -2863,7 +2870,7 @@ signaling an error if file is not found."
 (defun undo-tree-kill-visualizer (&rest dummy)
   ;; Kill visualizer. Added to `before-change-functions' hook of original
   ;; buffer when visualizer is invoked.
-  (unless undo-in-progress
+  (unless undo-tree-inhibit-kill-visualizer
     (unwind-protect
        (with-current-buffer undo-tree-visualizer-buffer-name
          (undo-tree-visualizer-quit)))))
@@ -3203,7 +3210,7 @@ Within the undo-tree visualizer, the following keys are 
available:
   (switch-to-buffer-other-window undo-tree-visualizer-parent-buffer)
   (deactivate-mark)
   (unwind-protect
-      (undo-tree-undo arg)
+      (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-undo arg))
     (switch-to-buffer-other-window undo-tree-visualizer-buffer-name)
     (let ((inhibit-read-only t))
       (undo-tree-draw-node (undo-tree-current buffer-undo-tree) 'current))))
@@ -3218,7 +3225,7 @@ Within the undo-tree visualizer, the following keys are 
available:
   (switch-to-buffer-other-window undo-tree-visualizer-parent-buffer)
   (deactivate-mark)
   (unwind-protect
-      (undo-tree-redo arg)
+      (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-redo arg))
     (switch-to-buffer-other-window undo-tree-visualizer-buffer-name)
     (goto-char (undo-tree-node-marker (undo-tree-current buffer-undo-tree)))
     (let ((inhibit-read-only t))
@@ -3285,7 +3292,7 @@ at POS, or point if POS is nil."
     (when node
       ;; set parent buffer to state corresponding to node at POS
       (set-buffer undo-tree-visualizer-parent-buffer)
-      (undo-tree-set node)
+      (let ((undo-tree-inhibit-kill-visualizer t)) (undo-tree-set node))
       (set-buffer undo-tree-visualizer-buffer-name)
       ;; re-draw undo tree
       (let ((inhibit-read-only t)) (undo-tree-draw-tree buffer-undo-tree)))))



reply via email to

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