Function 互动式;r";elisp defun是否具有其他参数?
是否可以使用代码“r”编写一个具有附加可选参数的交互式defun(这样它可以在所选区域内执行操作,但使用另一个参数)?我想要如下内容:Function 互动式;r";elisp defun是否具有其他参数?,function,emacs,elisp,interactive,Function,Emacs,Elisp,Interactive,是否可以使用代码“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...)) 看看上面写的
(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
我不确定“无I/O”和“两个连续参数”是否意味着它接受2个且仅接受2个参数(即,将区域的起点和终点限制为args)。虽然它允许我使用一个附加参数来计算和运行defun,但Emacs似乎忽略了它
谢谢。函数可以通过两种方式调用:
- 交互:这是用户调用命令时发生的情况,例如,当命令已绑定到某个键时
- From lisp:从另一个lisp函数调用函数时。e、 g.
(r 100 200 t)
nil
)
没有I/O意味着它不会提示用户输入(就像它请求文件名时那样)
如果您希望函数在区域处于活动状态时的行为有所不同,可以要求函数
(use-region-p)
使具有交互性
请求多个参数,用换行符分隔它们。例如,如果要将第三个参数绑定到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...))
M-x description function interactive
为您提供了更多信息