Pregunta:
No puedo configurar yasnippet de la forma en que quiero configurarlo.
Solo quiero usar yasnippet para un conjunto particular de modos, por lo que no quiero usar yas-global-mode
.
Solo quiero usar mis propios fragmentos, no los que vienen preempaquetados con la instalación de MELPA. No quiero que nunca cargue los fragmentos de MELPA.
Desafortunadamente, el paquete está resultando insufrible; la única forma en que puedo averiguar cómo agregar mis fragmentos y hacer que realmente funcionen es hacer lo siguiente:
(require 'yasnippet)
;; Use custom snippets.
(add-to-list 'yas-snippet-dirs "~/Dropbox/configs/emacs/snippets/")
(yas-reload-all)
(dolist (hook jrh-programming-modes)
(add-hook hook 'yas-minor-mode))
Tengo que llamar a yas-reload-all
o, de lo contrario, mis fragmentos no están disponibles. Tengo que usar add-to-list
, porque por alguna razón , cuando reemplazo esa línea con (setq yas-snippet-dirs '("~/Dropbox/configs/emacs/snippets/"))
, mis fragmentos no se cargan . Así que tengo que sufrir la carga de todos los demás fragmentos, que nunca uso.
Lo que me gustaría hacer es esto:
;; Use custom snippets.
(setq yas-snippet-dirs '("~/Dropbox/configs/emacs/snippets/"))
(require 'yasnippet)
(dolist (hook jrh-programming-modes)
(add-hook hook 'yas-minor-mode))
y nunca necesitará usar los otros fragmentos o recargar en absoluto. Por supuesto, el código anterior no funciona, aunque en mi cabeza parece que debería hacerlo.
Cualquier ayuda sobre cómo lograr esto será muy apreciada.
Respuesta:
Desde yas-minor-mode no carga fragmentos (GitHub):
Creo que cuando no usa
yas-global-mode
, debe al menos agregar una llamada(yas-reload-all)
algún lugar de su.emacs
. Esto configurará las tablas de carga jit (y no cargará fragmentos reales hasta que se activeyas-minor-mode
en algún búfer para el que se haya configurado una de esas tablas.Podría ser deseable que esto se realizara automáticamente, pero creo que lo analicé en el pasado y encontré que no era adecuado (por alguna razón que no puedo recordar en este momento, lo siento).
De todos modos, tiene una solución alternativa: agregue
(yas-reload-all)
en algún lugar de su archivo de inicio.
Esto es un error; la solución que he descubierto es la solución alternativa recomendada por el mantenedor en el ínterin.