Avanti Indietro Indice

3. Modalità di Emacs

Le modalità (mode) di Emacs sono differenti ambienti e funzionalità che potete attivare o disattivare (o personalizzare, ovviamente) per usarle in circostanze diverse. Le modalità sono quello che rende un editor (Emacs) ugualmente utile per scrivere documentazione, programmare in una varietà di linguaggi (C, C++, Perl, Python, Java e molti altri), creare una home page, inviare E-Mail, leggere i newsgroup Usenet, tenere traccia dei vostri appuntamenti e perfino giocare.

Le modalità di Emacs sono semplicemente delle librerie di codice Lisp che estendono, modificano o migliorano Emacs in qualche modo.

3.1 Modalità Primarie vs. Modalità Secondarie

Ci sono fondamentalmente due tipi di modalità disponibili: Primarie (Major) e Secondarie (Minor). La distinzione non è la cosa più facile da afferrare finché non avrete lavorato con un po' di queste, ma proviamo a darne una spiegazione.

In un dato momento può essere attivata solamente una modalità primaria. Invece nello stesso momento possono essere attive molte modalità secondarie. Le modalità primarie tendono ad essere specifiche di un linguaggio o di un compito, mentre le modalità secondarie sono delle utility più piccole e meno specifiche che riguardano molti compiti.

Suona come qualcosa di astratto, quindi proviamo con un esempio. C'è una modalità che io uso abbastanza spesso quando devo scrivere dei vecchi e semplici file di testo. Si chiama text-mode. Questa modalità fu progettata per scrivere testo in forma libera come in un file README. Capisce come identificare parole e paragrafi e in genere si assicura di fare quello che mi aspetto quando uso i normali tasti di navigazione in un documento.

Quando sto scrivendo testo per uso umano, normalmente voglio che abbia un bell'aspetto. Dovrebbe essere allineato in maniera appropriata ad un valore ragionevole e così via. Per abilitare l'allineamento devo solo attivare la modalità secondaria auto-fill. Questo modalità cerca di fare la Cosa Giusta quando continuo a scrivere e raggiungo la fine della riga. Il fatto che sia una modalità secondaria significa che può lavorare con diverse modalità primarie. La mia accezione di ``Cosa Giusta'' da fare quando raggiungo la fine della riga è diversa quando sono in text-mode da quando sono in java-mode, per esempio. Io non voglio che il mio codice Java sia allineato come se fosse testo in inglese. Ma io voglio che i blocchi di commenti nel mio codice Java siano allineati! La modalità auto-fill è intelligente abbastanza da capire il tutto.

Gli autori delle varie modalità di Emacs hanno fatto un ottimo lavoro nell'assicurarsi che funzioni che dovrebbero operare come modalità secondarie siano effettivamente delle modalità secondarie.

Se riguardate il disegno in ASCII della schermata di Emacs, noterete che la linea di modo identifica la/le modalità in cui Emacs si trova. Nell'esempio, era in una modalità chiamata ``Lisp Interaction'' che è la modalità di default. È in realtà utile solamente se state per scrivere codice Lisp. (Ma dato che la maggior parte di Emacs è scritta in Lisp, perché no?)

3.2 Le Modalità di Programmazione

Innanzitutto e molto importante, Emacs è stato elaborato da un programmatore per programmatori. Ci sono modalità di alta qualità disponibili per quasi ogni linguaggio di programmazione più diffuso a cui potete pensare (e perfino per qualcuno non così diffuso). Qui descriverò solo brevemente alcuni di essi.

La maggior parte delle modalità condividono alcune caratteristiche comuni. Normalmente, alcune o tutte delle cose seguenti:

In più, ci sono delle modalità non specifiche di un linguaggio che aiutano per scopi che sono comuni alla programmazione in molti linguaggi. Cose del tipo interfacciamento per il vostro controllo di versione del software, aggiunta automatica di commenti al vostro codice, creazione di Makefile, aggiornamento di Change Logs e così via.

Aggiungendo tutte queste modalità e considerando la maturità e la stabilità del codice di Emacs, questi compete piuttosto bene al paragone con gli Integrated Development Environments (IDE) commerciali sul mercato per linguaggi come C++ e Java. Ed è,ovviamente, gratuito.

C/C++/Java

Dato che la sintassi del C, C++ e Java sono abbastanza simili, c'è una modalità di Emacs che tratta tutti e tre i linguaggi (lo stesso per Objective-C e IDL). È veramente un maturo e completo package ed è incluso nella distribuzione di Emacs. Questa modalità si chiama cc-mode o CC Mode.

Per maggiori dettagli o per scaricare la versione più recente, visitate http://www.python.org/emacs/.

Perl

Ci sono di fatto due modalità per l'editing del codice Perl in Emacs. Il primo si chiama perl-mode (come vi potevate aspettare) e il secondo è cperl-mode. Non ho una buona padronanza di questa storia e del perché ci sono due modalità (i documenti non lo dicono), ma sembrerebbe che perl-mode fosse la modalità originale per editare il codice Perl in Emacs. Sembra avere meno servizi del cperl-mode e manca l'abilità di riconoscere alcuni costrutti estrosi del linguaggio Perl.

Personalmente, io uso e raccomando cperl-mode il quale sembra essere abbastanza attivamente mantenuto ed ha quasi tutte le funzionalità che potrei mai volere. Potete trovare l'ultima release qui: ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs.

Ma non prendete le mie parole come definitive. Provateli entrambi e usate quello che meglio soddisfa le vostre necessità.

Python

