]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/simple.el (undo): Use undo--last-change-was-undo-p
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Feb 2020 15:52:58 +0000 (10:52 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 14 Feb 2020 15:52:58 +0000 (10:52 -0500)
lisp/simple.el

index 0217ae7c1e636e9c3f1b74dd30cfcaca71ffde45..688dbcc947b4c46396a78befa1fee711fb6907bc 100644 (file)
@@ -2532,6 +2532,11 @@ A redo record for ordinary undo maps to the following (earlier) undo.")
   "Within a run of consecutive undo commands, list remaining to be undone.
 If t, we undid all the way to the end of it.")
 
+(defun undo--last-change-was-undo-p (undo-list)
+  (while (and (consp undo-list) (eq (car undo-list) nil))
+    (setq undo-list (cdr undo-list)))
+  (gethash undo-list undo-equiv-table))
+
 (defun undo (&optional arg)
   "Undo some previous changes.
 Repeat this command to undo more changes.
@@ -2567,12 +2572,7 @@ as an argument limits undo to changes within the current region."
                 (or (eq pending-undo-list t)
                     ;; If something (a timer or filter?) changed the buffer
                     ;; since the previous command, don't continue the undo seq.
-                    (let ((list buffer-undo-list))
-                      (while (eq (car list) nil)
-                        (setq list (cdr list)))
-                      ;; If the last undo record made was made by undo
-                      ;; it shows nothing else happened in between.
-                      (gethash list undo-equiv-table))))
+                    (undo--last-change-was-undo-p buffer-undo-list)))
       (setq undo-in-region
            (and (or (region-active-p) (and arg (not (numberp arg))))
                  (not inhibit-region)))
@@ -2662,11 +2662,6 @@ Contrary to `undo', this will not redo a previous undo."
   (interactive "*p")
   (let ((undo-no-redo t)) (undo arg)))
 
-(defun undo--last-change-was-undo-p (undo-list)
-  (while (and (consp undo-list) (eq (car undo-list) nil))
-    (setq undo-list (cdr undo-list)))
-  (gethash undo-list undo-equiv-table))
-
 (defun undo-redo (&optional arg)
   "Undo the last ARG undos."
   (interactive "*p")