如何在 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))))))
((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))))))