# HG changeset patch # User Richard M. Stallman # Date 1104505980 0 # Node ID 73f5be00ba89919873f6a39685215dce22a3f39e # Parent a3a45da02baa7fa8026294453fe36c5c59e61ea4 (undo): Use undo-equiv-table to detect unexpected changes since previous undo. (undo-list-saved): Variable deleted. (buffer-disable-undo): Don't alter undo-list-saved. diff -r a3a45da02baa -r 73f5be00ba89 lisp/simple.el --- a/lisp/simple.el Fri Dec 31 15:11:01 2004 +0000 +++ b/lisp/simple.el Fri Dec 31 15:13:00 2004 +0000 @@ -1234,10 +1234,6 @@ (defvar undo-no-redo nil "If t, `undo' doesn't go through redo entries.") -(defvar undo-list-saved nil - "The value of `buffer-undo-list' saved by the last undo command.") -(make-variable-buffer-local 'undo-list-saved) - (defun undo (&optional arg) "Undo some previous changes. Repeat this command to undo more changes. @@ -1266,7 +1262,9 @@ (let ((list buffer-undo-list)) (while (eq (car list) nil) (setq list (cdr list))) - (eq undo-list-saved list))) + ;; If the last undo record made was made by undo + ;; it shows nothing else happened in between. + (gethash list undo-equiv-table))) (setq undo-in-region (if transient-mark-mode mark-active (and arg (not (numberp arg))))) (if undo-in-region @@ -1320,7 +1318,6 @@ (setq prev tail tail (cdr tail)))) ;; Record what the current undo list says, ;; so the next command can tell if the buffer was modified in between. - (setq undo-list-saved buffer-undo-list) (and modified (not (buffer-modified-p)) (delete-auto-save-file-if-necessary recent-save)))) @@ -1329,8 +1326,7 @@ No argument or nil as argument means do this for the current buffer." (interactive) (with-current-buffer (if buffer (get-buffer buffer) (current-buffer)) - (setq buffer-undo-list t - undo-list-saved nil))) + (setq buffer-undo-list t))) (defun undo-only (&optional arg) "Undo some previous changes.