如何在 emacs elisp .dir-locals.el 中连接字符串?

How to concat string in emacs elisp .dir-locals.el?

((c++-mode
    (rmsbolt-command . "/path/to/project/build_asm_for_rmsbolt.sh")

我想将变量 rmsbolt-temp-dir 作为参数传递给 build_asm_for_rmsbolt.sh 脚本,所以想法是连接字符串,然后 rmsbolt-command 应该如下所示:

"/path/to/project/build_asm_for_rmsbolt.sh /tmp/rmsbolt-123as"

那么如何将字符串变量连接到 .dir-locals.el 中的命令?

我试过:

((c++-mode
   (rmsbolt-command . ((eval . (concat "/path/to/project/build_asm_for_rmsbolt.sh" rmsbolt-temp-dir))))))

但这不起作用。 Elisp有点难,我正在努力边学边说。

在 dir-local 规范中 eval 是一个伪变量,因此您可以将其用作变量名,然后关联的值就是被评估的 elisp。尝试这样的事情:

((c++-mode
  (rmsbolt-temp-dir . "/tmp/rmsbolt-123as")
  (eval . (setq-local rmsbolt-command
                      (concat "/path/to/project/build_asm_for_rmsbolt.sh "
                              (shell-quote-argument rmsbolt-temp-dir))))))