2014-08-27 2 views
1

Je voudrais désactiver l'expansion YASnippet (par exemple, "if") dans les commentaires et les chaînes, mais ne trouve pas comment faire cela de façon générique.Comment ne jamais développer yasnippets dans les commentaires et les chaînes

Sur http://capitaomorte.github.io/yasnippet/snippet-expansion.html#sec-2-2, ils disent comment le faire pour Python, mais je voudrais le faire fonctionner pour tous les modes prog à la fois, et je ne suis au courant d'aucune fonction qui teste "en chaîne/commentaire" , indépendamment de la langue.

Y a-t-il encore un moyen de le faire?

+1

Peut-être que vous pourriez essayer de tester l'évaluation '(nième 8 (syntaxe PSP))' dans d'autres modes pour voir si elle retourne 't' ou' nil 'à l'intérieur des cordes et des commentaires? Je ne sais pas si cela fonctionnerait, mais il semble que ce soit la fonction que vous associez. – lawlist

+0

Voir aussi http://stackoverflow.com/questions/12815781/emacs-lisp-and-c-mode-when-am-i-in-a-comment-region/12820339#12820339 – Stefan

Répondre

2

En utilisant la suggestion de lawlist et l'ajouter à prog-mode-hook:

(defun yas-no-expand-in-comment/string() 
    (setq yas-buffer-local-condition 
     '(if (nth 8 (syntax-ppss)) ;; non-nil if in a string or comment 
      '(require-snippet-condition . force-in-comment) 
      t))) 
(add-hook 'prog-mode-hook 'yas-no-expand-in-comment/string) 
+0

Cela fonctionne. Merci un million! – user3341592

Questions connexes