我试图创建一个命令,将选定区域缩进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)时,会出现以下错误:
参数数目错误:(00),1个
怎么了?
谢谢!

最佳答案

如果查看indent-rigidlyC-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))

10-08 14:32