交互式"r"elisp与另外的args一起定义?

bea*_*rdc 3 emacs elisp interactive function

是否有可能使用代码"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...))
Run Code Online (Sandbox Code Playgroud)

看一下它说的文档

'r':点和标记,作为两个数字参数,最小的第一个.这是唯一一个指定两个连续参数而不是一个参数的代码字母.没有I/O.

我不确定'No I/O'和'两个连续的参数'是否意味着它需要2个且只有2个参数(即,仅限于区域的起点和终点作为args).虽然它允许我用额外的参数来评估和运行defun,但Emacs似乎忽略了它.

谢谢.

Tho*_*mas 7

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...))
Run Code Online (Sandbox Code Playgroud)

M-x describe-function interactive 为您提供更多信息.