如何找到在universal-arguments
之前用于调用命令的numeric-argument
的数量。
例如,如何在以下(错误的)函数中区分arg1
和arg2
?
(defun my-func (&optional arg1 arg2)
(interactive "P\nP")
(message "arg1: %S, arg2: %S, value: %S"
arg1 arg2 (prefix-numeric-value current-prefix-arg)))
用例,根据先前的universal-arguments
的数目,例如,透明地将数字前缀值传递给建议的命令。 dired
将以下2
文件中的以下2
文件重命名为 C-u 2 或使用 C-u C-u 2 重命名其他Dired缓冲区。
遵循以下建议的做法,但实际上将dired-do-rename
正确地传递给1
而不是4
或(define-advice dired-do-rename (:around (fun &rest args) "defer-dwim")
(let ((dired-dwim-target (equal '(4) current-prefix-arg)))
(apply fun (list (max 1 (prefix-numeric-value current-prefix-arg))))))
。
prefix-command-preserve-state-hook
我看到有一个 <servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>java.enablingKeyWordSearch.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
,但这似乎需要付出更多的努力才能实现。
答案 0 :(得分:0)
对不起,但是您的问题对我来说还不清楚-因此可能无法回答。
您说:“如何在数字参数之前找到用于调用命令的通用参数的数量。”我会回答的。
在"P"
字符串规范中写入interactive
的次数无关紧要。每次的值都是相同的,并且多次出现这种情况并不对应于C-u
的多次使用。
因此(interactive "P\nP\nP")
只会产生三个具有相同值的参数-值的使用是一次使用前缀参数键序列,而无论该序列是C-u
,C-9
,M--3
,C-u 360
或C-u C-u C-u
。
如果您想让函数区分C-u
,C-u C-u
和C-u C-u C-u
,则需要测试原始前缀参数("P"
为{ {1}}。
interactive
对应于原始前缀arg C-u
,即仅包含数字4的列表。(4)
对应于原始前缀arg C-u C-u
。(16)
对应于原始前缀arg C-u C-u C-u
。 (64)
返回4; (prefix-numeric-value '(4))
返回16;并且(prefix-numeric-value '(16))
返回64。
请参见Elisp手册的节点Prefix Command Arguments。
您可以使用以下命令进行练习,以查看在键入不同的prefix-arg键序列时产生的原始和数字前缀参数是什么:
(prefix-numeric-value '(64))
您的其余问题对我来说完全不清楚。我不明白您要如何处理“ (defun foo (arg narg)
(interactive "P\np")
(message "ARG: %S, NARG: %S" arg narg))
。如果我是对的,请考虑发布两个独立的问题:一个询问如何区分dired-do-rename
与C-u
,以及另一个询问关于C-u C-u
的问题(什么?)。