我正在尝试使用基于当前缓冲区的文件类型(但不仅仅是文件类型)设置的字符串编写一个 elisp 函数。例如,我将如何替换它:
(defun run ()
(interactive)
(async-shell-command (concat "./" (file-name-base buffer-file-name)))
)
用这个:
(defun run ()
(interactive)
(async-shell-command (concat cmd (file-name-base buffer-file-name)))
)
其中 cmd = "./"
我试过使用 defvar,但每当我尝试使用字符串时都会出错,但是这个:
(defvar flowers)
(set 'flowers '(rose)
让 flycheck 给我错误,“global/dynamic var ‘flowers’ 缺少前缀”(它在我的函数中不起作用)。
最佳答案
所以我只能假设您实际上没有尝试运行自己的代码?您正在尝试对最初不起作用的内容进行修改。
只需用变量名替换字符串,但不要(在任何一种情况下)在括号中,因为 ("foo")
和 (someVariable)
都是调用函数的尝试。
(defun foo ()
(interactive)
(shell-command "foo")
)
(defun foo ()
(interactive)
(shell-command someVariable)
)
关于emacs - 如何在 elisp 中用变量替换硬编码字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492448/