2010-03-04 12 views
12

Esiste un modo per aggiungere la mia conclusione a una funzione elisp (interactive)? Idealmente, mi piacerebbe passargli una lista di stringhe da cui sarebbe stato completato. So che l'utilizzo di (interactive "D"), (interactive "F") o (interactive "b") ti danno il completamento per le directory, i file e buffer nomi, rispettivamente, ma per quanto riguarda gli ingressi più generali?Aggiunta di completamento a (interattivo)

risposta

24

L'argomento di interactive non deve essere una stringa; se non lo è, viene valutato per ottenere l'elenco degli argomenti da passare alla funzione. Quindi, puoi fare qualcosa del genere:

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

/facepalm Ora che ho visto un esempio, quel commento nella voce 'M-x apropos' per' interactive' ha perfettamente senso. – Inaimathi