mirror of
https://github.com/org-roam/org-roam
synced 2025-08-01 12:17:21 -05:00
(feat): ensuring that :ref info capture in all cases (#2079)
Let's assume we're evaluating the following region: ```elisp (org-roam-capture- :node (org-roam-node-create :title "Org Roam Homepage") :info '(:ref "https://orgroam.com") :props '(:immediate-finish nil)) ``` Prior to this commit, if you did not require "org-roam-protocol" then `org-roam-capture-` would ignore the `:info '(:ref "https://orgroam.com")` parameter. Once you required "org-roam-protocol" then the callback hooks that process `:info`'s `:ref` will fire regardless of whether it comes from org-roam-protocol. After this commit, you no longer need to require "org-roam-protocol" to ensure that you capture an `:info`'s `:ref`. Why is this useful? When I'm reading through my elfeed RSS feed, I want to capture an article. I could use the org-roam-protocol to do this, but that seems a bit unnecessary given that I'm already in Emacs. Closes org-roam/org-roam#2078
This commit is contained in:
@ -679,6 +679,24 @@ the current value of `point'."
|
||||
(goto-char (org-entry-end-position))))))))
|
||||
(point))
|
||||
|
||||
;;; Capture implementation
|
||||
(add-hook 'org-roam-capture-preface-hook #'org-roam-capture--try-capture-to-ref-h)
|
||||
(defun org-roam-capture--try-capture-to-ref-h ()
|
||||
"Try to capture to an existing node that match the ref."
|
||||
(when-let ((node (and (plist-get org-roam-capture--info :ref)
|
||||
(org-roam-node-from-ref
|
||||
(plist-get org-roam-capture--info :ref)))))
|
||||
(set-buffer (org-capture-target-buffer (org-roam-node-file node)))
|
||||
(goto-char (org-roam-node-point node))
|
||||
(widen)
|
||||
(org-roam-node-id node)))
|
||||
|
||||
(add-hook 'org-roam-capture-new-node-hook #'org-roam-capture--insert-captured-ref-h)
|
||||
(defun org-roam-capture--insert-captured-ref-h ()
|
||||
"Insert the ref if any."
|
||||
(when-let ((ref (plist-get org-roam-capture--info :ref)))
|
||||
(org-roam-ref-add ref)))
|
||||
|
||||
;;;; Finalizers
|
||||
(add-hook 'org-capture-prepare-finalize-hook #'org-roam-capture--install-finalize-h)
|
||||
(defun org-roam-capture--install-finalize-h ()
|
||||
|
Reference in New Issue
Block a user