Function: outline-promote
outline-promote is an interactive and byte-compiled function defined
in outline.el.gz.
Signature
(outline-promote &optional WHICH)
Documentation
Promote headings higher up the tree.
If transient-mark-mode(var)/transient-mark-mode(fun) is on, and mark is active, promote headings in
the region (from a Lisp program, pass region for WHICH). Otherwise:
without prefix argument, promote current heading and all headings in the
subtree (from a Lisp program, pass subtree for WHICH); with prefix
argument, promote just the current heading (from a Lisp program, pass
nil for WHICH, or do not pass any argument).
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/outline.el.gz
(defun outline-promote (&optional which)
"Promote headings higher up the tree.
If `transient-mark-mode' is on, and mark is active, promote headings in
the region (from a Lisp program, pass `region' for WHICH). Otherwise:
without prefix argument, promote current heading and all headings in the
subtree (from a Lisp program, pass `subtree' for WHICH); with prefix
argument, promote just the current heading (from a Lisp program, pass
nil for WHICH, or do not pass any argument)."
(interactive
(list (if (and transient-mark-mode mark-active) 'region
(outline-back-to-heading)
(if current-prefix-arg nil 'subtree))))
(cond
((eq which 'region)
(outline-map-region #'outline-promote (region-beginning) (region-end)))
(which
(outline-map-region #'outline-promote
(point)
(save-excursion (outline-get-next-sibling) (point))))
(t
(outline-back-to-heading t)
(let* ((head (match-string-no-properties 0))
(level (save-match-data (funcall outline-level)))
(up-head (or (outline-head-from-level (1- level) head)
;; Use the parent heading, if it is really
;; one level less.
(save-excursion
(save-match-data
(outline-up-heading 1 t)
(and (= (1- level) (funcall outline-level))
(match-string-no-properties 0))))
;; Bummer!! There is no lower level heading.
(outline-invent-heading head 'up))))
(unless (rassoc level outline-heading-alist)
(push (cons head level) outline-heading-alist))
(replace-match up-head nil t)))))