2015-11-03 72 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

當我測試了我的功能時,我想我包括了括號......我回頭看了看,結果我沒有。 –