From c128693b93c11d6a820441368a0421188c3a1d86 Mon Sep 17 00:00:00 2001 From: Chris Barrett Date: Tue, 6 Sep 2022 11:34:03 +1200 Subject: [PATCH] Teach node deletion how to handle nodes not at top-level --- lisp/org-roam-rewrite.el | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lisp/org-roam-rewrite.el b/lisp/org-roam-rewrite.el index 6367fd6..d776360 100644 --- a/lisp/org-roam-rewrite.el +++ b/lisp/org-roam-rewrite.el @@ -130,9 +130,25 @@ It is called with the new node as the current buffer." (save-buffer)) (defun org-roam-rewrite--delete-node-kill-buffer (node) - (when-let* ((buf (find-buffer-visiting (org-roam-node-file node)))) - (kill-buffer buf)) - (delete-file (org-roam-node-file node))) + (cond + ((zerop (org-roam-node-level node)) + (when-let* ((buf (find-buffer-visiting (org-roam-node-file node)))) + (kill-buffer buf)) + (delete-file (org-roam-node-file node))) + (t + (let ((buffer-visiting-p (find-buffer-visiting (org-roam-node-file node)))) + (org-with-point-at (org-roam-node-marker node) + (goto-char (point-min)) + (when (search-forward-regexp (rx-to-string `(and + bol + (* space) ":ID:" + (* space) + ,(org-roam-node-id node)))) + (let ((message-log-max)) + (org-cut-subtree))) + (save-buffer) + (unless buffer-visiting-p + (kill-buffer))))))) ;;;###autoload (defun org-roam-rewrite-rename (node new-title)