È una modalità maggiore che non vi servirà a niente se non avete un compilatore o un interprete per il linguaggio di programmazione Scheme. Averlo non è così frequente come, ad esempio, avere un compilatore C, ma sta diventando molto comune, quindi ne parleremo lo stesso. Molto di ciò che vale per la modalità Scheme vale anche per la modalità Lisp, se preferite scrivere in Lisp .
Beh, per farla complicata, Emacs ha due modalità Scheme diverse, perché ci sono due diverse correnti di pensiero. Quella che descriverò si chiama cmuscheme , e poi, nella sezione sulla personalizzazione di Emacs, parlerò di come ci possano essere due modalità Scheme diverse, e come usarle. Per adesso non vi preoccupate se quello che succede sul vostro Emacs non corriponde perfettamente a quello che dico qui. Un editor personalizzabile è per forza imprevedibile, e non c'è niente da fare! In Emacs potete far girare un processo Scheme interattivo, con il comando M-x run-scheme. Questo comando crea un buffer con nome ``*scheme*'', che contiene il normale prompt di Scheme. Al prompt potete inserire espressioni Scheme, premere 4#4, e Scheme le valuterà e mostrerà la risposta. Poi, per poter interagire con il processo Scheme, potete inserire tutte le definizioni di funzioni e le applicazioni che volete. Probabilmente avete già scritto del codice sorgente Scheme in qualche file, e sarebbe più facile lavorare su quel file e mandare le definizioni al buffer del processo di Scheme, se necessario. Se i file sorgente finisce per ``.ss'' o ``.scm'', verrà aperto automaticamente in modalità Scheme quando lo trovate con C-x C-f. Se per qualche ragione non viene aperto in modalità Scheme, si può fare a mano con il comando M-x scheme-mode. Questa modalità scheme-mode non è la stessa cosa del buffer in cui gira il processo Scheme; piuttosto, il codice sorgente che si trova in scheme-mode ha dei comandi speciali per comunicare con il buffer del processo.
Se vi mettete all'interno di una definizione di funzione nel buffer del codice sorgente Scheme e digitate C-c C-e, quella definizione verrà ``inviata'' al buffer del processo -- esattamente come se ce l'aveste digitata dentro. C-c M-e invia la definizione e poi vi porta nel buffer del processo per fare il lavoro interattivo. C-c C-l carica un file di codice Scheme (funziona sia per il buffer del processo che per il buffer del codice sorgente). Inoltre, come per le altre modalità di programmazione, digitare 77#77 in qualsiasi punto di una linea di codice fa rientrare correttamente la linea.
Se siete al prompt del buffer del processo, potete usare M-p e
M-n per spostarvi tra i comandi che avete dato in precedenza
(storia di input). Così, se state facendo il debug della
funzione `rotate', e l'avete già applicata a degli argomenti
del buffer del processo, così:
129#129
potete richiamare questo comando digitando M-p al prompt.
Non ci dovrebbe essere bisogno di ridigitare espressioni lunghe al
prompt di Scheme -- abituatevi ad usare la storia di input e
risparmierete un sacco di tempo.
Emacs conosce un bel po' di linguaggi di programmazione: C, C++, Lisp
e Scheme sono solo alcuni. In genere, sa come fare i rientri delle
linee in modo intuitivo.