如何用elisp中的变量替换硬编码字符串?

时间:2015-11-03 06:07:56

标签: emacs lisp elisp

我正在尝试编写一个带有字符串的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'缺少前缀”(并且它在我的函数中不起作用)。

1 个答案:

答案 0 :(得分:2)

所以我只能假设你没有真正尝试运行自己的代码?你试图修改一些不起作用的东西。

只需用变量名替换字符串,但在括号中(在任何一种情况下),因为("foo")(someVariable)都是调用a的尝试功能

(defun foo ()
  (interactive)
  (shell-command "foo")
  )

(defun foo ()
  (interactive)
  (shell-command someVariable)
  )