検索したNodeのROAM_REFSを直接ブラウザで開く Emacs OrgMode OrgRoam
Org-roamで、検索したNodeを開かずに ROAM_REFS に指定されたURLに直接飛びたいことがある。
org-roam-node-refs を使って取得したREFSを browse-url に渡せばいけそうだ。
(browse-url (car (org-roam-node-refs (org-roam-node-read))))
このままだとREFSを持っていないNodeがたくさん出てくるので、
関係ないNodeを除外するための FILTER-FN を引数に持たせてやるといい。
(defun my/org-roam-filter-has-refs (node)
(when-let* ((refs (org-roam-node-refs node))
(url (car refs))
(http? (string-prefix-p "http" url)))
t))
さらに、 org-roam-node-display-template を設定すればURLも検索の対象にできます。
下記の設定では20文字しか表示されませんが、見えない部分もちゃんと検索対象になってます。
(defun my/org-roam-node-open-ref ()
(interactive)
(let ((org-roam-node-display-template "${title:*} ${refs:20} ${tags:10}"))
(browse-url
(car (org-roam-node-refs
(org-roam-node-read
""
#'my/org-roam-filter-has-refs))))))
これでブラウザのブックマークいらずですね。