X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8085d5fcc4240a39458ead26ae2279590bb9f629..ca1b9b38dcf372b09028acf088f386ef09f2de84:/lisp/simple.el diff --git a/lisp/simple.el b/lisp/simple.el index 10b4f392d5..0da70976ed 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -2848,18 +2848,6 @@ buffers that were changed during the last command.") If set to non-nil, this will effectively disable the timer.") -(defvar-local undo-auto-disable-boundaries nil - "Disable the automatic addition of boundaries. - -If set to non-nil, `undo-boundary' will not be called -automatically in a buffer either at the end of a command, or as a -result of `undo-auto-current-boundary-timer'. - -When this is set to non-nil, it is important to ensure that -`undo-boundary' is called frequently enough. Failure to do so -will result in user-visible warnings that the situation is -probably a bug.") - (defvar undo-auto--this-command-amalgamating nil "Non-nil if `this-command' should be amalgamated. This variable is set to nil by `undo-auto--boundaries' and is set @@ -2896,11 +2884,14 @@ REASON describes the reason that the boundary is being added; see "Check recently changed buffers and add a boundary if necessary. REASON describes the reason that the boundary is being added; see `undo-last-boundary' for more information." + ;; (Bug #23785) All commands should ensure that there is an undo + ;; boundary whether they have changed the current buffer or not. + (when (eq cause 'command) + (add-to-list 'undo-auto--undoably-changed-buffers (current-buffer))) (dolist (b undo-auto--undoably-changed-buffers) (when (buffer-live-p b) (with-current-buffer b - (unless undo-auto-disable-boundaries - (undo-auto--ensure-boundary cause))))) + (undo-auto--ensure-boundary cause)))) (setq undo-auto--undoably-changed-buffers nil)) (defun undo-auto--boundary-timer () @@ -2925,10 +2916,10 @@ default values.") "Add an `undo-boundary' in appropriate buffers." (undo-auto--boundaries (let ((amal undo-auto--this-command-amalgamating)) - (setq undo-auto--this-command-amalgamating nil) - (if amal - 'amalgamate - 'command)))) + (setq undo-auto--this-command-amalgamating nil) + (if amal + 'amalgamate + 'command)))) (defun undo-auto-amalgamate () "Amalgamate undo if necessary. @@ -5232,6 +5223,7 @@ store it in a Lisp variable. Example: (defmacro save-mark-and-excursion (&rest body) "Like `save-excursion', but also save and restore the mark state. This macro does what `save-excursion' did before Emacs 25.1." + (declare (indent 0) (debug t)) (let ((saved-marker-sym (make-symbol "saved-marker"))) `(let ((,saved-marker-sym (save-mark-and-excursion--save))) (unwind-protect