Gestione dei pacchetti di prossima generazione con straight.el
Dopo una lunga e frustrante lotta per usare package.el
+ Quelpa per gestire i miei pacchetti, ho morso il proiettile e ho scritto il mio gestore di pacchetti . È destinato a sostituire completamente package.el
fornendo un'esperienza di gestione dei pacchetti che è superiore in quasi tutti i modi.
Puoi leggere la documentazione molto estesa per conoscere tutte le sue funzionalità, ma la più rilevante per questa domanda è che si straight.el
concentra sulla perfetta riproducibilità . Ciò significa che non dovrebbe importare se si avvia normalmente Emacs o se lo si avvia su una nuova macchina e se eventuali modifiche locali sono controllate dalla versione e possono essere ripristinate a uno stato canonico. In pratica, ciò si ottiene (1) clonando pacchetti come repository Git e fornendo strumenti automatizzati per la gestione del loro stato; (2) usare il file init come unica fonte di verità per lo stato di gestione dei pacchetti, senza dati mutabili memorizzati altrove; e (3) l'utilizzo di lockfile versione opzionali per specificare le revisioni Git esatte di ogni pacchetto, oltre a tutti i repository di ricette estraight.el
si.
Per iniziare, inserisci lo snippet di bootstrap , che verrà installato e attivato straight.el
. Quindi, per assicurarsi che sia installato un pacchetto, è sufficiente effettuare una chiamata straight-use-package
nel file init:
(straight-use-package 'projectile)
Sì, è così semplice. Non avere a che fare con package-refresh-contents
nessuno di quei rifiuti. Se rimuovi questo modulo dal tuo file init e riavvii Emacs, Projectile non verrà più caricato (diversamente da in package.el
). Questo significa che non devi preoccuparti che la tua configurazione in qualche modo non funzioni su una nuova macchina perché dipendevi accidentalmente da pacchetti non dichiarati.
Puoi installare i pacchetti dove e quando vuoi, attraverso il tuo file init (non è necessario dichiararne un elenco in un unico punto). Ovviamente puoi anche solo fare
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
se preferisci la lista. Vi consiglio comunque di utilizzare use-package
per gestire la configurazione del pacchetto. Per prima cosa devi installarlo:
(straight-use-package 'use-package)
Quindi, poiché straight.el
ha un'integrazione integrata con use-package
, il seguente "funziona":
(use-package projectile
:straight t
:init (projectile-mode 1))
Dopo aver scritto il file init per installare i pacchetti necessari, esegui M-x straight-freeze-versions
per salvare un file di blocco versione ~/.emacs.d/straight/versions/default.el
. Dovresti tenere questo file sotto controllo di versione, poiché consentirà straight.el
di verificare le versioni corrette di tutti i tuoi pacchetti, quando avvii Emacs per la prima volta su un nuovo computer. (È possibile ripristinare manualmente le versioni specificate nel file di blocco utilizzando M-x straight-thaw-versions
.)
A supporto dell'idea dei dotfile locale-macchina che ho citato nella mia altra risposta , straight.el
offre un sistema di profili . Consiglio ancora di usare i symlink per i tuoi dotfile (in questo caso, il init.el
tuo file init locale, se applicabile, e il file lock della versione se vuoi usarne uno).
Se ti stai chiedendo come si straight.el
confronta con altri gestori di pacchetti, dai un'occhiata alla sezione dei confronti approfonditi . Ma c'è anche molta più documentazione su tutto il resto .
init.el
(usando git per esempio), questo approccio funziona anche (basato suuse-package
): lunaryorn.com/posts/…