为包含参数的函数创建缩写

时间:2014-08-26 19:29:12

标签: emacs elisp abbreviation

当我使用define-skeleton定义一个函数时,我能够在我的缩写表中创建它的缩写,

("abbrev_name" "" function_name nil)

但是,如果我使用defun(需要争论),例如,

(defun function_name (arg)
   ""
   (interactive "sThe argument is")
   (insert arg)
 )

然后我仍然可以使用" M-x function_name"但是我无法使用缩写来调用它(我得到一条错误消息,其中包含错误的参数数量)。我可以在这里使用解决方法吗?

2 个答案:

答案 0 :(得分:3)

Emacs用0参数调用你的函数

而不是

("abbrev_name" "" function_name nil)

使用它:

("abbrev_name" "" (lambda () (call-interactively 'function_name)) nil)

这样,emacs会提示您将字符串插入迷你缓冲区。

答案 1 :(得分:0)

让我们从您的实际问题开始:

(defun function-name ()
   (let ((arg (read-from-minibuffer ....)))
     ...))

现在,我认为你要找的是skeletons