[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/undo-tree 77c29a6 171/195: Factor out canary checking i
From: |
Stefan Monnier |
Subject: |
[elpa] externals/undo-tree 77c29a6 171/195: Factor out canary checking into undo-list-found-canary-p. |
Date: |
Sat, 28 Nov 2020 13:41:46 -0500 (EST) |
branch: externals/undo-tree
commit 77c29a63b819f756115bdc5c610e87738725f667
Author: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Commit: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Factor out canary checking into undo-list-found-canary-p.
---
undo-tree.el | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/undo-tree.el b/undo-tree.el
index cee0ce1..6dc8d8f 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -1707,6 +1707,12 @@ Comparison is done with `eq'."
undo-list)
+(defun undo-list-found-canary-p (undo-list)
+ (or (eq (car undo-list) 'undo-tree-canary)
+ (and (null (car undo-list))
+ (eq (cadr undo-list) 'undo-tree-canary))))
+
+
(defun undo-list-pop-changeset (&optional discard-pos)
;; Pop changeset from `buffer-undo-list'. If DISCARD-POS is non-nil, discard
;; any position entries from changeset.
@@ -1726,8 +1732,7 @@ Comparison is done with `eq'."
(undo-tree-move-GC-elts-to-pool (car p))
(while (and discard-pos (integerp (car buffer-undo-list)))
(setq buffer-undo-list (cdr buffer-undo-list)))
- (and (car buffer-undo-list)
- (not (eq (car buffer-undo-list) 'undo-tree-canary))))
+ (not (undo-list-found-canary-p buffer-undo-list)))
(setcdr p (list (pop buffer-undo-list)))
(setq p (cdr p)))
changeset)))
@@ -1769,8 +1774,7 @@ Comparison is done with `eq'."
(when (null buffer-undo-list)
(setq buffer-undo-list '(nil undo-tree-canary)))
- (unless (or (eq (cadr buffer-undo-list) 'undo-tree-canary)
- (eq (car buffer-undo-list) 'undo-tree-canary))
+ (unless (undo-list-found-canary-p buffer-undo-list)
;; create new node from first changeset in `buffer-undo-list', save old
;; `buffer-undo-tree' current node, and make new node the current node
(let* ((node (undo-tree-make-node nil (undo-list-pop-changeset)))
@@ -1780,7 +1784,7 @@ Comparison is done with `eq'."
(setf (undo-tree-current buffer-undo-tree) node)
;; grow tree fragment backwards using `buffer-undo-list' changesets
(while (and buffer-undo-list
- (not (eq (cadr buffer-undo-list) 'undo-tree-canary)))
+ (not (undo-list-found-canary-p buffer-undo-list)))
(setq node
(undo-tree-grow-backwards node (undo-list-pop-changeset)))
(incf size (undo-list-byte-size (undo-tree-node-undo node)))
@@ -1788,8 +1792,7 @@ Comparison is done with `eq'."
;; if no undo history has been discarded from `buffer-undo-list' since
;; last transfer, splice new tree fragment onto end of old
;; `buffer-undo-tree' current node
- (if (or (eq (cadr buffer-undo-list) 'undo-tree-canary)
- (eq (car buffer-undo-list) 'undo-tree-canary))
+ (if (undo-list-found-canary-p buffer-undo-list)
(progn
(setf (undo-tree-node-previous node) splice)
(push node (undo-tree-node-next splice))
@@ -1798,9 +1801,9 @@ Comparison is done with `eq'."
(incf (undo-tree-count buffer-undo-tree) count))
;; if undo history has been discarded, replace entire
;; `buffer-undo-tree' with new tree fragment
+ (message "Undo history discarded by Emacs - rebuilding undo-tree")
(setq node (undo-tree-grow-backwards node nil))
(setf (undo-tree-root buffer-undo-tree) node)
- (setq buffer-undo-list '(nil undo-tree-canary))
(setf (undo-tree-size buffer-undo-tree) size)
(setf (undo-tree-count buffer-undo-tree) count)
(setq buffer-undo-list '(nil undo-tree-canary))))
- [elpa] externals/undo-tree d0273ec 144/195: Make undo-tree-visualizer-[undo|redo]-to-x work in selection mode., (continued)
- [elpa] externals/undo-tree d0273ec 144/195: Make undo-tree-visualizer-[undo|redo]-to-x work in selection mode., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree d0e8793 145/195: Fix diff after undo-tree-visualize-[undo|redo]-to-x in selection mode., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 7d12602 150/195: Fix formatting bug in absolute timestamps., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 01b4a86 151/195: Update comment about Emacs version required for persistent history., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 8105f5f 143/195: Temporarily disable diff wto speed up undoing-to-x., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree aabc832 147/195: Remove unused variable., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 4cba00b 163/195: Fix one of the diagrams in the Commentary., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 3a772b7 170/195: Bump copyright year and version number., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree bf3a146 167/195: Disable undo-in-region by default., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree eec9edd 168/195: Silence some unused variable compiler warnings., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 77c29a6 171/195: Factor out canary checking into undo-list-found-canary-p.,
Stefan Monnier <=
- [elpa] externals/undo-tree 4a72a1e 172/195: Change undo-list-pop-changeset to macro taking buffer-undo-list argument., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree c39882f 177/195: Prevent misleading message about discarded undo history on first undo., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree e6f31a0 179/195: Use custom undo-[strong-|outer]-limit values in undo-tree-mode., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 2ac4eac 181/195: Improve messages displayed to user when undo history is discarded., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 6a428ce 182/195: Bump copyright year in readiness for new release., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 7fb46cb 183/195: Fix copy-undo-tree by forcing vector rather than native defstruct., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 5011f91 186/195: Implement non-recursive undo-tree copier, to avoid hitting Elisp and c stack space limits., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 0161041 194/195: Fix argument order in gv setter definitions., Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree bf2e9ba 195/195: Print complete objects when saving undo-tree history, Stefan Monnier, 2020/11/28
- [elpa] externals/undo-tree 75b17c3 189/195: undo-outer-limit can also be null (no limit) in recent Emacsen., Stefan Monnier, 2020/11/28