Last update: 2023-11-22

検索した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))))))

これでブラウザのブックマークいらずですね。