-- Leo's gemini proxy

-- Connecting to it.omarpolo.com:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=it

002 — Pillole di Emacs: la macro comment


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 $

-- Response ended

-- Page fetched on Thu Mar 28 15:07:10 2024