Добавление завершения к (интерактивному) - PullRequest
16 голосов
/ 04 марта 2010

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

1 Ответ

29 голосов
/ 04 марта 2010

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

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