【问题标题】:Create abbreviation for function containing arguments为包含参数的函数创建缩写
【发布时间】:2014-10-20 05:56:34
【问题描述】:

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

("abbrev_name" "" function_name nil)

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

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

然后我仍然可以使用“M-x function_name”来调用它,但我无法使用缩写来调用它(我收到一条与错误数量的参数有关的错误消息)。我可以在这里使用解决方法吗?

【问题讨论】:

  • @Dan 我试着澄清一下。如果还不清楚,请告诉我。
  • 当 abbrev 的钩子是一个命令而不仅仅是一个函数时,也许这值得一个 M-x report-emacs-bug 要求使用 call-interactively 的缩写。

标签: emacs elisp abbreviation


【解决方案1】:

Emacs 使用 0 个参数调用您的函数

代替

("abbrev_name" "" function_name nil)

使用这个:

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

这样,emacs 会提示你在 minibuffer 中插入字符串。

【讨论】:

    【解决方案2】:

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

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

    现在,我认为您正在寻找的是skeletons。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-23
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多