Emacs:尝试 运行 交互式函数时参数数量错误
Emacs: Wrong number of arguments when trying to run an interactive function
我正在尝试创建一个将所选区域缩进 4 个空格的命令。
合适的命令是:C-u 4 C-x <TAB>
,当C-u是"universal-argument"命令的快捷方式,C-x <TAB>
是indent-rigidly
的快捷方式,所以我写了这个功能:
(defun my-tab ()
(interactive)
(universal-argument 4)
(indent-rigidly))
但是当我尝试 运行 函数时(使用 M-x my-tab
)我得到这个错误:
Wrong number of arguments: (0 . 0), 1
有什么问题?
谢谢!
如果您查看 indent-rigidly
(C-h f indent-rigidly
) 的文档,您会注意到它需要 3-4 个参数:
(indent-rigidly START END ARG &optional INTERACTIVE)
因此,您还应该为其提供开始和结束位置。您还应该正常提供 ARG,而不是使用 universal-argument
.
(defun my-tab (start end)
(interactive (if (use-region-p)
(list (region-beginning) (region-end))
;; Operate on the current line if region is not to be used.
(list (line-beginning-position) (line-end-position))))
(indent-rigidly start end 4))
我正在尝试创建一个将所选区域缩进 4 个空格的命令。
合适的命令是:C-u 4 C-x <TAB>
,当C-u是"universal-argument"命令的快捷方式,C-x <TAB>
是indent-rigidly
的快捷方式,所以我写了这个功能:
(defun my-tab ()
(interactive)
(universal-argument 4)
(indent-rigidly))
但是当我尝试 运行 函数时(使用 M-x my-tab
)我得到这个错误:
Wrong number of arguments: (0 . 0), 1
有什么问题?
谢谢!
如果您查看 indent-rigidly
(C-h f indent-rigidly
) 的文档,您会注意到它需要 3-4 个参数:
(indent-rigidly START END ARG &optional INTERACTIVE)
因此,您还应该为其提供开始和结束位置。您还应该正常提供 ARG,而不是使用 universal-argument
.
(defun my-tab (start end)
(interactive (if (use-region-p)
(list (region-beginning) (region-end))
;; Operate on the current line if region is not to be used.
(list (line-beginning-position) (line-end-position))))
(indent-rigidly start end 4))