Function: viper-undo

viper-undo is an interactive and byte-compiled function defined in viper-cmd.el.gz.

Signature

(viper-undo)

Documentation

Undo previous change.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emulation/viper-cmd.el.gz
(defun viper-undo ()
  "Undo previous change."
  (interactive)
  (message "undo!")
  (let ((before-undo-pt (point-marker))
	undo-beg-posn undo-end-posn)

    ;; the viper-after-change-undo-hook removes itself after the 1st invocation
    (add-hook 'viper-undo-functions #'viper-after-change-undo-hook nil 'local)

    (undo-start)
    (undo-more 2)
    ;;(setq undo-beg-posn (or undo-beg-posn (point))
    ;;    undo-end-posn (or undo-end-posn (point)))
    ;;(setq undo-beg-posn (or undo-beg-posn before-undo-pt)
    ;;      undo-end-posn (or undo-end-posn undo-beg-posn))

    (if (and undo-beg-posn undo-end-posn)
	(progn
	  (goto-char undo-beg-posn)
	  (sit-for 0)
	  (if (and viper-keep-point-on-undo
		   (pos-visible-in-window-p before-undo-pt))
	      (progn
		(push-mark (point-marker) t)
		(sit-for 0.3)
		(goto-char undo-end-posn)
		(sit-for 0.3)
		(if (pos-visible-in-window-p undo-beg-posn)
		    (goto-char before-undo-pt)
		  (goto-char undo-beg-posn)))
	    (push-mark before-undo-pt t))
	  ))

    (if (and (eolp) (not (bolp))) (backward-char 1))
    )
  (setq this-command 'viper-undo))