解决由于延迟启动插件造成的问题

缘起

在查看 Emacs-News 的时候突然看到 https://github.com/org-roam/org-roam/wiki/User-contributed-Tricks#showing-node-hierarchy 可以在 org-roam-node-find 时,同时查到node的层次结构。涉及的配置如下:

(cl-defmethod org-roam-node-hierarchy ((node org-roam-node))
  (let ((level (org-roam-node-level node)))
    (concat
     (when (> level 0) (concat (org-roam-node-file-title node) " > "))
     (when (> level 1) (concat (string-join (org-roam-node-olp node) " > ") " > "))
     (org-roam-node-title node))))

(setq org-roam-node-display-template "${hierarchy:*} ${tags:20}")

我将上述配置贴到 scratch 里运行后,完美实现,然后我就将这个配置放到我的配置里去了。然后重启Emacs后就报错了。

解决

报错的内容是 没有找到 org-roam-node 。删除上述配置后,重启Emacs,直接运行上述配置,同样报错。很快了解到,造成这个问题的原因是这个配置要在 org-roam 运行后,再运行。但是因为 use-package 我的设置是都 defer 了。所以在启动Emacs的时候并不会启动roam。

造成这个问题的原因是我对于 use-package 并不熟悉,并没有将新的配置放到 use-package 的括号里,研究了下 :config 的配置,应该是把原来放在 use-package 外面的配置全部放到 :config 下面就可以了。这样就是在启动 org-roam 后,再启动上述配置。

海上一民工