Подтвердить что ты не робот

Добавление завершения к (интерактивному)

Можно ли добавить мое собственное завершение в функцию (interactive) elisp? В идеале я бы хотел передать ему список строк, из которых он будет заполнен. Я знаю, что использование (interactive "D"), (interactive "F") или (interactive "b") дает вам завершение для каталогов, файлов и имен буферов соответственно, но как насчет более общих входов?

4b9b3361

Ответ 1

Аргумент interactive не обязательно должен быть строкой; если это не так, он оценил, чтобы получить список аргументов, передаваемых функции. Поэтому вы можете сделать что-то вроде этого:

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