;; VI-style Undo
;; Used to 'undo' complex commands, such as replace and insert commands.
-(viper-deflocalvar viper-undo-in-complex-command nil)
-(put 'viper-undo-in-complex-command 'permanent-local t)
+(viper-deflocalvar viper-undo-needs-adjustment nil)
+(put 'viper-undo-needs-adjustment 'permanent-local t)
+
+;; A mark that Viper puts on buffer-undo-list. Marks the beginning of a
+;; complex command that must be undone atomically. If inserted, it is
+;; erased by viper-change-state-to-vi and viper-repeat.
+(defconst viper-buffer-undo-list-mark 'viper)
(defcustom viper-keep-point-on-undo nil
"Non-nil means not to move point while undoing commands.