在 Elisp 中调试 "Error setting nil"
Debugging "Error setting nil" in Elisp
我的 Emacs 配置文件中有这段 Elisp 代码:
(when (string= (getenv "TERM") "screen")
(custom-set-variables
(custom-set-faces
'(font-lock-comment-face ((((class color)
(min-colors 8)
(background dark))
(foreground red)))))))
当我启动 Emacs 时,我从这段代码中得到 Error setting nil: (setting-constant nil)
。虽然它似乎工作正常,但我知道这可能是某些隐藏问题的迹象。我不太了解 Elisp,因此我需要帮助。任何人都可以解释这个错误并告诉我如何消除它吗?我正在使用 Emacs 24.3.1
恐怕这有很多错误。
custom-set-faces
和custom-set-variables
是两种不同的形式;你不应该在另一个里面调用一个。
您不应该在条件表达式中包装对这些函数的 或 的调用。当您使用 customize
界面时,这两种表单都会自动生成和更新,如果它们不是您的 init 文件中的顶级表单,Emacs 将找不到它们。这意味着它会在需要时为每个文件创建一个 附加 副本。这导致...
这些表单不能有多个实例。事实上,Emacs 在生成表单时包含以下警告注释:
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
现在你正在鼓励这种情况发生。
我的 Emacs 配置文件中有这段 Elisp 代码:
(when (string= (getenv "TERM") "screen")
(custom-set-variables
(custom-set-faces
'(font-lock-comment-face ((((class color)
(min-colors 8)
(background dark))
(foreground red)))))))
当我启动 Emacs 时,我从这段代码中得到 Error setting nil: (setting-constant nil)
。虽然它似乎工作正常,但我知道这可能是某些隐藏问题的迹象。我不太了解 Elisp,因此我需要帮助。任何人都可以解释这个错误并告诉我如何消除它吗?我正在使用 Emacs 24.3.1
恐怕这有很多错误。
custom-set-faces
和custom-set-variables
是两种不同的形式;你不应该在另一个里面调用一个。您不应该在条件表达式中包装对这些函数的 或 的调用。当您使用
customize
界面时,这两种表单都会自动生成和更新,如果它们不是您的 init 文件中的顶级表单,Emacs 将找不到它们。这意味着它会在需要时为每个文件创建一个 附加 副本。这导致...这些表单不能有多个实例。事实上,Emacs 在生成表单时包含以下警告注释:
;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right.
现在你正在鼓励这种情况发生。