1
0
Fork 0

[oni-org] Combine ‘oni-move-subtree-*’ into ‘oni-org-move-subtree’

These two functions do essentially the same thing, but in different directions.
This can also be done with one single interactive function. This way there is
only one thing to call.
This commit is contained in:
Tom Willemse 2022-05-11 20:21:53 -07:00
parent aaa5b89d0a
commit 54e9c9c26f

View file

@ -860,24 +860,28 @@ This is an around advice for org-html--svg-image as FUN."
;;; Moving subtrees ;;; Moving subtrees
(defun oni-move-subtree-above () (defun oni-org-move-subtree (target placement)
(interactive) "Move the subtree at point to TARGET and place it at PLACEMENT.
(let ((target (org-refile-get-location "Move subtree above")))
(org-cut-subtree)
(goto-char (nth 3 target))
(org-paste-subtree)))
(defun oni-move-subtree-below () TARGET should be a point or a marker in the current buffer.
(interactive)
(let* ((components (org-heading-components)) PLACEMENT should be a symbol. If PLACEMENT is above, it'll be
(target (org-refile-get-location "Move subtree below")) placed above TARGET. Otherwise it will be placed below it."
(marker (copy-marker (nth 3 target)))) (interactive
(org-cut-subtree) (list (let ((org-refile-targets '((nil :maxlevel . 1)))
(goto-char marker) (org-refile-use-outline-path nil))
(org-forward-heading-same-level 1) (org-refile-get-location "Move subtree to:"))
(when (= (point) (marker-position marker)) (intern (completing-read "Above / Below: " '(above below) nil t))))
(goto-char (point-max))) (save-excursion
(org-paste-subtree (car components)))) (let ((heading-level (car (org-heading-components)))
(marker (copy-marker (nth 3 target))))
(org-cut-subtree)
(goto-char marker)
(unless (eq placement 'above)
(org-forward-heading-same-level 1)
(when (= (point) (marker-position marker))
(goto-char (point-max))))
(org-paste-subtree heading-level))))
(provide 'oni-org) (provide 'oni-org)
;;; oni-org.el ends here ;;; oni-org.el ends here