[英]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.