【问题标题】:Emacs interactive command getting "wrong number of arguments"Emacs 交互式命令获取“错误数量的参数”
【发布时间】:2015-09-15 07:25:21
【问题描述】:

我的.emacs 文件中有这个功能,我认为以前可以正常工作,但现在不行:

(defun insert-date ()
  (interactive "i")
  (insert (format-time-string "%Y-%m-%d")))

当我发出M-x insert-date 时,Emacs 给出了错误:

call-interactively: Wrong number of arguments: (lambda nil (interactive "i") (insert (format-time-string "%Y-%m-%d"))), 1

我认为interactivei 参数告诉Emacs 忽略任何参数,因为不需要任何参数。阻止我像我认为应该使用的那样使用它的命令有什么问题?

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    texinfo 文档说:

    Just `(interactive)' 表示交互调用时不传递任何参数。

    您可能会混淆一个始终为 nil 且根本没有任何参数的参数。参数i 在您想以交互方式忽略特定参数的情况下很有用,在这种情况下传递nil

    emacs手册中还有更多信息:20.2.1 Using interactive

    【讨论】:

    • IOW,"i" 需要一个参数,而函数不期望/提供一个。
    • 如果您有一个接受三个参数的函数,但您只想以交互方式提示输入两个参数,这将是忽略参数列表中的第三个参数的一种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多