Demander à la société d'afficher des suggestions de noms Yasnippet

13

J'utilise les packages mode Entreprise et Yasnippet. Lorsque je tape dans un tampon, je reçois des suggestions de saisie semi-automatique de la société.

Pour Yasnippet, j'ai un répertoire qui contient les extraits. Dans ce répertoire, j'ai par exemple le fichier foo.yasnippet.

Lorsque je tape foodans le tampon et appuie sur Tab, j'obtiens un menu contextuel pour les yasnippets, que je peux choisir quel extrait ( fooou foo-bar) je veux insérer. Je voudrais intégrer le yasnippet foodans l'achèvement de l'entreprise. Lorsque je tape foo, j'aimerais voir l'extrait dans la fenêtre contextuelle Fin de la société.

Est-ce possible? Si oui, comment pourrais-je y parvenir? Dans Vim, vous avez cela avec Neocomplete et VimSnippets. Quand j'ai fait des recherches sur Google, j'ai trouvé ce lien avec Elisp mais je ne pouvais pas comprendre comment l'appliquer.

Aucune suggestion?

ReneFroger
la source
1
Cet elisp est un "backend" de yasnippet pour l'entreprise (inclus avec l'entreprise). Vous pouvez le lire en tapantC-h f company-yasnippet RET
nanny

Réponses:

29

J'ai l'extrait de code suivant dans ma configuration et il semble que c'est exactement ce que vous voulez:

;; Add yasnippet support for all company backends
;; https://github.com/syl20bnr/spacemacs/pull/179
(defvar company-mode/enable-yas t
  "Enable yasnippet for all backends.")

(defun company-mode/backend-with-yas (backend)
  (if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend)))
      backend
    (append (if (consp backend) backend (list backend))
            '(:with company-yasnippet))))

(setq company-backends (mapcar #'company-mode/backend-with-yas company-backends))

Fondamentalement, il configure le backend yasnippet avec tous les autres backends que vous avez activés, afin que vous obteniez la bonne fin pour le backend correspondant ainsi que pour vos extraits.

Patrick
la source
1
Je ne m'attendais pas à obtenir de réponse à ce sujet, alors Patrick, j'en suis vraiment reconnaissant. Merci pour ça!
ReneFroger