I am currently setting up a GTD workflow and I want to use roam as my knowledge base.
The idea is to capture everything into my inbox and in case it should be kept for reference I want to refile it into roam.
From what I have seen most people capture directly into roam.
What would be the best practice to refile from a gtd inbox. Or is it strictly advised to separate TODO inbox from reference inbox?
I am trying to write a function to refile a tree from my regular inbox.org to my roam directory.
It should either refile the tree into an already existing file or create a new file from the tree.
I am a total noob with elisp. Started writing elisp yesterday. That’s how far I got so far:
Basically I copied most of the code from org-roam.el > org-roam-find-file ()
;; initial prompt should be the text of the tree (defun stfl/refile-to-roam2 (&optional initial-prompt) (interactive) (let* ((completions (org-roam--get-title-path-completions)) (title-with-tags (org-roam-completion--completing-read "File: " completions :initial-input initial-prompt)) (res (cdr (assoc title-with-tags completions))) (file-path (plist-get res :path))) ;; if we have a file-path -> call org-refile (if file-path (let ((org-refile-targets ((file-path :maxlevel . 4)))) ;; FIXME file-path seems to be the incorrect type (call-interactively 'org-refile)) ;; if we can't find a file call a org-roam-capture ;; TODO this does not yet actually refile the subtree (let ((org-roam-capture--info `((title . ,title-with-tags) (slug . ,(funcall org-roam-title-to-slug-function title-with-tags)))) (org-roam-capture--context 'title)) (setq org-roam-capture-additional-template-props (list :finalize 'find-file)) (org-roam-capture--capture)) )))
I ran this through the debugger and getting file-path works and is type string.
org-refile-targets requires some other type?
The problem is not actually related to roam but org-refile-targets and my elisp noob’ness but I hope someone can direct help me out…