我正在尝试创建一个将所选区域缩进 4 个空格的命令。
适当的命令是:C-u 4 C-x <TAB>
, 当 C-u 是“通用参数”命令和 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))
关于Emacs:尝试运行交互式功能时参数数量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44433763/