2
如何在nadvice.el中处理参数列表?
在回答有关新建议系统的另一个问题之后: 在旧式中advice.el,可以操纵建议函数的参数列表的各个成员,而不必对未操纵的那些成员做出任何断言。例如,以下建议: (defadvice ansi-term (around prompt-for-name last) (let ((name (read-from-minibuffer "Tag: "))) (and (not (string= name "")) (ad-set-arg 1 (concat "Term: " name))) ad-do-it)) 允许为ansi-term调用提供(可选)缓冲区名称参数,同时ansi-term仍会通过根据其自身的交互形式进行提示来获取其第一个参数。 (供以后参考,ansi-term的签名为(PROGRAM &optional BUFFER-NAME),其交互形式提示PROGRAM带有多个可能的默认值,但对BUFFER-NAME无效。) 我不确定是否可以在中进行nadvice.el。如果是这样,我不确定该怎么做。我发现了几种替换建议函数的参数列表的方法。 例如,来自* info *(elisp)咨询组合: `:filter-args' Call FUNCTION first and use the result (which should be a list) as the new arguments to …