org-paste-subtree: Fix pasting when point is on heading but not at bol
* lisp/org.el (org-paste-subtree): When point is on heading, but not at bol, paste using heading level minimal between current heading level and next visible heading level. * testing/lisp/test-org.el (test-org/paste-subtree): Add test cases. Reported-by: Philipp Kiefer <phil.kiefer@gmail.com> Link: https://orgmode.org/list/878rhxtszb.fsf@localhost
This commit is contained in:
parent
1ae978f940
commit
d73688faa4
|
@ -7332,13 +7332,12 @@ When REMOVE is non-nil, remove the subtree from the clipboard."
|
|||
((looking-at-p org-outline-regexp-bol) (org-outline-level))))
|
||||
(previous-level
|
||||
(save-excursion
|
||||
(org-previous-visible-heading 1)
|
||||
(unless (org-at-heading-p) (org-previous-visible-heading 1))
|
||||
(if (org-at-heading-p) (org-outline-level) 1)))
|
||||
(next-level
|
||||
(save-excursion
|
||||
(if (org-at-heading-p) (org-outline-level)
|
||||
(org-next-visible-heading 1)
|
||||
(if (org-at-heading-p) (org-outline-level) 1))))
|
||||
(org-next-visible-heading 1)
|
||||
(if (org-at-heading-p) (org-outline-level) 1)))
|
||||
(new-level (or force-level (max previous-level next-level)))
|
||||
(shift (if (or (= old-level -1)
|
||||
(= new-level -1)
|
||||
|
|
|
@ -9372,6 +9372,24 @@ CLOSED: %s
|
|||
(org-test-with-temp-text "* H1\n<point>\n** H2"
|
||||
(org-paste-subtree nil "* Text")
|
||||
(buffer-string))))
|
||||
;; When point is on heading at bol, insert before
|
||||
(should
|
||||
(equal "* Text\n* H1\n** H2"
|
||||
(org-test-with-temp-text "<point>* H1\n** H2"
|
||||
(org-paste-subtree nil "*** Text")
|
||||
(buffer-string))))
|
||||
;; When point is on heading but not at bol, use smallest level among
|
||||
;; current heading and next, inserting before the next heading.
|
||||
(should
|
||||
(equal "* H1\ncontents\n** Text\n** H2"
|
||||
(org-test-with-temp-text "* H1<point>\ncontents\n** H2"
|
||||
(org-paste-subtree nil "*** Text")
|
||||
(buffer-string))))
|
||||
(should
|
||||
(equal "*** H1\ncontents\n*** Text\n* H2"
|
||||
(org-test-with-temp-text "*** H1<point>\ncontents\n* H2"
|
||||
(org-paste-subtree nil "* Text")
|
||||
(buffer-string))))
|
||||
;; When on an empty heading, after the stars, deduce the new level
|
||||
;; from the number of stars.
|
||||
(should
|
||||
|
|
Loading…
Reference in New Issue