[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master e17d6e2 1/2: primitive-undo: Update only the curren
From: |
Dmitry Gutov |
Subject: |
[Emacs-diffs] master e17d6e2 1/2: primitive-undo: Update only the currently valid markers |
Date: |
Fri, 16 Jun 2017 21:05:31 -0400 (EDT) |
branch: master
commit e17d6e2f6f0b7e33f16884bcb29b4d5f4433941b
Author: Nitish Chandra <address@hidden>
Commit: Dmitry Gutov <address@hidden>
primitive-undo: Update only the currently valid markers
* lisp/simple.el (primitive-undo):
Update only the currently valid markers (bug#25599).
Copyright-paperwork-exempt: yes
---
lisp/simple.el | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/lisp/simple.el b/lisp/simple.el
index df664fc..a5565ab 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2589,8 +2589,12 @@ Return what remains of the list."
(goto-char pos))
;; Adjust the valid marker adjustments
(dolist (adj valid-marker-adjustments)
- (set-marker (car adj)
- (- (car adj) (cdr adj))))))
+ ;; Insert might have invalidated some of the markers
+ ;; via modification hooks. Update only the currently
+ ;; valid ones (bug#25599).
+ (if (marker-buffer (car adj))
+ (set-marker (car adj)
+ (- (car adj) (cdr adj)))))))
;; (MARKER . OFFSET) means a marker MARKER was adjusted by OFFSET.
(`(,(and marker (pred markerp)) . ,(and offset (pred integerp)))
(warn "Encountered %S entry in undo list with no matching (TEXT .
POS) entry"