我是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