Haga que la empresa muestre sugerencias para los nombres de Yasnippet


13

Yo uso los paquetes de modo Empresa y Yasnippet. Cuando escribo en un búfer, recibo sugerencias de autocompletado de la Compañía.

Para Yasnippet, tengo un directorio que contiene los fragmentos. En ese directorio tengo por ejemplo, el archivo foo.yasnippet.

Cuando estoy escribiendo fooen el búfer y Tabpresiono, obtengo un menú emergente para yasnippets, que puedo elegir qué fragmento ( fooo foo-bar) quiero insertar. Me gustaría integrar el yasnippet fooen la finalización de la empresa. Cuando escribo foo, me gustaría ver el fragmento en la ventana emergente de finalización de la empresa.

es posible? Si es así, ¿cómo podría lograr esto? En Vim lo tienes con Neocomplete y VimSnippets. Cuando busqué en Google, encontré este enlace con Elisp, pero no pude entender cómo aplicarlo.

¿Alguna sugerencia?


1
Ese elisp es un "backend" de yasnippet para la compañía (incluido con la compañía). Puede leer sobre esto escribiendoC-h f company-yasnippet RET
niñera

Respuestas:


29

Tengo el siguiente fragmento en mi configuración y parece que es exactamente lo que quieres:

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

Básicamente, configura el backend de yasnippet con cualquier otro backend que haya activado, de modo que obtenga la finalización adecuada para el back-end correspondiente y sus fragmentos.


1
No esperaba obtener ninguna respuesta sobre esto, así que Patrick, estoy realmente agradecido por esto. ¡Gracias por eso!
ReneFroger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.