自上次练手了两个 package(macfa-moe、 trans-mode) 之后已经过去好几个月。
这次练手的也是一个小项目,我一直在用 org-roam 管理笔记,个人有多目录的需求。故而有了 GitHub - Imymirror/mrds-mode: simple multiple roam directories support(MRDS). ,主要是提供了一个函数用以在笔记目录之间切换。
自上次练手了两个 package(macfa-moe、 trans-mode) 之后已经过去好几个月。
这次练手的也是一个小项目,我一直在用 org-roam 管理笔记,个人有多目录的需求。故而有了 GitHub - Imymirror/mrds-mode: simple multiple roam directories support(MRDS). ,主要是提供了一个函数用以在笔记目录之间切换。
我有几个目录,感觉用 .dir-locals.el
就够了。
((nil . ((eval . (setq-local
org-roam-directory (expand-file-name (locate-dominating-file
default-directory ".dir-locals.el"))))
(eval . (setq-local
org-roam-db-location (expand-file-name "org-roam.db"
org-roam-directory))))))
学习的一下,我使用的denote,也有切换目录的需求。
感觉还能在每次 switch-db 之后给 org-roam-node-read 改个 prompt, 方便查看当前所在db。
效果大概是这样 (此时位置是子目录"testing/"):
我比较懒,直接使用了 @twlz0ne 大佬的 psearch.el 替换了 org-roam-node-read 里的 prompt 设置。
(psearch-patch org-roam-node-read
(psearch-replace
'`(or ,p1 ,p2)
'`(or ,p1 (concat
"("
(upcase
(file-relative-name
mrds--roam-current-directory
mrds--roam-root-directory))
") "
,p2))))
恩,够用就好。我现在有 85 个目录。有些目录嵌套 2、3 层深。
mrds-mode 能不能将根目录也切换成其他路径下目录?
写个checkout? 仅供参考,未做细致测试。
(setq my/-root-list '("~/roam1/" "~/dropbox/vulpea/"))
(defun my/-switch-root-directory (roamdir)
"Switch to other roam tree."
(interactive
(list (completing-read
"Choose Roam Root: "
my/-root-list)))
(setq mrds--roam-root-directory roamdir))
你要的功能好像是变更根目录路径。目前最简单的方式是手动执行一下 :
(setq mrds--roam-root-directory (file-truename "/path/to/roam-root-directory/"))
一般 roam 根目录只有一个,并不会不断变换根目录。如果你能说明真正刚需的场景,后续我可以考虑加一个函数来变更根目录。
我的使用场景是这样的: 阅读的时候想将org-roam的笔记文件放在各自的目录下,如:/Users/one/Documents/书籍/书籍-类型1/书籍A/;/Users/one/Documents/书籍/书籍-类型2/书籍B/。 但是如果是其他项目如编程/Users/one/download/编程/python/算法/A,会要切换到新的根目录。 我试了一下,如果已经设置根目录为/Users/one/Documents/书籍/书籍-类型1/书籍A/。并且在这个目录下建立org-roam的笔记文件。
(setq mrds--roam-root-directory (file-truename "/Users/one/Documents/书籍/书籍-类型1/书籍A/"))
如果想将上面的根目录改为/Users/one/Documents/时,改为如下:
(setq mrds--roam-root-directory (file-truename "/Users/one/Documents/"))
用M+ mrds/roam-switch-directory,emacs会很卡,不知道是不是文件路径太多?
我的笔记目前 1200 多,目录超过 80 个,不会卡。不过第一次切换到某一个目录的时候,org-roam 需要生成 db,这一步需要等待其完成,会卡顿。以后切换就正常了。这是 org-roam 本身的问题。
另外,关于切换根目录的不必要,我有这么一个思路 : 何不把需要切换的文件夹统一放到某一个根目录下管理,再将 mrds--roam-root-directory
设置成这个根目录。
这种操作有没有可能通过异步完成?交给(start-process … … … …)
我最早使用d12frosted的配置,他同步的工作交给外部,通过eldev这个包裹进行。但我当时没有用得很深入,机制还没搞清楚。