Quando non esiste un supporto specifico per la lingua, è possibile utilizzare i tag . Questo è un meccanismo di completamento generico.
generare un file TAGS
, che contiene un elenco di identificatori e dove sono definiti. Emacs viene fornito con il programma etags
per farlo in molte lingue, ma non Haskell; ghc viene fornito con hasktags
.
Caricare il file TAGS
con M-x visit-tags-table
.
I tag non dipendono dal contesto, quindi suggeriranno indiscriminatamente tipi, valori, costruttori, ecc. Ovunque. Inoltre, non forniranno funzionalità avanzate come la semplice visualizzazione del tipo di valore. I più importanti comandi tag sono:
M-TAB
(complete-symbol
) completa un identificatore in base alla lista caricata di tag.
M-.
(find-tag
) va al punto in cui è definito l'identificatore nel punto, aprendo il file contenente, se necessario.
M-*
(pop-tag-mark
) torna a dove eri prima M-.
.
M-x tags-apropos
mostra un elenco di identificatori che corrispondono a un regexp.
Per ulteriori informazioni, consultare "Tag" nel manuale di Emacs.
Per un meccanismo ancor più crudo, ma completamente automatica, c'è il dinamica abbrev caratteristica. C-M-/
(dabbrev-completion
) cerca nella maggior parte dei buffer aperti per un completamento; questo è completamente indipendente dalla lingua, quindi troverà anche parole in stringhe, commenti, qualsiasi cosa. M-/
(dabbrev-expand
) è simile, ma si completa direttamente alla corrispondenza più vicina prima del punto.
Sai com'è andato avanti il lavoro su CEDET per Haskell? –