Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding Completion to (interactive)

Is there any way to add my own completion to an (interactive) elisp function? Ideally, I'd like to pass it a list of strings that it would tab-complete from. I know that using (interactive "D"), (interactive "F") or (interactive "b") give you completion for directories, files and buffer-names respectively, but what about more general inputs?

like image 937
Inaimathi Avatar asked Mar 04 '10 20:03

Inaimathi


1 Answers

The argument to interactive need not be a string; if it isn't, it's evaluated to get the list of arguments to pass to the function. Therefore, you can do something like this:

(defun insert-foo-bar-or-baz (arg)
  (interactive
   (list
    (completing-read "Choose one: " '("foo" "bar" "baz"))))
  (insert arg))
like image 192
Sean Avatar answered Nov 08 '22 10:11

Sean