Function: org-yank-generic
org-yank-generic is a byte-compiled function defined in org.el.gz.
Signature
(org-yank-generic COMMAND ARG)
Documentation
Perform some yank-like command.
This function implements the behavior described in the org-yank
documentation. However, it has been generalized to work for any
interactive command with similar behavior.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org-yank-generic (command arg)
"Perform some yank-like command.
This function implements the behavior described in the `org-yank'
documentation. However, it has been generalized to work for any
interactive command with similar behavior."
;; pretend to be command COMMAND
(setq this-command command)
(if arg
(call-interactively command)
(let ((subtreep ; is kill a subtree, and the yank position appropriate?
(and (org-kill-is-subtree-p)
(or (bolp)
(and (looking-at "[ \t]*$")
(string-match
"\\`\\*+\\'"
(buffer-substring (line-beginning-position) (point)))))))
swallowp)
(cond
((and subtreep org-yank-folded-subtrees)
(let ((beg (point))
end)
(if (and subtreep org-yank-adjusted-subtrees)
(org-paste-subtree nil nil 'for-yank)
(call-interactively command))
(setq end (point))
(goto-char beg)
(when (and (bolp) subtreep
(not (setq swallowp
(org-yank-folding-would-swallow-text beg end))))
(org-with-limited-levels
(or (looking-at org-outline-regexp)
(re-search-forward org-outline-regexp-bol end t))
(while (and (< (point) end) (looking-at org-outline-regexp))
(org-fold-subtree t)
(org-cycle-show-empty-lines 'folded)
(condition-case nil
(outline-forward-same-level 1)
(error (goto-char end))))))
(when swallowp
(message
"Inserted text not folded because that would swallow text"))
(goto-char end)
(skip-chars-forward " \t\n\r")
(forward-line 0)
(push-mark beg 'nomsg)))
((and subtreep org-yank-adjusted-subtrees)
(let ((beg (line-beginning-position)))
(org-paste-subtree nil nil 'for-yank)
(push-mark beg 'nomsg)))
(t
(call-interactively command))))))