Function: org-drag-element-backward
org-drag-element-backward is an interactive and byte-compiled function
defined in org.el.gz.
Signature
(org-drag-element-backward)
Documentation
Move backward element at point.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org-drag-element-backward ()
"Move backward element at point."
(interactive)
(let ((elem (or (org-element-at-point)
(user-error "No element at point"))))
(if (org-element-type-p elem 'headline)
;; Preserve point when moving a whole tree, even if point was
;; on blank lines below the headline.
(let ((offset (skip-chars-backward " \t\n")))
(unwind-protect (org-move-subtree-up)
(forward-char (- offset))))
(let ((prev-elem
(save-excursion
(goto-char (org-element-begin elem))
(skip-chars-backward " \r\t\n")
(unless (bobp)
(let* ((beg (org-element-begin elem))
(prev (org-element-at-point))
(up prev))
(while (and (setq up (org-element-parent up))
(<= (org-element-end up) beg))
(setq prev up))
prev)))))
;; Error out if no previous element or previous element is
;; a parent of the current one.
(if (or (not prev-elem) (org-element-nested-p elem prev-elem))
(user-error "Cannot drag element backward")
(let ((pos (point)))
(org-element-swap-A-B prev-elem elem)
(goto-char (+ (org-element-begin prev-elem)
(- pos (org-element-begin elem))))))))))