解决org-roam-buffer不会自动刷新的问题

缘起

正常情况下,光标在node时,执行 org-roam-buffer-toggle 时,右侧会出现 backlink 的 buffer。此时如果光标移动到另一个node时,右侧的 backlink buffer应该会自动刷新,显示当前node的backlink。但我的系统没有自动刷新。

解决

到org-roam的论坛去提了问:https://org-roam.discourse.group/t/org-roam-buffer-do-not-refresh-automaticly/2873/1 又是热心的nobiot回复了我,虽然他的回答没有直接解决我的问题,但是在他的启发和帮助下,我自己找到了问题的解决办法。

每个org文件都会有一个基于文件的变量: post-command-hook 。正常情况下,应该会包含 org-roam-buffer--redisplay-h t 如果有个值,那么是会自动刷新的。如果没有自动刷新的话,那么造成原因主要是 org-roam-db-autosync-mode 这个模式没有启动。

但我的情况是的确没有 org-roam-buffer--redisplay-h t 这个值,但是 mode 是启动的。

后来在尝试过程中突然发现我的 daily 文件是支持自动刷新的,查看了下 post-command-hook ,果然 redisplay-h t

后来还想过会不会是因为我设置了不同roam directory的原因。

最终发现,原来是因为我打开org mode时自动打开了GTD.org这个文件,而那个时候org-roam还没有启动,在org-roam启动后,再打开org文件就一切正常了。

海上一民工