Function: insert-for-yank-1
insert-for-yank-1 is a byte-compiled function defined in subr.el.gz.
Signature
(insert-for-yank-1 STRING)
Documentation
Helper for insert-for-yank, which see.
Probably introduced at or before Emacs version 22.1.
Source Code
;; Defined in /usr/src/emacs/lisp/subr.el.gz
(defun insert-for-yank-1 (string)
"Helper for `insert-for-yank', which see."
(let* ((handler (and (stringp string)
(get-text-property 0 'yank-handler string)))
(param (or (nth 1 handler) string))
(opoint (point))
(inhibit-read-only inhibit-read-only)
end)
;; FIXME: This throws away any yank-undo-function set by previous calls
;; to insert-for-yank-1 within the loop of insert-for-yank!
(setq yank-undo-function t)
(if (nth 0 handler) ; FUNCTION
(funcall (car handler) param)
(insert param))
(setq end (point))
;; Prevent read-only properties from interfering with the
;; following text property changes.
(setq inhibit-read-only t)
(unless (nth 2 handler) ; NOEXCLUDE
(remove-yank-excluded-properties opoint end))
;; If last inserted char has properties, mark them as rear-nonsticky.
(if (and (> end opoint)
(text-properties-at (1- end)))
(put-text-property (1- end) end 'rear-nonsticky t))
(if (eq yank-undo-function t) ; not set by FUNCTION
(setq yank-undo-function (nth 3 handler))) ; UNDO
(if (nth 4 handler) ; COMMAND
(setq this-command (nth 4 handler)))))