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

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

[elpa] externals/undo-tree ff2fd6e 011/195: Implemented undo-tree-mode m


From: Stefan Monnier
Subject: [elpa] externals/undo-tree ff2fd6e 011/195: Implemented undo-tree-mode minor mode.
Date: Sat, 28 Nov 2020 13:41:10 -0500 (EST)

branch: externals/undo-tree
commit ff2fd6ee93ed746f29254e40eb475374bbbae7f6
Author: tsc25 <tsc25@cantab.net>
Commit: tsc25 <tsc25@cantab.net>

    Implemented undo-tree-mode minor mode.
---
 undo-tree.el | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)

diff --git a/undo-tree.el b/undo-tree.el
index bdbe60d..ef1235e 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -23,6 +23,11 @@ Must be an odd integer."
          :match (lambda (w n) (and (integerp n) (= (mod n 2) 1)))))
 
 
+(defvar undo-tree-map nil
+  "Keymap used in undo-tree-mode.")
+
+
+
 (defface undo-tree-visualizer-default-face
   '((((class color)) :foreground "gray"))
   "*Face used to draw undo-tree in visualizer.")
@@ -53,6 +58,19 @@ in visualizer.")
 ;;; =================================================================
 ;;;                     Setup default keymaps
 
+(unless undo-tree-map
+  (setq undo-tree-map (make-sparse-keymap))
+  ;; remap `undo' to `undo-tree-undo'
+  (define-key undo-tree-map [remap undo] 'undo-tree-undo)
+  ;; redo doesn't exist normally, so define out own keybindings
+  (define-key undo-tree-map (kbd "C-?") 'undo-tree-redo)
+  (define-key undo-tree-map (kbd "C-+") 'undo-tree-redo)
+  ;; just in case something has defined it...
+  (define-key undo-tree-map [remap redo] 'undo-tree-redo)
+  ;; we use "C-x u" for the undo-tree visualizer
+  (define-key undo-tree-map (kbd "C-x u") 'undo-tree-visualize))
+
+
 (unless undo-tree-visualizer-map
   (setq undo-tree-visualizer-map (make-keymap))
   ;; vertical motion keys undo/redo
@@ -327,7 +345,22 @@ part of `buffer-undo-tree'."
 
 
 ;;; =====================================================================
-;;;                        Undo/redo commands
+;;;                        Undo-tree commands
+
+(define-minor-mode undo-tree-mode
+  "Toggle undo-tree mode.
+With no argument, this command toggles the mode.
+A positive prefix argument turns the mode on.
+A negative prefix argument turns it off.
+
+Undo-tree-mode replaces Emacs' standard undo feature with a more
+powerful yet easier to use version, that treats the undo history
+as what it is: a tree."
+  nil             ; init value
+  " undo-tree"    ; lighter
+  undo-tree-map)  ; keymap
+
+
 
 (defun undo-tree-undo (&optional arg)
   "Undo changes. A numeric ARG serves as a repeat count."



reply via email to

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