Configuração:
Versão da GUI GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) de 25/07/2015 no KAEL
Compilado a partir do EmacsW64.
, usando a versão mais recente do MELPA
Windows 7 x 64 bits.
Situação:
Por exemplo, estou digitando a foobarsentence do buffer.
E, em seguida, inicie uma nova linha abaixo disso e, digitando fooba, esperava receber foobarsentence
sugestões da janela de conclusão de pop-up da empresa. Mas não existe foobarsentence
.
Eu descobri com outra resposta que eu poderia usar company-dabbrev`` para isso, obrigado M-/,. Mas não consegui descobrir como poderia "alimentar" as sugestões company-dabbrev
na janela pop-up. Fiz um gif de screencast para deixar minha pergunta clara.
Como você pode ver, M-/liga company-dabbrev
. Mas eu gostaria de ver isso sugerido no pop-up de conclusão da empresa. Surpreendeu-me que não é por padrão.
Alguma sugestão para 'alimentar' as sugestões da company-dabbrev
janela pop-up da empresa?
fonte
Respostas:
Aqui está como a conclusão da empresa funciona (estou simplificando um pouco, uma descrição mais detalhada pode ser encontrada na documentação de
company-backends
C-hvcompany-backends
RET.Você tem uma lista de back-ends (mecanismos de conclusão) que a empresa deve tentar concluir no momento. A empresa tenta cada um desses back-end, um após o outro, e o primeiro que retorna qualquer candidato é usado para conclusão e o restante dos back-end é ignorado. Portanto, por padrão, apenas um back-end é usado por vez.
No seu caso (você parece no modo emacs-lisp), o back-end do emacs-lisp está retornando candidatos para conclusão e, portanto,
company-dabbrev
nunca é usado pela empresa para conclusão e você nunca éfoobarsentence
concluído. Portanto, convém alterar os back-end da empresa para que isso ocorracompany-dabbrev
antescompany-elisp
(oucompany-capf
no emacsen recente). Mas acho que não é o que você deseja, pois isso reverteria a situação atual e você não obterá conclusões do back-end do emacs-lisp (nesse caso, continue lendo).A empresa fornece uma maneira de mesclar conclusões de várias fontes usando o que chama de
grouped
back - end. Geralmente, os membros decompany-backends
são back-end individuais, mas também pode ser uma lista de back-end; nesse caso, a conclusão dos back-ends é mesclada, desde que retornem o mesmoprefix
ou o texto a ser concluído (consulte a documentaçãocompany-backends
para obter uma descrição detalhada).Portanto, se você deseja mesclar conclusões de
company-elisp
(no emacsen recentecompany-capf
é usado) ecompany-dabbrev
simplesmente faça issoAlém disso, você pode mesclar diferentes back-ends usando a
:with
palavra - chaveIsso é diferente do exemplo sem uma lista de back-end,
:with
já que a empresa usará apenas os back-end antes:with
para determinar oprefix
(o texto a ser concluído). Isso implica que os candidatos dos backends posteriores:with
serão ignorados pela empresa, independentemente de os backends retornarem aprefix
ou não, se nenhum dos backends anteriores:with
retornar aprefix
.Você pode definir isso localmente no buffer emacs-lisp (eu prefiro fazê-lo)
fonte
:with