summaryrefslogtreecommitdiff
path: root/lisp/simple.el
diff options
context:
space:
mode:
authorPhillip Lord <phillip.lord@russet.org.uk>2016-05-21 10:06:12 +0100
committerPhillip Lord <phillip.lord@russet.org.uk>2016-05-21 10:06:12 +0100
commitd096e5780393bb406bf1b8591ef1a006a1a048d5 (patch)
tree24ddfe0c6012e26e2884b90308daa7b09817de16 /lisp/simple.el
parent6de0715f5467d4b925e2dfe082174529ace3b174 (diff)
downloademacs-fix/viper-undo-squash.tar.gz
Fix viper undo breakage from undo-boundary changesfix/viper-undo-squash
* 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.
Diffstat (limited to 'lisp/simple.el')
-rw-r--r--lisp/simple.el23
1 files changed, 18 insertions, 5 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index 97b40bd214e..c5aa2922475 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -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.