Introduzione

In questa sezione voglio inserire tutti quei trucchetti o altro che ci renderanno, o almeno per me, la vita migliore nell’uso di Dired in Emacs.

Limitare i buffer aperti

Non so voi ma io odio avere diecimila buffer aperti contemporaneamente, soprattutto nel caso di Dired, lo trovo proprio scomodo e brutto, ma fortunatamente emacs e la comunity ci forniscono diverse soluzioni.

Una prima soluzione già pronta all’uso è quello di usare il tasto a al posto del tasto RET quando si vuole aprire una directory, questo tasto, in un buffer dired lancia il comando dired-find-alternate-file che in pratica uccide il buffer Dired quando si visita il file o la directory su cui ci troviamo, questo approcci può andare benissimo però, usato così, ad ogni nuova sessione ed ad ogni primo utilizzo ci informerà che stiamo utilizzando una funzione che è stata disabilitata e se vogliamo abilitarla o meno, poi ci chiede se vogliamo che rimanga abilita, o meno, per il resto della sessione corrente.

Un’altro modo, più pratico, per non avere mille buffer aperti e per evitare tutta la sbatta di prima, è abilitare questa benedetta funzione aggiungendo al nostro file init il seguente codice (put 'dired-find-alternate-file 'disabled nil).

Ok bello, ma se voglio usarla devo cliccare a invece di RET e se volessi chiudere il buffer dired solo quando visito una directory ma non quando visito un file mi dovrei ricordare di usare a nel primo caso e RET nel secondo … un bagno di sangue !!!

Hei non preoccupatevi !!! Eccovi la soluzione !!! In caso abbiate una versione di Emacs inveriore alla 28.1, BEH AGGIORNATELA !!! ;P, potete usare questo codice nel vostro file init.

;; Abilitiamo la funzione
(put 'dired-find-alternate-file 'disabled nil)
;; Asegnamogli il taso RET
(define-key dired-mode-map (kbd "RET") 'dired-find-alternate-file)

Anche questa è una soluzione parziale, in quanto non distinguerà tra file e directory, bisognerebbe fare una funzione personalizzata per ovviare a questo problema, ed e’ per questo che vi suggerisco di aggiornare il vostro caro Emacs ad una versione un pò più moderna.

Dalla versione 28.1 in poi possiamo semplicemente impostare una variabile ed il comando, sempre da inserire nel nostro file init, e’ (setf dired-kill-when-opening-new-dired-buffer t).

Finalmente abbiamo risolto ed abbiamo solo i buffer necessari e posiamo navigarli comodamente usando il tasto RET che ucciderà il buffer nel caso si tratti di una directory o ne aprirà uno nuovo nel caso si tratti di un file.