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-backendsRET.
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-dabbrevnunca é usado pela empresa para conclusão e você nunca é foobarsentenceconcluído. Portanto, convém alterar os back-end da empresa para que isso ocorra company-dabbrevantes company-elisp(ou company-capfno 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 groupedback - end. Geralmente, os membros de company-backendssã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 prefixou o texto a ser concluído (consulte a documentação company-backendspara obter uma descrição detalhada).
Portanto, se você deseja mesclar conclusões de company-elisp(no emacsen recente company-capfé usado) e company-dabbrevsimplesmente faça isso
(add-to-list 'company-backends '(company-capf company-dabbrev))
Além disso, você pode mesclar diferentes back-ends usando a :withpalavra - chave
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Isso é diferente do exemplo sem uma lista de back-end, :withjá que a empresa usará apenas os back-end antes :withpara determinar o prefix(o texto a ser concluído). Isso implica que os candidatos dos backends posteriores :withserão ignorados pela empresa, independentemente de os backends retornarem a prefixou não, se nenhum dos backends anteriores :withretornar a prefix.
Você pode definir isso localmente no buffer emacs-lisp (eu prefiro fazê-lo)