Une fois les packages mis à jour, l'emplacement des fichiers elisp chargés changera pour se trouver dans le dossier de la nouvelle version du package.
Yasnippet tente de charger des extraits paresseusement pour le fichier sur lequel il a été installé, lorsque j'ouvre un fichier dans un mode majeur que yasnippet n'a jamais vu auparavant.
Cela signifie que le chargement de choses avec des modes majeurs jamais vus une fois qu'emacs a été mis à jour échoue, car yasnippet rompt le tout en se plaignant de "aucun fichier ou répertoire".
Existe-t-il un bon moyen général de résoudre ce problème, comme ne pas laisser les mises à jour interrompre les choses? (J'obtiens un problème similaire mais moins fastidieux lorsque ag est mis à jour). Alternativement, conseiller quelque chose dans yasnippet pour simplement avaler les erreurs afin qu'il avertisse simplement au lieu d'erreurs quand il ne pourrait pas charger les paquets serait-il un meilleur plan?
Clarification:
- Je démarre emacs et yasnippet est chargé.
- Je ne charge aucun fichier dont le mode principal est (par exemple) les makefiles.
- Je mets à jour vers une nouvelle version de yasnippet, en utilisant le gestionnaire de paquets
- Je charge un makefile et yasnippet tente de charger les extraits de fichiers pour les makefiles mais il échoue, car le dossier qu'il utilisait pour les extraits de code n'existe plus. Non seulement cela, mais pratiquement toutes les autres commandes échouent, car le pré-raccordement à elles que yasnippet a installé échoue.
- Solution: ouvrez le tampon de messages, recherchez le dossier qui ne peut pas être ouvert et exécuté
mkdir ~/.blargh/folder-yasnippet-wants
.
De toute évidence, on pourrait écrire quelques conseils pour un peu de yasnippet, mais j'espère une solution plus globale (et il faudrait un certain temps pour jouer avec elisp pour que les conseils fonctionnent, je suis sûr).
package.el
travailler sans problème et que vous cherchez probablement une solution à ce sujet. Personnellement, je me décolle lorsque les choses se cassent, donc je réduit la probabilité de rupture en plaçant les bibliothèques dans un emplacement complètement différent - dans certains cas, je change même tous les noms en ajoutant un préfixe dans la bibliothèque - par exemple, delawlist-...
cette façon, rien casse sauf une fonction modifiée par l'équipe Emacs - par exemple, un nouvel argument à une fonction existante, etc. J'ai copiéyasnippet.el
ailleurs, je l'ai supprimée du gestionnaire de paquets, et je ne m'en fais jamaisRéponses:
Ce que je fais est un peu complexe: je conseille la fonction de
package-activate
telle sorte que chaque fois qu'un package est activé, Emacs recherchera un fichier appelé[package]-conf.el
et l'exécutera en utilisantload
au lieu derequire
, afin qu'il puisse être exécuté plusieurs fois.Et dans mon
pkg-configs/yasnippet-conf.el
, j'ai défini layas-snippet-dirs
variable pour indiquer où se trouve leyasnippet
package:kzn-path
est une fonction que j'utilise pour trouver mes répertoires personnalisés par symbole; vous pouvez le remplacer pour les répertoires.Tout cela est copié directement à partir de mes fichiers de configuration. Je pense que c'est tout ce dont vous avez besoin, ou cela devrait au moins vous orienter dans la bonne direction.
la source