Improve robustness of note extraction

This commit is contained in:
Chris Barrett
2022-08-25 19:42:51 +12:00
parent ee480c2254
commit aa7360176f

View File

@ -286,27 +286,42 @@ handles file titles, tags and transclusions better."
org-roam-directory))) org-roam-directory)))
(let ((tags (org-get-tags)) (let ((tags (org-get-tags))
(title (org-get-heading)) (title (org-get-heading))
(id (org-id-get-create))) (id (org-id-get-create))
(atomic-change-group (dest-buf (find-file-noselect file-path))
(save-restriction extraction-succeeded-p)
(org-narrow-to-subtree) (unwind-protect
(org-roam-rewrite--apply-when-transclusions-enabled 'org-transclusion-remove-all t)) (atomic-change-group
(org-cut-subtree) (save-restriction
(when org-roam-rewrite-insert-link-after-extraction-p (org-narrow-to-subtree)
(insert (org-link-make-string (format "id:%s" id) (org-link-display-format title))) (org-roam-rewrite--apply-when-transclusions-enabled 'org-transclusion-remove-all t))
(newline)) (org-cut-subtree)
(save-buffer) (save-buffer)
(with-current-buffer (find-file-noselect file-path) (org-roam-db-update-file)
(org-paste-subtree) (when org-roam-rewrite-insert-link-after-extraction-p
(while (> (org-current-level) 1) (org-promote-subtree)) (insert (org-link-make-string (format "id:%s" id) (org-link-display-format title)))
(save-buffer) (newline))
(org-roam-promote-entire-buffer) (with-current-buffer dest-buf
(when-let* ((tags (-difference (-union (org-roam-rewrite--file-tags) tags) (org-paste-subtree)
org-roam-rewrite-extract-excluded-tags))) (while (> (org-current-level) 1) (org-promote-subtree))
(org-roam-rewrite--set-file-tags tags) (save-buffer)
(org-roam-rewrite--apply-when-transclusions-enabled 'org-transclusion-add-all)) (org-roam-promote-entire-buffer)
(save-buffer) (when-let* ((tags (-difference (-union (org-roam-rewrite--file-tags) tags)
(run-hooks 'org-roam-rewrite-node-extracted-hook))))))) org-roam-rewrite-extract-excluded-tags)))
(org-roam-rewrite--set-file-tags tags)
(org-roam-rewrite--apply-when-transclusions-enabled 'org-transclusion-add-all)))
(setq extraction-succeeded-p t))
(with-current-buffer dest-buf
(if extraction-succeeded-p
(save-buffer)
(let ((kill-buffer-query-functions))
(set-buffer-modified-p nil)
(kill-buffer dest-buf)
(when (file-exists-p file-path)
(delete-file file-path))))))
(save-buffer)
(with-current-buffer dest-buf
(run-hooks 'org-roam-node-capture-new-node-hook 'org-roam-rewrite-node-extracted-hook))))))
(provide 'org-roam-rewrite) (provide 'org-roam-rewrite)