diff lisp/simple.el @ 59261:73f5be00ba89

(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.
author Richard M. Stallman <rms@gnu.org>
date Fri, 31 Dec 2004 15:13:00 +0000
parents abe8f4f2982c
children fcfd5e8c8e77 025da3ba778e 95879cc1ed20
line wrap: on
line diff
--- 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.