Function: viper-Put-back
viper-Put-back is an interactive and byte-compiled function defined in
viper-cmd.el.gz.
Signature
(viper-Put-back ARG)
Documentation
Put back at point/above line.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-cmd.el.gz
(defun viper-Put-back (arg)
"Put back at point/above line."
(interactive "P")
(let ((val (viper-p-val arg))
(text (if viper-use-register
(cond ((viper-valid-register viper-use-register '(digit))
(current-kill
(- viper-use-register ?1) 'do-not-rotate))
((viper-valid-register viper-use-register)
(get-register (downcase viper-use-register)))
(t (error viper-InvalidRegister viper-use-register)))
(current-kill 0)))
sv-point chars-inserted lines-inserted)
(if (null text)
(if viper-use-register
(let ((reg viper-use-register))
(setq viper-use-register nil)
(error viper-EmptyRegister reg))
(user-error viper-ViperBell)))
(setq viper-use-register nil)
(if (viper-end-with-a-newline-p text) (beginning-of-line))
(viper-set-destructive-command
(list 'viper-Put-back val nil viper-use-register nil nil))
(set-marker (mark-marker) (point) (current-buffer))
(setq sv-point (point))
(viper-loop val (viper-yank text))
(setq chars-inserted (abs (- (point) sv-point))
lines-inserted (abs (count-lines (point) sv-point)))
(if (or (> chars-inserted viper-change-notification-threshold)
(> lines-inserted viper-change-notification-threshold))
(unless (viper-is-in-minibuffer)
(message "Inserted %d character(s), %d line(s)"
chars-inserted lines-inserted))))
;; Vi puts cursor on the last char when the yanked text doesn't contain a
;; newline; it leaves the cursor at the beginning when the text contains
;; a newline
(if (viper-same-line (point) (mark))
(or (= (point) (mark)) (viper-backward-char-carefully))
(exchange-point-and-mark)
(if (bolp)
(back-to-indentation)))
(deactivate-mark))