[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/undo-tree 4a72a1e 172/195: Change undo-list-pop-changes
From: |
Stefan Monnier |
Subject: |
[elpa] externals/undo-tree 4a72a1e 172/195: Change undo-list-pop-changeset to macro taking buffer-undo-list argument. |
Date: |
Sat, 28 Nov 2020 13:41:46 -0500 (EST) |
branch: externals/undo-tree
commit 4a72a1e8b1b72dff2f7234ef204e54c7a1220599
Author: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Commit: Toby S. Cubitt <toby-undo-tree@dr-qubit.org>
Change undo-list-pop-changeset to macro taking buffer-undo-list argument.
---
undo-tree.el | 46 +++++++++++++++++++++++-----------------------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/undo-tree.el b/undo-tree.el
index 6dc8d8f..3b0de1f 100644
--- a/undo-tree.el
+++ b/undo-tree.el
@@ -1713,29 +1713,29 @@ Comparison is done with `eq'."
(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
+(defmacro undo-list-pop-changeset (undo-list &optional discard-pos)
+ ;; Pop changeset from `undo-list'. If DISCARD-POS is non-nil, discard
;; any position entries from changeset.
;; discard undo boundaries and (if DISCARD-POS is non-nil) position entries
;; at head of undo list
- (while (or (null (car buffer-undo-list))
- (and discard-pos (integerp (car buffer-undo-list))))
- (setq buffer-undo-list (cdr buffer-undo-list)))
+ `(while (or (null (car ,undo-list))
+ (and ,discard-pos (integerp (car ,undo-list))))
+ (setq ,undo-list (cdr ,undo-list)))
;; pop elements up to next undo boundary, discarding position entries if
;; DISCARD-POS is non-nil
- (if (eq (car buffer-undo-list) 'undo-tree-canary)
- (push nil buffer-undo-list)
- (let* ((changeset (list (pop buffer-undo-list)))
- (p changeset))
- (while (progn
- (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)))
- (not (undo-list-found-canary-p buffer-undo-list)))
- (setcdr p (list (pop buffer-undo-list)))
- (setq p (cdr p)))
- changeset)))
+ `(if (eq (car ,undo-list) 'undo-tree-canary)
+ (push nil ,undo-list)
+ (let* ((changeset (list (pop ,undo-list)))
+ (p changeset))
+ (while (progn
+ (undo-tree-move-GC-elts-to-pool (car p))
+ (while (and ,discard-pos (integerp (car ,undo-list)))
+ (setq ,undo-list (cdr ,undo-list)))
+ (not (undo-list-found-canary-p ,undo-list)))
+ (setcdr p (list (pop ,undo-list)))
+ (setq p (cdr p)))
+ changeset)))
(defun undo-tree-copy-list (undo-list)
@@ -1777,7 +1777,7 @@ Comparison is done with `eq'."
(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)))
+ (let* ((node (undo-tree-make-node nil (undo-list-pop-changeset
buffer-undo-list)))
(splice (undo-tree-current buffer-undo-tree))
(size (undo-list-byte-size (undo-tree-node-undo node)))
(count 1))
@@ -1786,7 +1786,7 @@ Comparison is done with `eq'."
(while (and buffer-undo-list
(not (undo-list-found-canary-p buffer-undo-list)))
(setq node
- (undo-tree-grow-backwards node (undo-list-pop-changeset)))
+ (undo-tree-grow-backwards node (undo-list-pop-changeset
buffer-undo-list)))
(incf size (undo-list-byte-size (undo-tree-node-undo node)))
(incf count))
;; if no undo history has been discarded from `buffer-undo-list' since
@@ -2804,7 +2804,7 @@ changes within the current region."
;; elements from node's redo list
(if preserve-redo
(progn
- (undo-list-pop-changeset)
+ (undo-list-pop-changeset buffer-undo-list)
(decf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-redo current)))
(setf (undo-tree-node-redo current)
@@ -2817,7 +2817,7 @@ changes within the current region."
(decf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-redo current)))
(setf (undo-tree-node-redo current)
- (undo-list-pop-changeset 'discard-pos))
+ (undo-list-pop-changeset buffer-undo-list 'discard-pos))
(incf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-redo current))))
@@ -2919,7 +2919,7 @@ changes within the current region."
;; elements from node's redo list
(if preserve-undo
(progn
- (undo-list-pop-changeset)
+ (undo-list-pop-changeset buffer-undo-list)
(decf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-undo current)))
(setf (undo-tree-node-undo current)
@@ -2932,7 +2932,7 @@ changes within the current region."
(decf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-undo current)))
(setf (undo-tree-node-undo current)
- (undo-list-pop-changeset 'discard-pos))
+ (undo-list-pop-changeset buffer-undo-list 'discard-pos))
(incf (undo-tree-size buffer-undo-tree)
(undo-list-byte-size (undo-tree-node-undo current))))
- [elpa] externals/undo-tree d0e8793 145/195: Fix diff after undo-tree-visualize-[undo|redo]-to-x in selection mode., (continued)
- [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, 2020/11/28
- [elpa] externals/undo-tree 4a72a1e 172/195: Change undo-list-pop-changeset to macro taking buffer-undo-list argument.,
Stefan Monnier <=
- [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
- [elpa] externals/undo-tree 09641b2 188/195: Bump version number., Stefan Monnier, 2020/11/28