添加完成(交互式)

时间:2010-03-04 20:33:45

标签: emacs elisp interactive

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

1 个答案:

答案 0 :(得分:28)

interactive的参数不必是字符串;如果不是,则评估它以获取要传递给函数的参数列表。因此,您可以这样做:

(defun insert-foo-bar-or-baz (arg)
  (interactive
   (list
    (completing-read "Choose one: " '("foo" "bar" "baz"))))
  (insert arg))