Perché Amo Emacs (di nuovo): Org Mode e Visual Line Mode

Ho iniziato ad usare Emacs quando ero in università. Un volta un mio collega mi disse: "Non ho ancora capito se chi usa emacs è un genio o un folle".(*) Dopo anni di utilizzo, ho dovuto servirmi spesso di Eclipse, ed Emacs è finito nel dimenticatoio. Ho anche provato a sostituirlo con JEdit e VIM, e mi sono sempre pentito. Intendiamoci, VIM è un ottimo editor, ma è forse più complicato di Emacs.

Mi è sempre piaciuto scrivere, e quindi ho finito per servirmi di MS-Word 2010 per i miei racconti, e di Eclipse per sviluppare non solo in Java ma anche in Python, Ruby ecc... Ora ho scoperto che potrei fare tutto, ma veramente tutto questo con Emacs 23... ma andiamo con ordine.

(*) Per i fanatici di VI, la mia battuta preferita è che "VI è stato creato da un pianista mancato" fatta da un mio collega di lavoro nel 2002...

Emacs esiste da un sacco di anni: la prima versione risale addirittura al 1976...Nel 1981 ci ha messo le mani anche il papà di Java, James Gosling. In generale, se sviluppate per un linguaggio X ed esso è minimente diffuso, è probabile che qualcuno abbia scritto una modalità per Emacs prima che un plugin per eclipse. Per fare un esempio, al momento Emacs "è" ancora l'editor di riferimento per Scala

 

Iniziamo citando questo blog,

[...]E negli ultimi anni, Emacs avuto un sacco di cose che sono state semplicemente bizzarramente schifose. Le prime cose che mi vengono in mente:
  • Specifica dei Font  che era stranamente difficile. Impostare i caratteri era impossibile.
  • Nessun word-wrap.
  • Dell'età della pietra set di widget in GNU Emacs. Più ordinato set di widget in XEmacs, + anche se non distintamente GTK.
  • Super-brutto carattere di rendering.
  • Nessun supporto per UTF-8. Più tardi, un supporto [...] attraverso un pacchetto di terze parti.
  • Configurazione del sistema bizzarro.
E se posso aggiungere, supporto debole sotto Microsoft Windows e linguaggio arcano. Per es "Cut Selection" si chiama "kill-region". Poi hanno avuto l'infelice idea di Cusare Ctrl-X come prefisso di molti comandi, mentre per molti Ctrl-X è il classico "Cut".
Queste sono esattamente le cose che mi hanno tenuto lontano da Emacs per quasi sei anni. Ma poi sono accadute delle cose interesssanti:
  1. Nel 2007 è nato Org-Mode
  2. Emacs23 ha finalmente introdotto supporto per UTF-8 e il visual-line-mode, e cioé un wordwrap recente.
  3. Per restare al passo con i tempi, è stato introdotto il dark-room mode per l'editing a pieno schermo.
Per ora parleremo di Org-Mode...

Org Mode

[...][Org Mode] was developed by an astronomer in order to integrate the daily tasks of a scientist: From planning to note-taking to computing to presenting and publishing. The features in Org-mode are not the result of abstract planning by a software design department - they did arise in a years-long interaction between the author and a large group of dedicated users. [..]

Da http://www.nf.mpg.de/orgmode/guest-talk-dominik.html

 

Org Mode  è una estensione per emacs distribuita insieme ad emacs 23. Per provarlo vi suggeriamo però di scaricare l'ultimissima versione dal sito di Org-Mode.
Org Mode è molto interessante perché consente di prendere appunti strutturandoli con heading e subheading.
Org Mode consente di prendere rapidamente appunti, liste di cose da fare (TODO-list) con scadenze, e quindi permette anche di strutturare le attività come un mini microsoft project, integrandosi con le funzionalità di agenda e task scheduling di Emacs.
E' uno strumento molto maturo poiché è stato sviluppato dal 2007
L'aspetto più interessante di Org Mode è che le informazioni sono mantenute in un semplice file di testo, maneggiato attraverso le funzionalità di emacs.
E' possibile creare sezioni ed inserire tag (es work, home, URGENT nell'esempio).
Oltre ai tag, ogni sezioni può avere anche delle proprietà aggiuntive.
La scelta dei tasti e dei menu per manipolare il testo è molto razionale, ed  è possibile espandere/comprimere  e spostare le varie parti del testo in modo rapido e preciso.
Per esempio è molto facile ristrutturare un paragrafo e i suoi sotto elementi, per esempio spostandoli in toto prima o dopo elementi eadiacenti. Ricorda molto la visualizzazione "struttura" di MS Word.
Oltre a ciò org mode ha integrato uno spreadsheet testuale che ricorda un po' multiplan, non è quindi all'avanguardia ma per creare semplici schemi o fare somme di colonne/righe è più che soddisfacente.
A tutto questo si aggiunte la possibilità di poter esportare in pdf, html  e odt i documenti così creati.
Prima di org mode, per esportare un documenti in pdf e html c'erano strade abbastanza tediose: si doveva usare SGML o tecnologie simili. Rispetto ad altri tool simi-javadoc presenti per es in Python o Ruby, org mode ha il vantaggio di essere anche uno strumento di editazione integrato impareggiabile.
In poche parole è possibile inserire (se si vuole) all'interno del documento una serie di configurazione di pubblicazioni, macro, stili e anche eseguire frammenti di codice nei linguaggi di programmazione più disparati (lisp, python, ruby, java, ecc)

 

XML? No Grazie

Abbiamo usato org-mode per creare un piccolo database per un gioco che stiamo sviluppando. Il risultato è strabiliante: le informazioni sono organizzate in modo semplice, ed incredibile a dirsi...i file di org mode sono SEMPLICI FILE DI TESTO!. Nello stesso file ci sono gli appunti sulle regole del gioco, i meta dati e  alcuni elementi di test.
Poiché esistono parecchi parser per org-mode, e poiché il formato testuale è facile da leggere, è stato semplicissimo creare una serie di test di unità per iniziare lo sviluppo del gioco.
Varrebbe la pena installare emacs solo per avere org-mode!

Conclusioni

Emacs è dannatamente complicato, e dopo dieci anni d'uso ammetto di conocerlo un pochino di più.
Ma  è anche documentato bene. Vi basta sapere l'inglese e dopo il lancio seguire le istruzioni.
Vi suggerisco di partire dall'emacs wiki e dalla documentazione di Emacs. Il suo gergo è un po' oscuro, ma è solido come la roccia e organizzato in modo molto razionale.
E ricordate di provare org mode!

Comment by Davide on 2011-08-19 16:14:57

Aggiungerei anche che se si vuole imparare emacs, un ottimo libro e' quello pubblicato dalla O'Relly[1]. Una delle cose che adoro di emacs e' log4j-mode... installalo e non ne potrai fare piu' a meno (M-x log4j-mode, M-x log4j-start-filter, ...)

  1. http://oreilly.com/catalog/9780596006488

Comment by Giovanni Giorgi on 2011-08-20 09:49:27

Grazie del riferimento, penso che varrebbe la pena comperarlo :)

Comment by Celano on 2012-12-28 09:13:00

Ciao, conosceresti per caso un modo di scrivere schedi di lettura per un dottorato in scienze umani? Zotero non mi piace più di tanto, e siccome uso org-mode + latex-mode combinati, pensavo magari di poter scrivere schedi di lettura Celano