2012-02-24 15 views
17

È molto bello avere ghci integrato con Emacs in modalità infernale-haskell: questo aggiunge una meravigliosa possibilità di navigare rapidamente per compilare posizioni di errore, ispezionare interattivamente tipi, definizioni, ecc. Tuttavia, la caratteristica principale che mi manca in questa configurazione è l'incapacità di usare il completamento della scheda ghci, che è abbastanza utile per completare le funzioni disponibili da moduli importati, estensioni della lingua e comandi ghci.completamento della scheda ghci in modalità haskell

Suppongo che questa funzionalità possa essere implementata in modo piuttosto banale passando il carattere "TAB" raw al processo ghci, leggendo il suo output indietro e incollando il risultato nel buffer Emacs. Nota che non ho lavorato con "comint-mode" in Emacs, quindi potrei sbagliarmi completamente.

Infine, siamo arrivati ​​alla mia domanda : perché questa funzione non è presente in haskell-mode? Ci sono problemi evidenti di cui non sono a conoscenza, è difficile da attuare, o è solo dovuto ad alcune ragioni storiche? (come "nessuno si è preso la briga di scriverlo"). Avete qualche soluzione alternativa per il problema? (eccetto eseguire ghci all'esterno di Emacs)

risposta

6

Controlla ghc-mode che si basa sulla modalità haskell e aggiunge completamento automatico e alcune altre funzionalità.

C'è anche una modalità haskell-emacs, che è diversa dalla modalità haskell. Ha anche il completamento automatico. Anche se era bizzarro e non sempre funzionava quando l'ho provato.

+1

Ho appena installato ghc-mod, mi piace il suo completamento automatico e l'integrazione con hlint (anche se devo giocarci un po 'per sintonizzarmi sui miei bisogni). Ma ancora, il suo completamento automatico non funziona correttamente nel buffer ghci: per quanto ho capito la funzione "ghc-complete" analizza il buffer corrente (per trovare le importazioni) e il buffer ghci non è quello che si aspetta. Quindi suggerisce solo alcune parole chiave e ignora qualsiasi ": m + Data.List" che scrivo nel buffer ghci. –

+0

Ho anche provato "haskell-emacs" da Chris Done, ma non è abbastanza documentato in questi giorni (dato che è ancora in beta), quindi ho deciso di tornare un po 'più tardi. –

Problemi correlati