已切换到org-roam v2,但是每次开启emacs后都要手动 M-x org-roam-setup 一次才能用

org-roam 相关设置如下:

(use-package! org-roam
  :after org
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n g" . org-roam-graph)
         ("C-c n i" . org-roam-node-insert)
         ("C-c n c" . org-roam-capture)
         ("C-c n T" . org-roam-dailies-capture-today))
  :config
  (org-roam-setup))

M-x org-roam-setup 之前调用任何 org-roam 相关命令,都会报类似:

org-roam-db-sync: Symbol’s function definition is void: org-roam--list-all-files 

这样的错误,手动 org-roam-setup 之后一切正常,请教下,这个设置有什么问题么?

谢谢。

1 个赞

因为在 (org-roam-setup) 之前下面几个命令是能用的:

org-roam-node-find
org-roam-node-insert
org-roam-capture
org-roam-ref-find

你可以先在第一次先用这个几个命令,就会自动激活(org-roam-setup)

你也可以让 (org-roam-setup) 在 Emacs 启动的时候执行一次,不过这样的话会增加 Emacs 启动的时间。

我一般启动 emacs 后会以 org-roam-dailies-capture-today 开始,那要这样的话,就在在此命令之前手动执行一次 org-roam-setup了?

目前是的,或者你到上游去反馈一下这个问题。

可以自己改一下,再绑个键

(defun org-roam-capture-today ()
  "Startup org-roam capture today with setup."
  (interactive)
  (org-roam-setup)
  (org-roam-dailies-capture-today)
) 
1 个赞

因为:bind 会触发延迟加载,导致:config无法被执行,可以加上:demand t 强制加载

啊!跟这个有关?

果然如此! :+1: :+1:

改成这样就可以了:

(use-package! org-roam
  :after org
  :bind (("C-c n l" . org-roam-buffer-toggle)
         ("C-c n f" . org-roam-node-find)
         ("C-c n g" . org-roam-graph)
         ("C-c n i" . org-roam-node-insert)
         ("C-c n c" . org-roam-capture)
         ("C-c n T" . org-roam-dailies-capture-today))
  :init
  (org-roam-setup))
2 个赞