Emacs Elisp:在交互命令中询问是或否
我是Emacs新手,正在尝试编写一些Emacs Lisp函数 我想写一个函数,它有两个参数,可以处理交互。但是,其中一个参数是布尔值-如果我可以使用Emacs Elisp:在交互命令中询问是或否,emacs,lisp,elisp,Emacs,Lisp,Elisp,我是Emacs新手,正在尝试编写一些Emacs Lisp函数 我想写一个函数,它有两个参数,可以处理交互。但是,其中一个参数是布尔值-如果我可以使用(y-or-no-p),那就太完美了,但是(交互式)似乎没有字符代码 有什么想法吗 更新:我正在使用GNU Emacs 23 另外,到目前为止,我的函数是这样的: (defun foo (str bool) (interactive "sSome text: \nsDo the thing?") (some-func str) (if b
(y-or-no-p)
,那就太完美了,但是(交互式)
似乎没有字符代码
有什么想法吗
更新:我正在使用GNU Emacs 23
另外,到目前为止,我的函数是这样的:
(defun foo (str bool)
(interactive "sSome text: \nsDo the thing?")
(some-func str)
(if bool (some-other-func str)))
不太清楚你在问什么,但我找不到一个叫做y-or-no-p的函数。你是说是还是不是 这似乎符合我的期望。啊,找到了
(defun foo (str bool)
(interactive
(list (read-string "Some text: ")
(y-or-n-p "Do the thing? ")))
(some-func str)
(if bool (some-other-func str)))
y-or-no-p
是y-or-no-p
的较短版本,至少在Emacs 23中是这样。y-or-n-p
(n
,而不是no
)要求用户键入y
或n
,而yes-or-no-p
要求输入完整的单词(yes
或no
)。显然是打字错误。有关y-or-no-p
的问题。当函数采用布尔参数时,在Emacs中通常使用前缀参数((交互式“sSome text:\nP”)
,没有额外提示)。这提供了更好的用户体验(在最常见的情况下,提示更少,与基本Emacs命令更一致)。在传递t
命令之前,按C-u
或M-1
任何其他前缀参数组合,不要传递nil
。将nil
作为常见情况进行安排。谢谢你,吉尔!(你应该用它和代码来回答,这样我就可以接受这个答案。)