Fai in modo che la Società mostri suggerimenti per i nomi Yasnippet


13

Uso i pacchetti in modalità Azienda e Yasnippet. Quando scrivo in un buffer, ricevo suggerimenti di completamento automatico dall'azienda.

Per Yasnippet, ho una directory che contiene i frammenti. In quella directory ho ad esempio il file foo.yasnippet.

Quando scrivo foonel buffer e premo Tab, ottengo un menu popup per yasnippet, che posso scegliere quale snippet ( fooo foo-bar) che voglio inserire. Vorrei integrare lo yasnippet foonel completamento dell'azienda. Quando scrivo foo, vorrei vedere lo snippet nel popup di completamento dell'azienda.

È possibile? In tal caso, come potrei raggiungere questo obiettivo? In Vim ce l'hai con Neocomplete e VimSnippet. Quando ho cercato su Google, ho trovato questo collegamento con Elisp ma non sono riuscito a capire come applicarlo.

Eventuali suggerimenti?


1
Quel elisp è un "backend" yasnippet per l'azienda (incluso con la società). Puoi leggerlo digitandoC-h f company-yasnippet RET
tata

Risposte:


29

Ho il seguente frammento nella mia configurazione e sembra che sia esattamente quello che vuoi:

;; 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))

Fondamentalmente imposta il backend yasnippet con ogni altro backend che hai attivato, in modo da ottenere il completamento corretto per il backend corrispondente così come i tuoi snippet.


1
Non mi aspettavo di ricevere alcuna risposta al riguardo, quindi Patrick, sono davvero grato per questo. Grazie per quello!
ReneFroger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.