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 ocorra company-dabbrev
antes company-elisp
(ou company-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 de company-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 mesmo prefix
ou o texto a ser concluído (consulte a documentação company-backends
para obter uma descrição detalhada).
Portanto, se você deseja mesclar conclusões de company-elisp
(no emacsen recente company-capf
é usado) e company-dabbrev
simplesmente faça isso
(add-to-list 'company-backends '(company-capf company-dabbrev))
Além disso, você pode mesclar diferentes back-ends usando a :with
palavra - chave
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Isso é diferente do exemplo sem uma lista de back-end, :with
já que a empresa usará apenas os back-end antes :with
para determinar o prefix
(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 a prefix
ou não, se nenhum dos backends anteriores :with
retornar a prefix
.
Você pode definir isso localmente no buffer emacs-lisp (eu prefiro fazê-lo)