summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/simple.el10
1 files changed, 10 insertions, 0 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index 66f0003bf4d..cc2e4c6d801 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -615,6 +615,16 @@ A numeric argument serves as a repeat count."
(progn (undo-start)
(undo-more 1)))
(undo-more (or arg 1))
+ ;; Don't specify a position in the undo record for the undo command.
+ ;; Instead, undoing this should move point to where the change is.
+ (let ((tail buffer-undo-list)
+ done)
+ (while (and tail (not done) (not (null (car tail))))
+ (if (integerp (car tail))
+ (progn
+ (setq done t)
+ (setq buffer-undo-list (delq (car tail) buffer-undo-list))))
+ (setq tail (cdr tail))))
(and modified (not (buffer-modified-p))
(delete-auto-save-file-if-necessary recent-save)))
;; If we do get all the way thru, make this-command indicate that.