[英]Elisp interactive function name
我正在嘗試使用交互式功能名稱功能。 在emacs lisp手冊上說:
'a'函數名稱(即滿足fboundp的符號)。 現有,完成,提示。
所以我嘗試了一個小的測試代碼:
(defun testfun1 ()
(message "hello, world!"))
(defun test (abcd)
(interactive "aTheme name: ")
(abcd))
Emacs給出錯誤信息,
測試:Symbol的函數定義無效:abcd
我試圖用fboundp測試abcd,它返回t。 因此,我對如何在交互中使用'a'選項感到困惑。 任何身體都能給些提示嗎?
您的功能test
其參數abcd
作為函數接收,但是您不能僅通過將引用它的符號放在要評估的列表的第一位置來調用函數。 由於Emacs Lisp是Lisp-2 ,因此對交互式查詢提供的功能的引用存儲在符號abcd
的值槽中 ,而不是在其功能槽中 。 清單的評估規則,例如
(abcd)
如果您的對象是符號,則需要查看第一個對象的功能槽 。 相反,如果您希望調用符號值槽中引用的函數,則需要funcall
函數 :
(funcall abcd)
那就是說:“取abcd
,從其值槽中獲取值,並提供它的功能,請在此處調用它,就像我們在該符號的功能槽或列表中的第一個位置引用該功能時一樣直接引用功能對象。”
這是一個類似問題的答案,其中的參考文獻有助於您進一步探索。
這應該做到這一點:
(defun test (abcd)
(interactive "aTheme name: ")
(call-interactively abcd))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.