]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix missing undo-boundary on revert-buffer.
authorPhillip Lord <phillip.lord@russet.org.uk>
Tue, 28 Jun 2016 07:02:51 +0000 (08:02 +0100)
committerPhillip Lord <phillip.lord@russet.org.uk>
Wed, 6 Jul 2016 09:16:10 +0000 (10:16 +0100)
* lisp/simple.el (undo-auto--undoable-change-no-timer): New function.
* src/fileio.c (insert-buffer-contents): Call
  undo-auto--undoably-changed-buffers before changes.

Addresses Bug#23785.

Do not merge to master as c98bc98 also addresses the same bug.

lisp/simple.el
src/fileio.c

index b66827dfa63128aee566fab5414c2a2f125fedc1..43ad43cf9270c622784cdcee670347953faf4268 100644 (file)
@@ -2940,9 +2940,17 @@ behavior."
                         (cdr buffer-undo-list))))))
         (setq undo-auto--last-boundary-cause 0)))))
 
+;; This function is called also from one place in fileio.c. We call
+;; this function, rather than undoable-change because it reduces the
+;; number of lisp functions we have to use fboundp for to avoid
+;; bootstrap issues.
+(defun undo-auto--undoable-change-no-timer ()
+  "Record `current-buffer' as changed."
+  (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer)))
+
 (defun undo-auto--undoable-change ()
   "Called after every undoable buffer change."
-  (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer))
+  (undo-auto--undoable-change-no-timer)
   (undo-auto--boundary-ensure-timer))
 ;; End auto-boundary section
 
index b11f9233ab4891232a4f785c41f0fc9d531c4814..3005ca320e7615ed69fc497a9b28719a31674ef7 100644 (file)
@@ -3436,6 +3436,9 @@ by calling `format-decode', which see.  */)
   if (!NILP (BVAR (current_buffer, read_only)))
     Fbarf_if_buffer_read_only (Qnil);
 
+  if (!NILP (Ffboundp (Qundo_auto__undoable_change_no_timer)))
+    call0 (Qundo_auto__undoable_change_no_timer);
+
   val = Qnil;
   p = Qnil;
   orig_filename = Qnil;
@@ -5797,6 +5800,8 @@ syms_of_fileio (void)
      which gives a list of operations it handles.  */
   DEFSYM (Qoperations, "operations");
 
+  DEFSYM (Qundo_auto__undoable_change_no_timer, "undo-auto--undoable-change-no-timer");
+
   DEFSYM (Qexpand_file_name, "expand-file-name");
   DEFSYM (Qsubstitute_in_file_name, "substitute-in-file-name");
   DEFSYM (Qdirectory_file_name, "directory-file-name");