Dopo l'aggiornamento dei pacchetti, la posizione dei file elisp caricati cambierà in modo che si trovi nella cartella della nuova versione del pacchetto.
Yasnippet tenta di caricare pigramente frammenti per il file in cui è stato installato, quando apro un file in una modalità principale che yasnippet non ha mai visto prima.
Ciò significa che il caricamento di cose con modalità principali mai viste prima che emacs sia stato aggiornato non riesce, perché yasnippet si rompe il tutto lamentandosi di "nessun file o directory".
C'è un buon modo generale per risolvere questo problema, come non lasciare che gli aggiornamenti rompano le cose? (Ottengo un problema simile ma meno noioso quando AG viene aggiornato). In alternativa, consiglierebbe qualcosa in yasnippet di ingoiare gli errori in modo che avvisasse invece di sbagliare quando non poteva caricare i pacchetti sarebbe un piano migliore?
Una precisazione:
- Avvio emacs e yasnippet viene caricato.
- Non carico file la cui modalità principale è (ad esempio) makefile.
- Aggiornamento ad una nuova versione di yasnippet, usando il gestore pacchetti
- Carico un makefile e yasnippet tenta di caricare gli snippet per i makefile ma non riesce, poiché la cartella che utilizzava per gli snippet non esiste più. Non solo, ma praticamente ogni altro comando fallisce, perché il pre-hook a loro installato su yasnippet fallisce.
- Soluzione alternativa: aprire il buffer dei messaggi, individuare la cartella che non può essere aperta ed eseguita
mkdir ~/.blargh/folder-yasnippet-wants
.
Chiaramente, si potrebbe scrivere qualche consiglio per un po 'di yasnippet, ma spero in una soluzione più globale (e ci vorrebbe un po' di gioco con elisp per ottenere il consiglio di lavorare, ne sono sicuro).
package.el
lavorare in modo impeccabile e probabilmente stai cercando una soluzione in relazione a ciò. Personalmente divento non incollato quando le cose si rompono, quindi riduco la probabilità di rottura posizionando le librerie in una posizione completamente diversa - in alcuni casi, cambio anche tutti i nomi aggiungendo un prefisso nella libreria - ad esempio, In lawlist-...
questo modo, niente si interrompe tranne una funzione modificata dal team di Emacs - ad esempio, un nuovo argomento in una funzione esistente, ecc. Ho copiato yasnippet.el
da qualche altra parte, rimosso dal gestore dei pacchetti e non mi preoccupo mai.