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

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

[elpa] externals/undo-tree ffb346a 157/195: Install undo-tree undo/redo


From: Stefan Monnier
Subject: [elpa] externals/undo-tree ffb346a 157/195: Install undo-tree undo/redo Edit menu bar items.
Date: Sat, 28 Nov 2020 13:41:43 -0500 (EST)

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

    Install undo-tree undo/redo Edit menu bar items.
---
 undo-tree.el | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/undo-tree.el b/undo-tree.el
index 07889e9..166c079 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -1203,6 +1203,42 @@ in visualizer."
     (setq undo-tree-visualizer-selection-mode-map map)))
 
 
+(defvar undo-tree-old-undo-menu-item nil)
+
+(defun undo-tree-update-menu-bar ()
+  "Update `undo-tree-mode' Edit menu items."
+  (if undo-tree-mode
+      (progn
+       ;; save old undo menu item, and install undo/redo menu items
+       (setq undo-tree-old-undo-menu-item
+             (cdr (assq 'undo (lookup-key global-map [menu-bar edit]))))
+       (define-key (lookup-key global-map [menu-bar edit])
+         [undo] '(menu-item "Undo" undo-tree-undo
+                            :enable (and undo-tree-mode
+                                         (not buffer-read-only)
+                                         (not (eq t buffer-undo-list))
+                                         (undo-tree-node-previous
+                                          (undo-tree-current 
buffer-undo-tree)))
+                            :help "Undo last operation"))
+       (define-key-after (lookup-key global-map [menu-bar edit])
+         [redo] '(menu-item "Redo" undo-tree-redo
+                            :enable (and undo-tree-mode
+                                         (not buffer-read-only)
+                                         (not (eq t buffer-undo-list))
+                                         (undo-tree-node-next
+                                          (undo-tree-current 
buffer-undo-tree)))
+                            :help "Redo last operation")
+         'undo))
+    ;; uninstall undo/redo menu items
+    (define-key (lookup-key global-map [menu-bar edit])
+      [undo] undo-tree-old-undo-menu-item)
+    (define-key (lookup-key global-map [menu-bar edit])
+      [redo] nil)))
+
+(add-hook 'menu-bar-update-hook 'undo-tree-update-menu-bar)
+
+
+
 
 
 ;;; =====================================================================



reply via email to

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