Nachdem die Pakete aktualisiert wurden, ändert sich der Speicherort der geladenen Elisp-Dateien in den Ordner der neuen Version des Pakets.
Yasnippet versucht, Snippets für die Datei, in der es installiert wurde, träge zu laden, wenn ich eine Datei in einem Hauptmodus öffne, den Yasnippet zuvor noch nicht gesehen hat.
Dies bedeutet, dass das Laden von Dingen mit zuvor nicht sichtbaren Hauptmodi nach der Aktualisierung von emacs fehlschlägt, da yasnippet das Ganze durch die Beschwerde über "keine solche Datei oder kein solches Verzeichnis" zerstört.
Gibt es eine gute allgemeine Möglichkeit, dies zu lösen, z. B. nicht zuzulassen, dass Updates Probleme verursachen? (Ich bekomme ein ähnliches, aber weniger langwieriges Problem, wenn ag aktualisiert wird). Wäre es alternativ ein besserer Plan, etwas in yasnippet zu empfehlen, nur die Fehler zu verschlucken, damit es nur warnt, anstatt Fehler zu machen, wenn es keine Pakete laden kann?
Klärung:
- Ich starte Emacs und Yasnippet wird geladen.
- Ich lade keine Dateien, deren Hauptmodus (zum Beispiel) Makefiles sind.
- Ich aktualisiere mit dem Paketmanager auf eine neue Version von yasnippet
- Ich lade ein Makefile und yasnippet versucht, die Snippets für Makefiles zu laden, aber es schlägt fehl, da der Ordner, den es für Snippets verwendet hat, nicht mehr existiert. Nicht nur das, sondern praktisch jeder andere Befehl schlägt fehl, da der von yasnippet installierte Pre-Hook für sie fehlschlägt.
- Problemumgehung: Öffnen Sie den Nachrichtenpuffer, suchen Sie, welcher Ordner nicht geöffnet werden kann, und führen Sie ihn aus
mkdir ~/.blargh/folder-yasnippet-wants
.
Natürlich könnte man einige Ratschläge für ein bisschen Yasnippet schreiben, aber ich hoffe auf eine globalere Lösung (und es würde eine Weile dauern, mit Elisp zu spielen, um die Ratschläge zum Laufen zu bringen, da bin ich mir sicher).
package.el
einwandfrei arbeiten möchten und wahrscheinlich nach einer entsprechenden Lösung suchen. Ich persönlich werde ungeklebt, wenn Dinge kaputt gehen, und reduziere die Wahrscheinlichkeit eines Bruchs, indem ich Bibliotheken an einem völlig anderen Ort platziere. In einigen Fällen ändere ich sogar alle Namen, indem ich der Bibliothek ein Präfix hinzufüge - z. B. auf lawlist-...
diese Weise nichts Pausen mit Ausnahme einer geänderten Funktion des Emacs-Teams - z. B. eines neuen Arguments für eine vorhandene Funktion usw. Ich habe sie an eine yasnippet.el
andere Stelle kopiert , aus dem Paketmanager entfernt und mich nie darum gekümmert.