mirror of
https://github.com/chrisbarrett/nursery
synced 2025-09-04 15:03:32 -05:00
Run a hook when we remove a node
This commit is contained in:
@@ -64,6 +64,14 @@ It is called with the new node as the current buffer."
|
|||||||
:group 'org-roam-rewrite
|
:group 'org-roam-rewrite
|
||||||
:type 'hook)
|
:type 'hook)
|
||||||
|
|
||||||
|
(defcustom org-roam-rewrite-node-removed-functions nil
|
||||||
|
"Hook functions run after a node has been removed.
|
||||||
|
|
||||||
|
It is called with a plist, containing the following attributes
|
||||||
|
from the original node: :title, :level, :file, :id"
|
||||||
|
:group 'org-roam-rewrite
|
||||||
|
:type 'hook)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defun org-roam-rewrite--set-title-keyword (text)
|
(defun org-roam-rewrite--set-title-keyword (text)
|
||||||
@@ -141,25 +149,30 @@ It is called with the new node as the current buffer."
|
|||||||
(save-buffer))
|
(save-buffer))
|
||||||
|
|
||||||
(defun org-roam-rewrite--delete-node-kill-buffer (node)
|
(defun org-roam-rewrite--delete-node-kill-buffer (node)
|
||||||
(cond
|
(let ((level (org-roam-node-level node))
|
||||||
((zerop (org-roam-node-level node))
|
(file (org-roam-node-file node))
|
||||||
(when-let* ((buf (find-buffer-visiting (org-roam-node-file node))))
|
(id (org-roam-node-id node)))
|
||||||
(kill-buffer buf))
|
(cond
|
||||||
(delete-file (org-roam-node-file node)))
|
((zerop level)
|
||||||
(t
|
(when-let* ((buf (find-buffer-visiting file)))
|
||||||
(let ((buffer-visiting-p (find-buffer-visiting (org-roam-node-file node))))
|
(kill-buffer buf))
|
||||||
(org-with-point-at (org-roam-node-marker node)
|
(delete-file file))
|
||||||
(goto-char (point-min))
|
(t
|
||||||
(when (search-forward-regexp (rx-to-string `(and
|
(let ((buffer-visiting-p (find-buffer-visiting file)))
|
||||||
bol
|
(org-with-point-at (org-roam-node-marker node)
|
||||||
(* space) ":ID:"
|
(goto-char (point-min))
|
||||||
(* space)
|
(when (search-forward-regexp (rx-to-string `(and
|
||||||
,(org-roam-node-id node))))
|
bol
|
||||||
(let ((message-log-max))
|
(* space) ":ID:"
|
||||||
(org-cut-subtree)))
|
(* space)
|
||||||
(save-buffer)
|
,id)))
|
||||||
(unless buffer-visiting-p
|
(let ((message-log-max))
|
||||||
(kill-buffer)))))))
|
(org-cut-subtree)))
|
||||||
|
(save-buffer)
|
||||||
|
(unless buffer-visiting-p
|
||||||
|
(kill-buffer))))))
|
||||||
|
(run-hook-with-args 'org-roam-rewrite-node-removed-functions
|
||||||
|
(list :title (org-roam-node-title node) :id id :file file :level level))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-roam-rewrite-rename (node new-title)
|
(defun org-roam-rewrite-rename (node new-title)
|
||||||
|
Reference in New Issue
Block a user