Function: evil-paste-after
evil-paste-after is an interactive and byte-compiled function defined
in evil-commands.el.
Signature
(evil-paste-after COUNT &optional REGISTER YANK-HANDLER)
Documentation
Paste the latest yanked text behind point.
The return value is the yanked text.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/evil-20251108.138/evil-commands.el
(evil-define-command evil-paste-after
(count &optional register yank-handler)
"Paste the latest yanked text behind point.
The return value is the yanked text."
:suppress-operator t
(interactive "*P<x>")
(setq count (prefix-numeric-value count))
(if (evil-visual-state-p)
(evil-visual-paste count register)
(evil-with-undo
(let* ((text (copy-sequence
(if register
(evil-get-register register)
(current-kill 0))))
(yank-handler (or yank-handler
(when (stringp text)
(car-safe (get-text-property
0 'yank-handler text)))))
(opoint (point)))
(when text
(if (functionp yank-handler)
(let ((evil-paste-count count)
;; for non-interactive use
(this-command #'evil-paste-after))
(insert-for-yank text))
;; no yank-handler, default
(when (vectorp text)
(setq text (evil-vector-to-string text)))
(set-text-properties 0 (length text) nil text)
(unless (eolp) (forward-char))
(push-mark (point) t)
;; TODO: Perhaps it is better to collect a list of all
;; (point . mark) pairs to undo the yanking for COUNT > 1.
;; The reason is that this yanking could very well use
;; `yank-handler'.
(let ((beg (point)))
(dotimes (_ (or count 1))
(insert-for-yank text))
(setq evil-last-paste
(list #'evil-paste-after
count
opoint
beg ; beg
(point))) ; end
(evil-set-marker ?\[ beg)
(evil-set-marker ?\] (1- (point)))
(when (evil-normal-state-p)
(evil-move-cursor-back)))))
(when evil--cursor-after
(if (eq 'evil-yank-line-handler yank-handler)
(ignore-errors (evil-next-line-first-non-blank 1))
(evil-forward-char 1 nil t))
(setq evil--cursor-after nil))
(when register
(setq evil-last-paste nil))
(and (> (length text) 0) text)))))