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

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

[elpa] externals/undo-tree fba51e6 146/195: Add undo-tree-visualizer[-mo


From: Stefan Monnier
Subject: [elpa] externals/undo-tree fba51e6 146/195: Add undo-tree-visualizer[-mouse]-select functions to select node at pos or click.
Date: Sat, 28 Nov 2020 13:41:40 -0500 (EST)

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

    Add undo-tree-visualizer[-mouse]-select functions to select node at pos or 
click.
---
 undo-tree.el | 31 ++++++++++++++++++++++++++++++-
 1 file changed, 30 insertions(+), 1 deletion(-)

diff --git a/undo-tree.el b/undo-tree.el
index 114cd75..f86771d 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -1186,6 +1186,10 @@ in visualizer."
       (lambda () (interactive) (undo-tree-visualizer-select-left 10)))
     (define-key map ">"
       (lambda () (interactive) (undo-tree-visualizer-select-right 10)))
+    ;; <enter> sets buffer state to node at point
+    (define-key map "\r" 'undo-tree-visualizer-set)
+    ;; mouse selects node at click
+    (define-key map [mouse-1] 'undo-tree-visualizer-mouse-select)
     ;; toggle diff
     (define-key map "d" 'undo-tree-visualizer-selection-toggle-diff)
     ;; set keymap
@@ -4135,7 +4139,7 @@ specifies `saved', and a negative prefix argument 
specifies
          (throw 'bottom t))
        (setq node
              (nth (undo-tree-node-branch node) (undo-tree-node-next node)))))
-    ;; when using lazy drawing, extend tree upwards as required
+    ;; when using lazy drawing, extend tree downwards as required
     (when undo-tree-visualizer-lazy-drawing
       (undo-tree-expand-down undo-tree-visualizer-selected-node node))
     ;; update diff display, if any
@@ -4189,6 +4193,31 @@ specifies `saved', and a negative prefix argument 
specifies
     (when node (setq undo-tree-visualizer-selected-node node))))
 
 
+(defun undo-tree-visualizer-select (pos)
+  (let ((node (get-text-property pos 'undo-tree-node)))
+    (when node
+      ;; select node at POS
+      (goto-char (undo-tree-node-marker node))
+      ;; when using lazy drawing, extend tree up and down as required
+      (when undo-tree-visualizer-lazy-drawing
+       (undo-tree-expand-up undo-tree-visualizer-selected-node node)
+       (undo-tree-expand-down undo-tree-visualizer-selected-node node))
+      ;; update diff display, if any
+      (when (and undo-tree-visualizer-diff
+                (not (eq node undo-tree-visualizer-selected-node)))
+       (undo-tree-visualizer-update-diff node))
+      ;; update selected node
+      (setq undo-tree-visualizer-selected-node node)
+      )))
+
+
+(defun undo-tree-visualizer-mouse-select (pos)
+  "Select undo tree node at mouse event POS."
+  (interactive "@e")
+  (undo-tree-visualizer-select (event-start (nth 1 pos))))
+
+
+
 
 ;;; =====================================================================
 ;;;                      Visualizer diff display



reply via email to

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