Obter Empresa para mostrar sugestões para nomes de Yasnippet


13

Eu uso os pacotes modo Empresa e Yasnippet. Quando estou digitando um buffer, recebo sugestões de preenchimento automático da empresa.

Para o Yasnippet, tenho um diretório que contém os trechos. Nesse diretório que tenho por exemplo, o arquivo foo.yasnippet.

Quando estou digitando foono buffer e pressiono Tab, recebo um menu pop-up para yasnippets, que eu escolho qual trecho ( fooou foo-bar) quero inserir. Eu gostaria de integrar o yasnippet foona conclusão da empresa. Quando digito foo, gostaria de ver o snippet no pop-up de conclusão da empresa.

Isso é possível? Se sim, como eu poderia conseguir isso? No Vim, você tem isso com o Neocomplete e o VimSnippets. Quando pesquisei no Google, encontrei esse link com o Elisp, mas não conseguia entender como aplicá-lo.

Alguma sugestão?


1
Esse elisp é um "back-end" yasnippet para a empresa (incluído na empresa). Você pode ler sobre isso digitandoC-h f company-yasnippet RET
nanny

Respostas:


29

Eu tenho o seguinte trecho na minha configuração e parece que é exatamente o que você deseja:

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

Basicamente, ele configura o back-end do yasnippet com todos os outros back-end que você ativou, para que você obtenha a conclusão adequada para o back-end correspondente e seus snippets.


1
Eu não esperava receber nenhuma resposta sobre isso, então Patrick, estou muito agradecido por isso. Obrigado por isso!
ReneFroger
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.