|
@@ -3637,27 +3637,25 @@ in-between, if any, are siblings of the element at point."
|
|
|
(defun org-element-swap-A-B (elem-A elem-B)
|
|
|
"Swap elements ELEM-A and ELEM-B.
|
|
|
|
|
|
-Leave point at the end of ELEM-A.
|
|
|
-
|
|
|
-Assume ELEM-A is before ELEM-B and that they are not nested."
|
|
|
+Leave point at the end of ELEM-A."
|
|
|
(goto-char (org-element-property :begin elem-A))
|
|
|
- (let* ((beg-B (org-element-property :begin elem-B))
|
|
|
- (end-B-no-blank (save-excursion
|
|
|
- (goto-char (org-element-property :end elem-B))
|
|
|
- (skip-chars-backward " \r\t\n")
|
|
|
- (forward-line)
|
|
|
- (point)))
|
|
|
- (beg-A (org-element-property :begin elem-A))
|
|
|
- (end-A-no-blank (save-excursion
|
|
|
- (goto-char (org-element-property :end elem-A))
|
|
|
- (skip-chars-backward " \r\t\n")
|
|
|
- (forward-line)
|
|
|
- (point)))
|
|
|
- (body-A (buffer-substring beg-A end-A-no-blank))
|
|
|
- (body-B (buffer-substring beg-B end-B-no-blank))
|
|
|
- (between-A-B (buffer-substring end-A-no-blank beg-B)))
|
|
|
- (delete-region beg-A end-B-no-blank)
|
|
|
- (insert body-B between-A-B body-A)
|
|
|
+ (let* ((beg-A (org-element-property :begin elem-A))
|
|
|
+ (end-A (save-excursion
|
|
|
+ (goto-char (org-element-property :end elem-A))
|
|
|
+ (skip-chars-backward " \r\t\n")
|
|
|
+ (point-at-eol)))
|
|
|
+ (beg-B (org-element-property :begin elem-B))
|
|
|
+ (end-B (save-excursion
|
|
|
+ (goto-char (org-element-property :end elem-B))
|
|
|
+ (skip-chars-backward " \r\t\n")
|
|
|
+ (point-at-eol)))
|
|
|
+ (body-A (buffer-substring beg-A end-A))
|
|
|
+ (body-B (delete-and-extract-region beg-B end-B)))
|
|
|
+ (goto-char beg-B)
|
|
|
+ (insert body-A)
|
|
|
+ (goto-char beg-A)
|
|
|
+ (delete-region beg-A end-A)
|
|
|
+ (insert body-B)
|
|
|
(goto-char (org-element-property :end elem-B))))
|
|
|
|
|
|
(defun org-element-backward ()
|
|
@@ -3706,8 +3704,8 @@ Move to the previous element at the same level, when possible."
|
|
|
(org-element-backward)
|
|
|
(let ((prev-elem (org-element-at-point)))
|
|
|
(when (or (org-element-nested-p elem prev-elem)
|
|
|
- (and (eq (car elem) 'headline)
|
|
|
- (not (eq (car prev-elem) 'headline))))
|
|
|
+ (and (eq (org-element-type elem) 'headline)
|
|
|
+ (not (eq (org-element-type prev-elem) 'headline))))
|
|
|
(goto-char pos)
|
|
|
(error "Cannot drag element backward"))
|
|
|
;; Compute new position of point: it's shifted by PREV-ELEM
|
|
@@ -3727,8 +3725,8 @@ Move to the previous element at the same level, when possible."
|
|
|
(goto-char (org-element-property :end elem))
|
|
|
(let ((next-elem (org-element-at-point)))
|
|
|
(when (or (org-element-nested-p elem next-elem)
|
|
|
- (and (eq (car next-elem) 'headline)
|
|
|
- (not (eq (car elem) 'headline))))
|
|
|
+ (and (eq (org-element-type next-elem) 'headline)
|
|
|
+ (not (eq (org-element-type elem) 'headline))))
|
|
|
(goto-char pos)
|
|
|
(error "Cannot drag element forward"))
|
|
|
;; Compute new position of point: it's shifted by NEXT-ELEM
|