summaryrefslogtreecommitdiff
path: root/lisp/emulation/viper-cmd.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/emulation/viper-cmd.el')
-rw-r--r--lisp/emulation/viper-cmd.el13
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index b97995b5458..ce3b24c19cb 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -597,7 +597,7 @@
(interactive)
(if (and viper-first-time (not (viper-is-in-minibuffer)))
(viper-mode)
- (if overwrite-mode (overwrite-mode nil))
+ (if overwrite-mode (overwrite-mode -1))
(or (viper-overlay-p viper-replace-overlay)
(viper-set-replace-overlay (point-min) (point-min)))
(viper-hide-replace-overlay)
@@ -646,8 +646,13 @@
(viper-message-conditions conds))))
(defsubst viper-downgrade-to-insert ()
- (setq viper-current-state 'insert-state
- viper-replace-minor-mode nil))
+ ;; Protect against user errors in hooks
+ (condition-case conds
+ (run-hooks 'viper-insert-state-hook)
+ (error
+ (viper-message-conditions conds)))
+ (setq viper-current-state 'insert-state
+ viper-replace-minor-mode nil))
@@ -2210,7 +2215,7 @@ problems."
;; guard against a smartie who switched from R-replace to normal replace
(remove-hook
'viper-post-command-hooks 'viper-R-state-post-command-sentinel 'local)
- (if overwrite-mode (overwrite-mode nil))
+ (if overwrite-mode (overwrite-mode -1))
)