Uso la seguente struttura per tenere traccia di pacchetti e file
~/.emacs.d
|-- elpa ;; Package.el packages
|-- hack ;; Development versions of packages (e.g. org, personal packages)
|-- single-lisp ;; Individual lisp files from outside sources (e.g. EmacsWiki)
|-- site-lisp ;; Lisp packages not managed by package.el (directories)
|-- user-config ;; Machine/situation specific customization (work vs home)
| `-- custom.el ;; Customization settings
|-- lisp ;; Individual .el files to keep init.el clean
| `-- defaults.el ;; Default configuration settings
`-- init.el
Quindi utilizzo use-packageper gestire quali pacchetti vengono caricati e quali personalizzazioni vengono impostate per ciascun pacchetto. Il più delle volte solo hacke elparichiedono un aggiornamento, le altre cartelle sono spesso per pacchetti una tantum che voglio testare o usare brevemente ma non è necessario caricare (anche al minimo).
custom.el è per le impostazioni personalizzate, che preferisco non usare (e non versione anche se lo uso).
defaults.elè per la configurazione generale (barra dei menu, font, codifica, ecc.) che può quindi essere sovrascritta in qualsiasi file .el user-config/per consentire un sistema che funzionerà come mi aspetto, ma che può essere adattato all'ambiente.
Avevo cercato in precedenza di tenere functions, macros, advicein pacchetti separati per consentire la delimitazione tra contenuto, ma ha incontrato definizione / richiedere questioni così hanno messo di nuovo in quelle init.el. Alla fine potrebbero essere rimessi ~/.emacs.d/lisp/.
Cerco di mantenere init.elordinato, ordinare i contenuti in base alla funzione e allo scopo in modo che ritrovarli sia semplice. Ho avuto il init.elfile monolitico e ho continuato ad aggiungere nuovi contenuti alla fine (o dove pensavo potesse adattarsi) e poi avrei finito per non sapere cosa avevo aggiunto o dove l'avevo aggiunto quando sono andato a cercarlo (e a volte la ricerca usando isearchnon mi ha aiutato poiché non riuscivo a ricordare come ho chiamato le cose in quel momento).