Introduzione ad Emacs

Leonardo Tamiano

Created: 2021-12-25 sab 02:04

Che cos'è Emacs?

La prima versione pubblica di GNU Emacs (versione 13) fu rilasciata il 20 marzo del 1985 come il primo software del GNU Project, iniziativa fondata da Richard Stallman nel 1978.

A prima vista Emacs può essere descritto come un "text editor molto potente". Emacs infatti nasce per gestire contenuti testuali di ogni natura.

Emacs contiene al suo interno un interprete per il linguaggio elisp (emacs-lisp).


Codice elisp che calcola l' \(n\) esimo numero di Fibonacci.

\[1, \,\,1, \,\,2, \,\,3, \,\,5, \,\,8, \,\,13, \,\,21, \,\,34, \,\,55, \,\,89, \,\,144, \,\,\ldots\]

(defun fib (n)
  (cond ((eq n 1) 1)
        ((eq n 2) 1)
        (t 
         (+ (fib (- n 1))
            (fib (- n 2))))))

\[\begin{split} F_1 &= F_2 = 1 \\ F_n &= F_{n-2} + F_{n-1}, \,\, n \geq 3 \\ \end{split}\]

È proprio l'abilità di eseguire codice elisp (linguaggio Turing-Completo) ciò che rende Emacs estremamente flessibile e potente.

Imparare (bene) Emacs significa principalmente capire come configurarlo in modo da ottenere un comportamento che si avvicini il più possibile a quello desiderato.

Per fare questo possiamo sia scrivere noi del codice elisp, che utilizzare del codice elisp scritto da altre persone e disponibile in archivi pubblici, come ad esempio l'archivio MELPA.

Come utilizzo Emacs

Per quanto Emacs sia un tool estremamente potente, la configurazione iniziale lascia molto a desiderare, sia in termini di estetica che di funzionalità.

Investendo abbastanza tempo ed impegno però è possibile trasformarlo in ciò che si vuole.

\[\longrightarrow\]

Andiamo adesso a vedere alcuni (pochi) use-case personali di utilizzo di Emacs.

Interfacciamento OS

Terminal Emulator

Emacs offre le tipiche funzionalità di un terminal emulator tramite vari pacchetti (vterm, term-mode, shell-mode, eshell).

File Explorer

Tramite dired invece è possibile spostare, creare, modificare, eliminare e rinominare file e cartelle.

Email Manager

È anche possibile gestire le email tramite vari pacchetti (mu4e, gnus, notmuch).

Per chi fosse interessato a come configurare mu4e, è presente un video sul canale.

Come gestire le emails in Emacs (Mu4e)

Programmazione

La flessibilità di Emacs offre svariate occasioni per supportare e facilitare le tipiche task svolte da un programmatore.

Git interface

Il pacchetto magit, ad esempio, offre una comoda ed intuitiva interfaccia a git, il famoso software di versionamento distribuito.

C++

Ogni linguaggio di programmazione poi ha la sua particolare modalità.

Python (Jupyter Notebooks)

Con l'avvento di nuove tecnologie è possibile scrivere del nuovo codice elisp per lavorare con queste nuove tecnologie sempre all'interno di Emacs.

Org-Mode

Tra tutte le funzionalità di emacs, org-mode (secondo me) è senza dubbio la migliore, in quanto esistono svariati use-cases in cui utilizzare file orgs.

I file scritti in org-mode sono semplici file di testo che vengono processati in modo dinamico da Emacs.

Personal Notes

Personalmente ho una collezione di file orgs in cui scrivo di tutto, dalle cose tecniche alle cose non-tecniche.

University Notes

Tutti i miei appunti dell'università sono scritti in org-mode.

Blog

Il mio blog è gestito interamente da un singlo file org.

Presentations

Questa stessa presentazione è stata generata a partire da un file org.

Perché imparare Emacs?

Imparare Emacs non è facile, in quanto richiede tempo ed impegno. Detto questo, sono tante e varie le ragioni per cui, secondo me, vale la pena provare ad imparare Emacs.

Produttività

In generale le potenzialità offerte da Emacs per aumentare la propria produttività sono tantissime, e sono tanti gli insegnamenti che è possibile estrarre dall'utilizzo di queste tecnologie.

Solo org-mode, una parte (molto importante) di Emacs, contiene al suo interno innumerevoli applicazioni, molte delle quali possono essere sviluppate solo con ingegno e creatività.

Introduzione a LISP

Dato che Emacs è un interpretere del linguaggio elisp, per imparare (bene) Emacs dobbiamo anche imparare la famiglia di linguaggi LISP, che molto spesso non viene trattata molto all'università, ma che presenta molte caratteristiche tremendamente affascinanti.

Crescita personale

Più è difficile una determinata cosa, e più imparare quella cosa ci fa crescere, direttamente e indirettamente.

Sotto questo punto di vista, imparare Emacs apre la mente alle vere potenzialità offerte dal software, molte delle quali col passare degli anni stiamo perdendo di vista.

In ultima analisi, imparare Emacs è divertente, e apre un universo di possibilità ancora inesplorate.

Anche la possibilità di creare memes.