添加完成(交互式)

Ina*_*thi 16 emacs elisp interactive

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

Sea*_*ean 29

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

(defun insert-foo-bar-or-baz (arg)
  (interactive
   (list
    (completing-read "Choose one: " '("foo" "bar" "baz"))))
  (insert arg))
Run Code Online (Sandbox Code Playgroud)