💾 Archived View for it.omarpolo.com › articoli › pillole-di-emacs-002 captured on 2022-03-01 at 15:22:55. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
Tra le prime cose presenti nel mio init.el c’è una macro piuttosto carina, anche se l’idea non è mia. Si tratta della macro ‘comment’, una macro che ignora tutti gli argomenti che gli vengono passati e ritorna sempre ‘nil’.
(defmacro comment (&rest _body) "Ignore everything in its BODY and return nil." ())
(in Common-Lisp ed Emacs-Lisp ‘nil’ e la lista vuota sono effettivamente la stessa cosa)
Qual è l’utilità di questa macro apparentemente inutile? In diversi casi, magari mentre si sta debuggando del codice, o per disattivare alcune parti della nostra configurazione commentiamo del codice.
Commentare però ha degli svantaggi. Disattiva la syntax-highlighting, rende praticamente impossibile sfruttare comandi “avanzati” nel testo che abbiamo commentato (es. ‘mark-sexp’ non può funzionare all’interno di un commento) e altro. La macro ‘comment’ invece rende il codice al suo interno “morto”, lasciando comunque che Emacs lo colori e indenti correttamente, e permettendoci comunque di selezionare intere sexp al suo interno.
Un piccolo esempio dal mio init.el
(use-package cider :config (comment (defun my/cider-find-var (fn &optional arg var line) "Invert the meaning of the prefix argument" …) (advice-add 'cider-find-var :around #'my/cider-find-var)) …)
Ho modificato il comportamento di ‘cider-find-var’, ma da una certa versione in poi non è più necessario perchè il comportamento di default è lo stesso che stavo forzando. Ho comunque lasciato il vecchio codice, commentandolo, come referenza per il futuro (nel caso Batsov cambi idea di nuovo).
La macro ‘comment’ è spudoratamente copiata da Clojure, dove fa parte della libreria standard.
$BlogIt: index.gmi,v 1.1 2021/10/20 07:42:31 op Exp $