Emacs:尝试运行交互式函数时参数数量错误

时间:2017-06-08 10:54:29

标签: emacs lisp elisp

我正在尝试创建一个命令,将所选区域缩进4个空格。

适当的命令是:C-u 4 C-x <TAB>,当Cu是“universal-argument”命令的快捷方式而C-x <TAB>indent-rigidly的快捷方式时,所以我写了这个函数:

(defun my-tab ()
  (interactive)
  (universal-argument 4)
  (indent-rigidly))

但是当我尝试运行该函数时(使用M-x my-tab),我收到此错误:

  

参数数量错误:(0。0),1

有什么问题?

谢谢!

1 个答案:

答案 0 :(得分:7)

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