3 votes

Emacs : ne charger que les yasnippets nécessaires

Supposons que j'ai 2 sous-répertoires pour les yasnippets :

~/.emacs.d/yasnippets/perl-mode
~/.emacs.d/yasnippets/php-mode

Actuellement, j'utilise le code suivant dans mon .emacs :

(defvar *my-emacs-lib-dir* "~/.emacs.d/")
(load (concat *my-emacs-lib-dir* "plugins/yasnippet/yasnippet"))
(setq yas/snippet-dirs nil)
(yas/initialize)

;; Develop and keep personal snippets under ~/emacs.d/yasnippets
(setq yas/root-directory (concat *my-emacs-lib-dir* "yasnippets"))
(yas/load-directory yas/root-directory)

Ainsi, il charge tous les yasnippets dans tous les sous-répertoires de ~/.emacs.d/yasnippets.

Est-il possible de faire en sorte qu'il charge les yasnippets à la demande ? Si j'ouvre un fichier php, et que les snippets pour le mode php n'ont pas été chargés, je les charge. Mais pas tout charger au démarrage.

3voto

Alex Ott Points 14329

Si je me souviens bien, dans les nouvelles versions, le chargement des snippets se fera à la demande, si vous utilisez la séquence de chargement recommandée :

(add-to-list 'load-path "~/path-to-yasnippet")
(require 'yasnippet)
(yas-global-mode 1)

Vous pouvez également utiliser l'option use-jit à l'indicateur yas-load-directory qui forcera le chargement à la demande des extraits de ce répertoire. Voir la description de cette fonction ( C-h f yas-load-directory )

0voto

Miles Wolbe Points 179

Peut-être que quelque chose comme cela peut fonctionner.

(defvar yas/loaded-php-snippets nil)

(defun yas/load-php-snippets()
   (if (not yas/loaded-php-snippets)
    (progn
      (yas/load-directory  (concat yas/root-directory) "/php-mode")
      (setq yas/loaded-php-snippets t))))

(add-hook 'php-mode-hook 'yas/loaded-php-snippets)

Ce n'est qu'un exemple, mais il est concevable d'établir une correspondance entre les crochets de mode et les répertoires de chargement de yas et de ne charger que des répertoires spécifiques s'ils n'ont pas encore été chargés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X