我是Emacs的新手,正在尝试编写几个Emacs Lisp函数。Elisp:在交互式命令中询问是或否
我想写一个函数,需要两个参数,并可以处理交互。然而,其中一个参数是一个布尔值 - 如果我可以使用(y-or-no-p)
,它会是完美的,但(interactive)
似乎没有用于此的字符代码。
任何想法?
更新:我使用GNU Emacs的23
而且,这里就是我的函数看起来像至今:
(defun foo (str bool)
(interactive "sSome text: \nsDo the thing?")
(some-func str)
(if bool (some-other-func str)))
当一个函数需要一个布尔参数,通常在Emacs使用前缀参数为('(互动“sSome文本:\ NP”)',没有多余的提示)。这提供了更好的用户体验(在最常见的情况下,少一个提示,与基本的Emacs命令更一致)。在传递't'的命令前按'C-u'或'M-1'任何其他前缀参数组合,不要通过'nil'。安排'无'是常见的情况。 – Gilles 2010-12-21 20:58:04
有趣。谢谢,吉尔斯! (你应该回答这个问题和它的代码,所以我可以接受这个答案。) – 2010-12-23 18:30:57