更新: 支持搜索 alias 里的内容(但一个文件依旧只显示一条),输入框中逗号后的内容自动解释为 tag。
正文:
由于 snails 支持多 backends, 在不同的 tag 下同时搜索 roam 的 notes 非常方便,再加上 org-roam 默认提供的 ivy backend 实在太简陋了(把所有 title 和 tags 全混在一起,相同 file 会生成多个 titles),就写了个 snails 版的。目前我创建了四五个 backends, 每个 backend 对应一个搜索的 tag ,这样就不用再像 ivy 里面那样手动输入 tag 了。效果:
具体用法看 github,目前还非常简陋。最近空闲不多加上人懒,估计以满足自己需求为主。
另外附赠一个直接打开 roam notes 里面链接的函数,因为我把所有链接都做成了单独的一个 note,这样就知道这个链接被哪些其他 note 引用了,比如:
#+title: Org-roam User Manual
#+roam_tags: link
#+roam_key: https://www.orgroam.com/manual.html#Installation
用下面这个函数就可以直接从浏览器打开,而不是进入这个文件。
(defun weiss-roam-find-file (filename &optional wildcards)
"DOCSTRING"
(interactive
(find-file-read-args "Find file: "
(confirm-nonexistent-file-or-buffer)))
(if (string-prefix-p "Ʀlink:" (file-name-nondirectory filename))
(with-temp-buffer
(insert-file-contents filename)
(re-search-forward "#\\+roam_key: ")
(browse-url (buffer-substring-no-properties (+ (line-beginning-position) 12) (line-end-position)))
)
(find-file filename wildcards)
)
)
在创建 backend 的 candidate-do
里面这么写就能用
:candidate-do
(lambda (candidate)
(weiss-roam-find-file candidate))
效果: