【发布时间】:2019-12-28 20:12:07
【问题描述】:
在 ELISP 中,interactive codes 的文档提到:
P -- 原始形式的 arg 前缀。不做 I/O。 ... s -- 任意文本,在 minibuffer 中读取并作为字符串返回...提示。
我假设我可以编写一个带有可选前缀参数的函数,如下所示:
(defun some-function (&optional prefix)
(interactive "P")
...
)
或带有用户输入的函数,如:
(defun some-function (user-argument)
(interactive "sProvide an argument: ")
...
)
但不是两者兼而有之。然后我找到了 Org-mode 函数 org-match-sparse-tree,我可以用 C-u C-c \ 调用它,其中前缀参数将匹配限制为打开 org-mode 标题,并且仍然提示我进行匹配。源代码如下,我找不到变量match是如何赋值的:
(defun org-match-sparse-tree (&optional todo-only match)
"..."
(interactive "P")
(org-agenda-prepare-buffers (list (current-buffer)))
(let ((org--matcher-tags-todo-only todo-only))
(org-scan-tags 'sparse-tree (cdr (org-make-tags-matcher match))
org--matcher-tags-todo-only)))
这个函数如何同时接受前缀参数和用户输入?
【问题讨论】:
标签: function arguments lisp elisp optional