[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/undo-tree adca566 094/195: Allow undo-tree-visualizer-d
From: |
Stefan Monnier |
Subject: |
[elpa] externals/undo-tree adca566 094/195: Allow undo-tree-visualizer-diff variable to be customized. |
Date: |
Sat, 28 Nov 2020 13:41:29 -0500 (EST) |
branch: externals/undo-tree
commit adca566ca96747c29f3caadddee298d851fb7578
Author: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Commit: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Allow undo-tree-visualizer-diff variable to be customized.
When enabled globally, visualizer defaults to displaying diff on startup.
(The
diff display can always be toggled, regardless of the global customization
setting.)
---
undo-tree.el | 109 +++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 69 insertions(+), 40 deletions(-)
diff --git a/undo-tree.el b/undo-tree.el
index 67a6eb3..7a32ec1 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -804,15 +804,6 @@ when `undo-tree-mode' is enabled."
:group 'undo-tree
:type 'string)
-(defcustom undo-tree-enable-undo-in-region t
- "When non-nil, enable undo-in-region.
-
-When undo-in-region is enabled, undoing or redoing when the
-region is active (in `transient-mark-mode') or with a prefix
-argument (not in `transient-mark-mode') only undoes changes
-within the current region."
- :group 'undo-tree
- :type 'boolean)
(defcustom undo-tree-auto-save-history nil
"When non-nil, `undo-tree-mode' will save undo history to file
@@ -836,12 +827,36 @@ customize."
'(choice (const :tag "<disabled>" nil))
'boolean))
+
+(defcustom undo-tree-visualizer-diff nil
+ "When non-nil, display diff by default in undo-tree visualizer.
+
+\\<undo-tree-visualizer-map>You can always toggle the diff display \
+using \\[undo-tree-visualizer-toggle-diff], regardless of the
+setting of this variable."
+ :group 'undo-tree
+ :type 'boolean)
+(make-variable-buffer-local 'undo-tree-visualizer-diff)
+
+
(defcustom undo-tree-incompatible-major-modes '(term-mode)
"List of major-modes in which `undo-tree-mode' should not be enabled.
\(See `turn-on-undo-tree-mode'.\)"
:group 'undo-tree
:type '(repeat symbol))
+
+(defcustom undo-tree-enable-undo-in-region t
+ "When non-nil, enable undo-in-region.
+
+When undo-in-region is enabled, undoing or redoing when the
+region is active (in `transient-mark-mode') or with a prefix
+argument (not in `transient-mark-mode') only undoes changes
+within the current region."
+ :group 'undo-tree
+ :type 'boolean)
+
+
(defcustom undo-tree-visualizer-spacing 3
"Horizontal spacing in undo-tree visualization.
Must be a postivie odd integer."
@@ -850,9 +865,6 @@ Must be a postivie odd integer."
:match (lambda (w n) (and (integerp n) (> n 0) (= (mod n 2) 1)))))
(make-variable-buffer-local 'undo-tree-visualizer-spacing)
-(defvar undo-tree-map nil
- "Keymap used in undo-tree-mode.")
-
(defface undo-tree-visualizer-default-face
'((((class color)) :foreground "gray"))
@@ -879,6 +891,10 @@ in visualizer."
in visualizer."
:group 'undo-tree)
+
+(defvar undo-tree-map nil
+ "Keymap used in undo-tree-mode.")
+
(defvar undo-tree-visualizer-map nil
"Keymap used in undo-tree visualizer.")
@@ -894,10 +910,6 @@ in visualizer."
"Non-nil when visualizer is displaying time-stamps.")
(make-variable-buffer-local 'undo-tree-visualizer-timestamps)
-(defvar undo-tree-visualizer-diff nil
- "Non-nil when visualizer is displaying a diff.")
-(make-variable-buffer-local 'undo-tree-visualizer-diff)
-
(defconst undo-tree-visualizer-buffer-name " *undo-tree*")
;; dynamically bound to t when undoing from visualizer, to inhibit
@@ -2901,9 +2913,10 @@ signaling an error if file is not found."
(display-buffer-mark-dedicated 'soft))
(switch-to-buffer-other-window
(get-buffer-create undo-tree-visualizer-buffer-name))
- (undo-tree-visualizer-mode)
(setq undo-tree-visualizer-parent-buffer buff)
(setq buffer-undo-tree undo-tree)
+ (when undo-tree-visualizer-diff (undo-tree-visualizer-show-diff))
+ (undo-tree-visualizer-mode)
(let ((inhibit-read-only t)) (undo-tree-draw-tree undo-tree))))
@@ -3237,7 +3250,8 @@ Within the undo-tree visualizer, the following keys are
available:
(use-local-map undo-tree-visualizer-map)
(setq truncate-lines t)
(setq cursor-type nil)
- (setq buffer-read-only t))
+ (setq buffer-read-only t)
+ (when undo-tree-visualizer-diff (undo-tree-visualizer-update-diff)))
@@ -3318,7 +3332,7 @@ using `undo-tree-redo' or `undo-tree-visualizer-redo'."
(with-current-buffer undo-tree-visualizer-parent-buffer
(remove-hook 'before-change-functions 'undo-tree-kill-visualizer t))
;; kill diff buffer, if any
- (when undo-tree-visualizer-diff (undo-tree-visualizer-toggle-diff))
+ (when undo-tree-visualizer-diff (undo-tree-visualizer-hide-diff))
(let ((parent undo-tree-visualizer-parent-buffer)
window)
;; kill visualizer buffer
@@ -3386,7 +3400,12 @@ at mouse event POS."
(setq major-mode 'undo-tree-visualizer-selection-mode)
(setq mode-name "undo-tree-visualizer-selection-mode")
(use-local-map undo-tree-visualizer-selection-map)
- (setq cursor-type 'box))
+ (setq cursor-type 'box)
+ ;; erase diff (if any), as initially selected node is identical to current
+ (when undo-tree-visualizer-diff
+ (let ((buff (get-buffer "*Diff"))
+ (inhibit-read-only t))
+ (when buff (with-current-buffer buff (erase-buffer))))))
(defun undo-tree-visualizer-select-previous (&optional arg)
@@ -3455,30 +3474,40 @@ at mouse event POS."
;;; =====================================================================
;;; Visualizer diff display
-(defun undo-tree-visualizer-toggle-diff (&optional node)
+(defun undo-tree-visualizer-toggle-diff ()
"Toggle diff display in undo-tree visualizer."
(interactive)
- (cond
- ;; hide diff
- (undo-tree-visualizer-diff
- (setq undo-tree-visualizer-diff nil)
- (let ((win (get-buffer-window "*Diff")))
- (when win (with-selected-window win (kill-buffer-and-window)))))
- (t ;; show diff
- (setq undo-tree-visualizer-diff t)
- (let ((buff (with-current-buffer undo-tree-visualizer-parent-buffer
- (undo-tree-diff node)))
- (win (split-window)))
- (set-window-buffer win buff)
- (shrink-window-if-larger-than-buffer win)))))
-
-
-(defun undo-tree-visualizer-selection-toggle-diff (&optional pos)
+ (if undo-tree-visualizer-diff
+ (undo-tree-visualizer-hide-diff)
+ (undo-tree-visualizer-show-diff)))
+
+
+(defun undo-tree-visualizer-selection-toggle-diff ()
"Toggle diff display in undo-tree visualizer selection mode."
(interactive)
- (unless pos (setq pos (point)))
- (let ((node (get-text-property pos 'undo-tree-node)))
- (when node (undo-tree-visualizer-toggle-diff node))))
+ (if undo-tree-visualizer-diff
+ (undo-tree-visualizer-hide-diff)
+ (let ((node (get-text-property (point) 'undo-tree-node)))
+ (when node (undo-tree-visualizer-show-diff node)))))
+
+
+(defun undo-tree-visualizer-show-diff (&optional node)
+ ;; show visualizer diff display
+ (setq undo-tree-visualizer-diff t)
+ (let ((buff (with-current-buffer undo-tree-visualizer-parent-buffer
+ (undo-tree-diff node)))
+ (display-buffer-mark-dedicated 'soft)
+ win)
+ (setq win (split-window))
+ (set-window-buffer win buff)
+ (shrink-window-if-larger-than-buffer win)))
+
+
+(defun undo-tree-visualizer-hide-diff ()
+ ;; hide visualizer diff display
+ (setq undo-tree-visualizer-diff nil)
+ (let ((win (get-buffer-window "*Diff")))
+ (when win (with-selected-window win (kill-buffer-and-window)))))
(defun undo-tree-diff (&optional node)
- [elpa] externals/undo-tree 07e934a 080/195: Added term-mode to undo-tree-incompatible-major-modes., (continued)
- [elpa] externals/undo-tree 07e934a 080/195: Added term-mode to undo-tree-incompatible-major-modes., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree acd7549 070/195: Prevent global-undo-tree-mode being enabled in incompatible major-modes., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 79b382b 083/195: Fixed bug in undo-list-pop-changeset when called with non-null DISCARD-POS., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 6680aab 086/195: Create proper registerv structure when storing undo state in register., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree cd06456 073/195: Modified slightly misleading message in turn-on-undo-tree-mode., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 98170c6 075/195: Added additional check to more reliably identify marker undo elements., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 89bf725 081/195: Prevent undo history being discarded on major-mode switch, Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 2b0395a 096/195: Added called-interactively-p compatibility hack for Emacs <= 23.1, Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree b42fe10 076/195: Fixed bug in undo-list-transfer-to-tree., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 897f2ff 089/195: Let-bind inhibit-read-only instead of setting and restoring buffer-read-only., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree adca566 094/195: Allow undo-tree-visualizer-diff variable to be customized.,
Stefan Monnier <=
- [elpa] externals/undo-tree da54994 117/195: When discarding root, erase previous link of new root., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 4c6280b 101/195: Fixed bug preventing registers being displayed in visualizer., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 3ab4581 107/195: Avoid error if point was moved manually in visualizer selection mode, Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 824b904 129/195: Preparatory changes for lazy tree drawing., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 40c7065 108/195: Added undo-tree-visualizer-abort command, Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 107d4c8 102/195: Allow visualizer to display relative timestamps., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 1561d8f 099/195: Preserve timestamps when generating diff for visualizer diff view., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 08db836 123/195: Fix bug in undo-tree-visualizer-select-left/right., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 6e5cc0f 104/195: Generate history save filename using a function, to allow customization., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 17568c3 113/195: Allow undo history save directory to be customized., Stefan Monnier, 2020/11/28