4
我正在開發一個Emacs Lisp包,我想添加的一個特定功能是能夠在運行中定義函數 - 它們將遵循相同的命名約定,但這將幫助我不必手動聲明每一個。Emacs Lisp - 聲明具有變量/變量名稱的函數
舉個例子,我有一個名爲Exec中的基本功能,這需要一個參數是可執行推出名稱:
(def exec (cmd)
(async-shell-command cmd "buffer"))
與此同時,在這種特殊情況下,我知道了我將要使用的可執行文件列表 - 或者更準確地說,我知道如何獲取它們的列表,因爲它可能隨時間而改變。所以我想這樣做,因爲可執行以下列表的內容:
("a" "b" "c")
是遍歷他們和每一個創建函數的名稱exec- [執行] - EXEC-A,exec- b,exec-c。
不幸的是,defun不會評估NAME參數,所以我不能動態地創建函數名。
PS。 exec命令本身已經足夠好了 - 它使用completing-read
以及提供的可執行文件列表,但我認爲上面的內容會很好。
這是絕對精彩,太感謝你了:d。需要學習更多的Emacs Lisp我認爲:)。 – ppb
你也可以使用宏來生成函數,但是這個defalias/lambda配對非常簡潔! – phils
@Stefan,你在選擇defalias + lambda的時候考慮過了什麼? –