2010-03-04 69 views
12

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

回答

24

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

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

/facepalm现在我已经看到了一个例子,'M-x apropos'条目中的'interactive'的注释非常有意义。 – Inaimathi 2010-03-04 21:29:16