17

有什么方法可以将我自己的完成添加到(interactive)elisp 函数中?理想情况下,我想向它传递一个字符串列表,它将从中完成制表符。我知道使用(interactive "D"),(interactive "F")或者(interactive "b")分别给你完成目录、文件和缓冲区名称,但是更一般的输入呢?

4

1 回答 1

33

参数interactive不必是字符串;如果不是,则对其进行评估以获取要传递给函数的参数列表。因此,您可以执行以下操作:

(defun insert-foo-bar-or-baz (arg)
  (interactive
   (list
    (completing-read "Choose one: " '("foo" "bar" "baz"))))
  (insert arg))
于 2010-03-04T20:58:37.920 回答