2015-11-03 102 views
-2

我正在尝试使用基于当前缓冲区的文件类型设置的字符串(但不仅仅是文件类型)来编写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给我的错误,“全球/动态无功'花缺乏PREF ix“(并且它不起作用)。

+0

这是我见过的最不明确的问题之一。看起来好像您正在从内存中重新创建代码,而不是从Emacs进行复制。您已完全替换原始代码。您的示例变量无处存在于您的代码中,因此无法知道您正在尝试执行什么操作。如果您需要帮助,请复制并粘贴您实际尝试使用的代码,并使您的示例相关。 – phils

回答

2

所以我只能假定你没有真的尝试运行你自己的代码?你正在尝试做一个首先不起作用的东西的修改版本。

只是变量名称替换字符串,但在括号(在任何情况下),因为("foo")(someVariable)都试图通话功能

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

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

当我测试了我的功能时,我想我包括了括号......我回头看了看,结果我没有。 –

相关问题