1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Fix viper undo breakage from undo-boundary changes

* lisp/simple.el (undo-auto-disable-boundaries): New variable
* lisp/emulation/viper-init.el (viper-undo-in-complex-command,
  viper-undo-needs-adjustment): Rename
  variable to reflect new purpose,
  (viper-buffer-undo-list-mark): Remove
* lisp/emulation/viper-cmd.el (viper-set-complex-command-for-undo):
  Add undo using `undo-boundary', disable default undo-boundary
  addition.
* lisp/emulation/viper-cmd.el
  (viper-complete-complex-command-for-undo,viper-adjust-undo):
  Change function name, remove old undo list manipulation.
* lisp/emulation/viper-cmd.el (viper-undo,viper-repeat,
  viper-change-state-to-vi,viper-change-state):
  Update for function name change.

Addresses Bug #22295
This commit is contained in:
Phillip Lord 2016-05-21 10:06:12 +01:00
parent 920d76c208
commit c0139e32f1
3 changed files with 32 additions and 43 deletions

View file

@ -2839,6 +2839,18 @@ 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
@ -2878,7 +2890,8 @@ REASON describes the reason that the boundary is being added; see
(dolist (b undo-auto--undoably-changed-buffers)
(when (buffer-live-p b)
(with-current-buffer b
(undo-auto--ensure-boundary cause))))
(unless undo-auto-disable-boundaries
(undo-auto--ensure-boundary cause)))))
(setq undo-auto--undoably-changed-buffers nil))
(defun undo-auto--boundary-timer ()
@ -2905,10 +2918,10 @@ See also `undo-auto--buffer-undoably-changed'.")
"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.