Mercurial > emacs
changeset 102543:78bd54d14660
(undo): Don't loop when encountering empty undo records.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 14 Mar 2009 01:51:34 +0000 |
parents | 1ed8eba93aec |
children | e6dfff05e3b2 |
files | lisp/ChangeLog lisp/simple.el |
diffstat | 2 files changed, 11 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat Mar 14 00:26:34 2009 +0000 +++ b/lisp/ChangeLog Sat Mar 14 01:51:34 2009 +0000 @@ -1,3 +1,7 @@ +2009-03-14 Stefan Monnier <monnier@iro.umontreal.ca> + + * simple.el (undo): Don't loop when encountering empty undo records. + 2009-03-13 Tassilo Horn <tassilo@member.fsf.org> * doc-view.el (doc-view-mode-map): Bind RET to image-next-line.
--- a/lisp/simple.el Sat Mar 14 00:26:34 2009 +0000 +++ b/lisp/simple.el Sat Mar 14 01:51:34 2009 +0000 @@ -1682,9 +1682,13 @@ ;; In the ordinary case (not within a region), map the redo ;; record to the following undos. ;; I don't know how to do that in the undo-in-region case. - (puthash buffer-undo-list - (if undo-in-region t pending-undo-list) - undo-equiv-table) + (let ((list buffer-undo-list)) + ;; Strip any leading undo boundaries there might be, like we do + ;; above when checking. + (while (eq (car list) nil) + (setq list (cdr list))) + (puthash list (if undo-in-region t pending-undo-list) + undo-equiv-table)) ;; 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)