[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/undo-fu d561fa8e0c 23/82: Fix #2 Support linear redo
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/undo-fu d561fa8e0c 23/82: Fix #2 Support linear redo |
Date: |
Thu, 7 Jul 2022 12:04:50 -0400 (EDT) |
branch: elpa/undo-fu
commit d561fa8e0c752c4000daba3931dd8525998a0665
Author: Campbell Barton <ideasman42@gmail.com>
Commit: Campbell Barton <ideasman42@gmail.com>
Fix #2 Support linear redo
'undo-fu-only-redo' never performs an undo
(unless running in unconstrained mode).
---
readme.rst | 2 +-
undo-fu.el | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/readme.rst b/readme.rst
index 1e35085c9a..9f9773ad97 100644
--- a/readme.rst
+++ b/readme.rst
@@ -2,7 +2,7 @@
Undo Fu
#######
-Simple, stable undo with redo for emacs.
+Simple, stable linear undo with redo for Emacs.
Unlike alternatives, this provides redo functionality with emacs own undo,
without losing access to the full undo history emacs supports
diff --git a/undo-fu.el b/undo-fu.el
index 53b9af8f4a..49bb755310 100644
--- a/undo-fu.el
+++ b/undo-fu.el
@@ -199,6 +199,26 @@ Optional argument ARG The number of steps to redo."
"Redo end-point hit (%s to step over it)"
(substitute-command-keys "\\[keyboard-quit]")))
+ (when undo-fu--respect
+ ;; Implement "linear" undo.
+ ;; So undo/redo chains before the undo checkpoint never redo an undo
step.
+ ;;
+ ;; Without this, redo is still usable, it's just that after
undo,redo,undo, ...
+ ;; the redo action will undo, which isn't so useful.
+ ;; This makes redo-only the reverse of undo-only.
+
+ (when (not (eq t pending-undo-list))
+ ;; Skip to the last matching redo step before the checkpoint.
+ (let
+ (
+ (list pending-undo-list)
+ (checkpoint-length (length undo-fu--checkpoint)))
+ (while
+ (and
+ (setq list (gethash list undo-equiv-table))
+ (eq (last list checkpoint-length) undo-fu--checkpoint))
+ (setq pending-undo-list list)))))
+
(let*
(
;; Important to clamp before assigning 'last-command'
- [nongnu] elpa/undo-fu 9bf729c727 09/82: Support pressing C-g before undo, (continued)
- [nongnu] elpa/undo-fu 9bf729c727 09/82: Support pressing C-g before undo, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu ad8a60f979 28/82: Lazy initialize checkpoint length (minor speedup for linear redo), ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu f883424345 36/82: readme: disable undo-tree in the evil-example, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu f938ee2d94 38/82: Cleanup: pass in 'was-redo' as an argument, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu 06772aef15 70/82: Use "undo" group, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu e07fd219a0 74/82: Sync backported functions from Emacs, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu c92261a3b7 80/82: Cleanup: use with-eval-after-load, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu 1baca3da6b 03/82: Lookup key for keyboard-quit instead of hard coding in message, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu cad12914a4 15/82: Add 'undo-fu-allow-undo-in-region' option, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu a0e111b955 21/82: Add .elisp-autofmt to enable auto-formatting, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu d561fa8e0c 23/82: Fix #2 Support linear redo,
ELPA Syncer <=
- [nongnu] elpa/undo-fu 459c90479d 24/82: Release 0.2, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu 29a8c3d5a8 32/82: Use more prominent comment sections, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu d81063c96d 42/82: Cleanup: remove unnecessary checkpoint-is-blocking variable, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu 0ce9ac3614 53/82: Cleanup: use updated auto-formatting results, ELPA Syncer, 2022/07/07
- [nongnu] elpa/undo-fu 20c9d6170a 77/82: Cleanup: simplify checks for clearing the checkpoint, ELPA Syncer, 2022/07/07