求助:defcustom 设置字符串

打算使用 defcustom 设置一个字符串变量,默认值是 org-publish 的文件夹。 该文件夹的路径正常情况下可以通过:

(plist-get (cdr (car org-publish-project-alist)) :publishing-directory)

获取。 所以我使用以下代码:

(defcustom popweb-org-roam-link-index-path (format "file:%s" (plist-get (cdr (car org-publish-project-alist)) :publishing-directory))
  "Default org publishing-directory"
:type '(string))

打算将 file: 和 文件夹字符串连接起来。

但是打开 emacs 后,popweb-org-roam-link-index-pat 的值如下:

popweb-org-roam-link-index-path is a variable defined in ‘popweb-org-roam-link.el’.
Its value is "file:nil"
Original value was 
"file:~/Library/Mobile Documents/iCloud~com~appsonthemove~beorg/Documents/org-notes/public/"

  You can customize this variable.

Documentation:
Default org publishing-directory

[back]

Original value 是正常的,后面就变成 file:nil ,不知道为什么,网络找了一圈,无解?

可能你是在 org-publish-project-alistnil 的时候就执行了 defcustom

1 个赞

应该是开始时有正常值所以 Original value 是正常的,后面不知道为何变成 nil 了。

1 个赞
(with-eval-after-load 'org-publish
  (custom-reevaluate-setting 'popweb-org-roam-link-index-path))