Вот как работает завершение в компании (я немного упрощаю, более подробное описание можно найти в документации к company-backends C-hvcompany-backendsRET.
У вас есть список бэкэндов (двигателей завершения), которые компания должна попытаться предоставить в момент завершения. Компания пробует каждый из этих бэкэндов один за другим, и первый, который возвращает кандидатов, используется для завершения, а остальные бэкэнды игнорируются. Таким образом, по умолчанию используется только один бэкэнд.
В вашем случае (вы, похоже, в emacs-lisp-mode) бэкэнд emacs-lisp возвращает кандидатов на завершение и поэтому company-dabbrevникогда не используется компанией для завершения, и вы никогда не получите foobarsentenceзавершение. Так что вы можете захотеть изменить backends компании так, чтобы это company-dabbrevпроисходило раньше company-elisp(или company-capfв недавнем emacsen). Но я полагаю, что это не то, что вам нужно, поскольку это изменило бы текущую ситуацию, и вы не получите завершения от emacs-lisp backend (в этом случае читайте дальше).
Компания предоставляет способ объединения дополнений из нескольких источников, используя то, что она называет groupedбэкэндами. Обычно члены company-backendsявляются отдельными бэкэндами, но это также может быть список бэкэндов, и в этом случае завершение из бэкэндов объединяется при условии, что они возвращают то же самое prefixили текст, который должен быть завершен (см. Документацию company-backendsдля подробного описания).
Так что, если вы хотите объединить дополнения из company-elisp(на недавних emacsen company-capfиспользуется) и company-dabbrevпросто сделайте это
(add-to-list 'company-backends '(company-capf company-dabbrev))
Кроме того, вы можете объединить различные бэкэнды, используя :withключевое слово
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Это отличается от примера со списком бэкендов, :withтак как компания будет использовать только бэкэнды :withдля определения prefix(текст, который необходимо заполнить). Это подразумевает, что кандидаты из бэкэндов после :withбудут игнорироваться компанией, независимо от того, вернут ли бэкэнды a prefixили нет, если ни один из бэкэндов до не :withвернул a prefix.
Вы можете установить это локально в буфере emacs-lisp (я предпочитаю делать это)