【发布时间】:2010-12-21 07:27:20
【问题描述】:
我是 Emacs 新手,正在尝试编写一些 Emacs Lisp 函数。
我想写一个函数,它接受两个参数并且可以处理交互。但是,其中一个参数是布尔值——如果我可以使用 (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 中通常使用前缀参数(
(interactive "sSome text:\nP"),没有额外的提示)。这提供了更好的用户体验(在最常见的情况下少了一个提示,更符合基本的 Emacs 命令)。在命令之前按C-u或M-1任何其他前缀参数组合以传递t,不要这样做以传递nil。安排nil为普通情况。 -
有趣。谢谢,吉尔斯! (你应该用它和它的代码来回答,这样我就可以接受它作为答案。)