Anche per Python (un altro linguaggio di scripting molto popolare) è disponibile una modalità Emacs. Per quel che posso dire io, non è distribuito con GNU Emacs ma è distribuito con XEmacs. Comunque funziona abbastanza bene in ambedue gli editor.

Potete ottenere il python-mode dal sito web ufficiale di Python http://www.python.org/emacs/python-mode/.

Altro

Ci sono tantissime altre modalità di editing disponibili per aiutare i programmatori. Queste modalità aiutano con cose tipo:

E ancora di più. Guardate l'ultima sezione di questo documento per maggiori informazioni per trovare altre modalità e add-in.

3.3 Editoria

Le fantasiose modalità di Emacs non sono limitate solo a quelli che scrivono codice. Anche persone che scrivono documentazione (di qualsiasi tipo) possono beneficiare di un'ampia scelta di modalità di Emacs.

Controllo ortografico (ispell mode)

Gli autori di molti tipi di documenti hanno bisogno di effettuare ogni tanto il controllo ortografico. Se avete GNU ispell installato, potete digitare M-x ispell ed effettuare il controllo ortografico sul buffer corrente. Se ispell trova parole che non conosce, vi avvisa con una lista di possibili rimpiazzi e vi permette di selezionarne uno (o nessuno). Le sue funzionalità equivalgono ai controllori ortografici in molti pacchetti software diffusi, non gratuiti.

HTML (html-helper mode)

Se vi trovate a dover scrivere file HTML una volta ogni tanto (oppure molte volte), potreste provare html-helper-mode. È disponibile da http://www.santafe.edu/~nelson/tools/ oltre alla documentazione ed altro materiale correlato.

Come il suo nome suggerisce, html-helper-mode fornisce molte cose per aiutare quelle persone che ancora scrivono HTML a mano (alla vecchia maniera).

TeX (tex-mode)

Quando state scrivendo documenti in TeX, è spesso di aiuto avere Emacs che aggiunge alcuni colori ed evidenzia le barre inverse, parentesi graffe ed altri caratteri. tex-mode si occupa di questo per voi.

Sebbene non scriva più molto direttamente in TeX, quando l'ho fatto, questa modalità si è rivelata abbastanza utile nel rendere i miei sorgenti in TeX un po' più leggibili.

SGML (sgml-mode)

Il documento che state leggendo è stato scritto in SGML (e probabilmente convertito nel formato in cui lo state leggendo). sgml-mode fornisce tutte le basi per i documenti SGML: validazione, evidenziazione, marcatore avanti, marcatore indietro e molto altro. È una parte standard di Emacs.

3.4 Altre modalità

Ovviamente, ci sono molte altre utili modalità per rendere la vita più facile. Ecco giusto un campione delle più diffuse:

Controllo di versione (vc mode)

La modalità vc si interfaccia con la maggior parte dei più diffusi controllori di versione dell'ultim'ora (RCS, SCCS, CVS) per rendere veramente facile il controllo dei file dentro e fuori, gestire release e così via. È una parte standard di Emacs ed è documentata nella documentazione di Emacs.

Modalità Shell

Perché spostarsi in un'altra finestra X o in una console virtuale solo per far girare pochi comandi della shell? Fatelo da dentro Emacs e evitatevi il problema. :-)

M-x shell lancerà una shell dentro a un buffer di Emacs. Potete fare con questo buffer la maggior parte di quello che potreste fare al prompt di una normale shell (eccetto che lanciare programmi a tutto schermo come vi o pine) poiché Emacs dialoga con la vostra vera shell dietro le quinte.

Anche questa è una parte standard di Emacs, quindi la troverete documentata nella documentazione di Emacs.

Telnet e FTP

Perché spostarsi in un'altra finestra X o in una console virtuale solo per far girare telnet o FTP? Fatelo da dentro Emacs e evitatevi il problema. (Non avete ancora notato il modello?)

Similmente a lanciare una shell all'interno di Emacs, potete fare telnet e ftp. Provate M-x telnet o M-x ftp per sperimentarlo da soli. Vedere la documentazione per tutti i grumosi dettagli.

Man

Perché spostarsi in un'altra finestra X o in una console virtuale solo per leggere una pagina man? Fatelo da dentro Emacs e evitatevi il problema. (Smetto! Lo prometto.)

Similmente a lanciare una shell all'interno di Emacs, potete leggere le pagine man. Provate M-x man per sperimentarlo da soli. Vedere la documentazione per altre informazioni.

Ange-FTP

Citando la documentazione di ange-ftp:

Questo pacchetto tenta di dare accesso a file e directory usando FTP dall'interno di GNU Emacs nel modo più semplice e trasparente possibile. Un sottoinsieme delle comuni routine di gestione dei file sono state estese per interagire con FTP.

Questo significa che potete trattare i file in una macchina remota come se fossero in locale. Quindi se avete bisogno di editare un file su un computer remoto, dite semplicemente a Emacs di aprirlo (usando una sintassi leggermente diversa per il percorso) ed egli si occuperà di tutti i dettagli di collegamento e rintracciamento del file. Dopo, quando salvate il file con C-x C-s, ange-ftp intercetta il salvataggio e scrive il file sulla macchina remota.

La sintassi leggermente diversa per il percorso è qualcosa di simile... Un file chiamato ``miofile'', in una directory ``user'', su una macchina chiamata ``my.host.org'' può essere aperto aprendo (C-x f) il file con:

/user@my.host.org:~user/miofile

Anche questo è parte della distribuzione standard di Emacs, quindi potete trovare la sua documentazione nella documentazione di Emacs.

Grazie a Etienne Grossmann ( etienne@anonimo.isr.ist.utl.pt) per l'esempio sopra riportato.


Avanti Indietro Indice