(fix):org-roam-refile: Don't try to refile a node into itself (#1928)

This commit is contained in:
Amir Dekel
2021-10-29 10:07:25 +02:00
committed by GitHub
parent d0fd2c6959
commit 1b221a1d4a

View File

@ -827,48 +827,50 @@ If region is active, then use it instead of the node at point."
(nbuf (or (find-buffer-visiting file) (nbuf (or (find-buffer-visiting file)
(find-file-noselect file))) (find-file-noselect file)))
level reversed) level reversed)
(if regionp (if (equal (org-roam-node-at-point) node)
(user-error "Target is the same as current node")
(if regionp
(progn
(org-kill-new (buffer-substring region-start region-end))
(org-save-markers-in-region region-start region-end))
(progn (progn
(org-kill-new (buffer-substring region-start region-end)) (if (org-before-first-heading-p)
(org-save-markers-in-region region-start region-end)) (org-roam-demote-entire-buffer))
(progn (org-copy-subtree 1 nil t)))
(if (org-before-first-heading-p) (with-current-buffer nbuf
(org-roam-demote-entire-buffer)) (org-with-wide-buffer
(org-copy-subtree 1 nil t))) (goto-char (org-roam-node-point node))
(with-current-buffer nbuf (setq level (org-get-valid-level (funcall outline-level) 1)
(org-with-wide-buffer reversed (org-notes-order-reversed-p))
(goto-char (org-roam-node-point node)) (goto-char
(setq level (org-get-valid-level (funcall outline-level) 1) (if reversed
reversed (org-notes-order-reversed-p)) (or (outline-next-heading) (point-max))
(goto-char (or (save-excursion (org-get-next-sibling))
(if reversed (org-end-of-subtree t t)
(or (outline-next-heading) (point-max)) (point-max))))
(or (save-excursion (org-get-next-sibling)) (unless (bolp) (newline))
(org-end-of-subtree t t) (org-paste-subtree level nil nil t)
(point-max)))) (and org-auto-align-tags
(unless (bolp) (newline)) (let ((org-loop-over-headlines-in-active-region nil))
(org-paste-subtree level nil nil t) (org-align-tags)))
(and org-auto-align-tags (when (fboundp 'deactivate-mark) (deactivate-mark))))
(let ((org-loop-over-headlines-in-active-region nil)) (if regionp
(org-align-tags))) (delete-region (point) (+ (point) (- region-end region-start)))
(when (fboundp 'deactivate-mark) (deactivate-mark)))) (org-preserve-local-variables
(if regionp (delete-region
(delete-region (point) (+ (point) (- region-end region-start))) (and (org-back-to-heading t) (point))
(org-preserve-local-variables (min (1+ (buffer-size)) (org-end-of-subtree t t) (point)))))
(delete-region ;; If the buffer end-up empty after the refile, kill it and delete its
(and (org-back-to-heading t) (point)) ;; associated file.
(min (1+ (buffer-size)) (org-end-of-subtree t t) (point))))) (when (eq (buffer-size) 0)
;; If the buffer end-up empty after the refile, kill it and delete its (if (buffer-file-name)
;; associated file. (delete-file (buffer-file-name)))
(when (eq (buffer-size) 0) (set-buffer-modified-p nil)
(if (buffer-file-name) ;; In this was done during capture, abort the capture process.
(delete-file (buffer-file-name))) (when (and org-capture-mode
(set-buffer-modified-p nil) (buffer-base-buffer (current-buffer)))
;; In this was done during capture, abort the capture process. (org-capture-kill))
(when (and org-capture-mode (kill-buffer (current-buffer))))))
(buffer-base-buffer (current-buffer)))
(org-capture-kill))
(kill-buffer (current-buffer)))))
;;;###autoload ;;;###autoload
(defun org-roam-extract-subtree () (defun org-roam-extract-subtree ()