解决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文件就一切正常了。