completion – La configuración de yasnippet no persiste en las ejecuciones de emacs

Pregunta:

yasnippet no completa los fragmentos que agrego al yas/root-directory (escribir la clave y presionar la pestaña no se completa).

Si .yas-compiled-snippets.el de un directorio afectado, luego ejecuto yas/recompile-all luego yas/reload-all , puedo usar temporalmente los fragmentos en ese directorio. Esto funciona para una sesión de emacs, pero cuando vuelvo a iniciar emacs, yasnippet de nuevo no reconoce los fragmentos adicionales.

¿Cómo puedo hacer que la configuración se "pegue" en las ejecuciones de emacs?

Mi configuración de yasnippet es así:

(require 'yasnippet)
(yas/initialize)
(add-hook 'python-mode-hook '(lambda ()
                               (yas-minor-mode)))
(add-to-list 'yas/root-directory "/path/to/elisp/yasnippet-snippets/")
(add-to-list 'yas/root-directory "/path/to/elisp/yasnippet-extra-snippets/")

Respuesta:

yas-reload-all es la forma correcta de decirle a yasnippet acerca de las actualizaciones de yas-snippet-dirs (también conocido como yas/root-directory ), no es necesaria la recompilación.

yas/initialize es básicamente una forma obsoleta de decir (yas-global-mode +1) , por lo tanto, su python-mode-hook es redundante. yas-global-mode también llama a yas-reload-all cuando está encendido, por lo que si solo configura yas-snippet-dirs antes de llamarlo, sus fragmentos ya estarán recogidos:

(require 'yasnippet)
(add-to-list 'yas-snippet-dirs "/path/to/elisp/yasnippet-snippets/")
(add-to-list 'yas-snippet-dirs "/path/to/elisp/yasnippet-extra-snippets/")
(yas-global-mode +1)

O, habilitando yasnippet solo en python-mode :

(require 'yasnippet)
(add-to-list 'yas-snippet-dirs "/path/to/elisp/yasnippet-snippets/")
(add-to-list 'yas-snippet-dirs "/path/to/elisp/yasnippet-extra-snippets/")
(yas-reload-all)
(add-hook 'python-mode-hook #'yas-minor-mode)

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım