最近挺忙的,但是越忙,心里越慌,就越想要做一些与正事无关的事……
今天心血来潮,花了两三个小时写了一个 org-roam 里面用的交叉引用。
原因是如果使用 org-transclusion 来搞交叉引用, bug 真的超级多,用起来有一些麻烦,所以就自己写了一下,不知道是不是已经有实现了。
思路是这样的:把 transclusion 当作一个专门用来放交叉引用内容的标签,然后实现了对指定 org-roam 节点内容的提取与更新( get, set ), 以及对当前文件的对应标题的 entry 的内容的提取与更新( get, set )。最后利用这四个函数,又实现了从交叉引用的项同步到 org-roam 节点以及从 org-roam 节点同步到交叉引用的项,还实现了对二者进行对比的函数。
这个代码还不是很完善。我在 insert-transclude 里面,给 property 加上了 original-heading 和 original-id 的值,还没有用上,可能后面会更新,这样就可以交叉引用的标题与原始标题不一致了。
还有就是,我只实现了对一整个文件所有的交叉引用一起更新,没有实现仅对当前位置的 entry 进行更新,也留待后面来搞。
如果有同好想用这个包,注意先测试一下,这个代码我今天刚写,虽然我自己试用是没有问题,但我不确定会不会在某些情况导致数据丢失。
除了交叉引用相关的函数以外,还有一个 org-roam-more-capture-under-node 我也放里面了。内容也很简单,就是选择一个 org-roam 节点,在其下面创建一个新的节点。这个函数对我是挺有用的,因为我把 org-roam 当作一个素材库,有了这个函数,就可以方便地对素材进行分类。
希望大家用得愉快。