如何在elisp中正确使用setq?

How to correctly use setq in elisp?

在我的 emacs 配置中,我尝试使用以下代码为 jedi 配置项目根目录:

(setq jedi:server-args '("--sys-path" (projectile-project-root)))

抛出一个:

deferred error : (wrong-type-argument stringp (projectile-project-root))

(我有 (setq debug-on-error t) 但回溯什么也没显示)

如果我像这样硬编码路径,一切都会按预期工作:

(setq jedi:server-args '("--sys-path" "/some/path"))

为了给这一行一些上下文,这里是周围的代码:

(add-hook 'python-mode-hook 'jedi:setup)
(setq debug-on-error t)
(defun jedi-config:setup-server-args ()
  (message (format "Configuring current project dir: %s"
           (projectile-project-root)))
  (setq jedi:server-args '("--sys-path" (projectile-project-root))))

(add-hook 'python-mode-hook
      'jedi-config:setup-server-args)

如何使用 projectile 变量为 jedi 设置服务器参数?

我终于想通了——真的很简单:

(setq jedi:server-args (list "--sys-path" (projectile-project-root)))