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

标签 emacs lisp elisp

我正在尝试创建一个将所选区域缩进 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/

相关文章:

emacsclient --create-frame 打开 *scratch* 即使设置了初始缓冲区选择

emacs - 覆盖 Emacs Lisp 中的函数

emacs - 如何将 emacs 缓冲区移动到新窗口?

linux - EMACS 24 Arch linux 不支持 256 色

python - 当文件没有 .py 扩展名时为 python 运行 flymake

emacs - 在基于 Solaris 的远程服务器上找不到退出状态 "test -e ... "

lisp - 将二进制字符串转换为数字

emacs - 典型的 Lisp 缩进约定背后的规则是什么?

clojure - 惯用的方式使用 for,同时仍然保持高性能

regex - elisp 中的匹配字符串不返回与字符串匹配匹配的字符串