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

标签 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’ 缺少前缀”(它在我的函数中不起作用)。

最佳答案

所以我只能假设您实际上没有尝试运行自己的代码?您正在尝试对最初不起作用的内容进行修改。

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

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

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

关于emacs - 如何在 elisp 中用变量替换硬编码字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492448/

相关文章:

emacs - 在 Emacs 中禁用斜体?

emacs - 在 Emacs 中动态显示/隐藏菜单栏

emacs - (declare (indent *)) 是如何工作的?

Emacs 在特定列号自动换行

emacs - 口齿不清错误 : Origin 9614327 is not in the stack of NIL

Scheme 帮助——如何调用一个函数

emacs - 如何定义参数数量可变的函数?

macos - Clojure 的 Emacs CIDER repl - .profile 中的环境变量丢失

Emacs - Ubuntu 初始化

lisp - 冒泡排序不返回排序数组