![](/img/trans.png)
[英]ELISP interactive function with both prefix argument and user input as optional arguments
[英]Interactive “r” elisp defun with additional args?
是否有可能使用代碼“r”編寫一個具有附加可選參數的交互式defun(以便它在所選區域內執行某些操作,但使用另一個參數)? 我想要以下內容:
(defun my-function (start end &optional arg)
"Do something with selected region"
(interactive "r")
(if arg
(setq val arg)
(setq val 2))
(do things...))
看一下它說的文檔
'r':點和標記,作為兩個數字參數,最小的第一個。 這是唯一一個指定兩個連續參數而不是一個參數的代碼字母。 沒有I / O.
我不確定'No I / O'和'兩個連續的參數'是否意味着它需要2個且只有2個參數(即,僅限於區域的起點和終點作為args)。 雖然它允許我用額外的參數來評估和運行defun,但Emacs似乎忽略了它。
謝謝。
要使interactive
請求多個參數,請使用換行符分隔它們。 例如,如果您希望將第三個參數綁定到prefix參數的值,請按以下方式定義您的函數:
(defun my-function (start end &optional arg)
"Do something with selected region"
(interactive "r\np")
(if arg
(setq val arg)
(setq val 2))
(do things...))
Mx describe-function interactive
為您提供更多信息。
可以通過兩種方式調用函數:
(r 100 200 t)
。 在您的情況下,您必須確保參數與交互式規范匹配,在這種情況下,它必須接受兩個參數。 交互式調用時不會使用第三個(因此它將獲得值nil
)。
NO I / O意味着它不會提示用戶輸入(就像它要求輸入文件名時那樣)。
如果您希望函數在區域處於活動狀態時采取不同的行為,則可以詢問函數(use-region-p)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.