Можно ли добавить мое собственное завершение в функцию (interactive)
elisp? В идеале я бы хотел передать ему список строк, из которых он будет заполнен. Я знаю, что использование (interactive "D")
, (interactive "F")
или (interactive "b")
дает вам завершение для каталогов, файлов и имен буферов соответственно, но как насчет более общих входов?
Добавление завершения к (интерактивному)
Ответ 1
Аргумент interactive
не обязательно должен быть строкой; если это не так, он оценил, чтобы получить список аргументов, передаваемых функции. Поэтому вы можете сделать что-то вроде этого:
(defun insert-foo-bar-or-baz (arg)
(interactive
(list
(completing-read "Choose one: " '("foo" "bar" "baz"))))
(insert arg))