Ось як працює завершення в компанії (я спрощую трохи детальніший опис можна знайти в документації company-backends C-hvcompany-backendsRET.
У вас є список зворотних механізмів (двигунів добудови), компанія повинна спробувати забезпечити завершення в пункті. Компанія випробовує кожен цей сервер один за іншим, і перший, який повертає будь-яких кандидатів, використовується для завершення, а решта повернення ігнорується. Тож за замовчуванням використовується одночасно лише один бекенд.
У вашому випадку (ви, здається, в режимі emacs-lisp), програма emacs-lisp повертає кандидатів для завершення, тому компанія company-dabbrevніколи не використовується для завершення, і ви ніколи не отримуєте foobarsentenceзавершення. Таким чином, ви можете змінити базові програми компанії так, щоб company-dabbrevце було раніше company-elisp(або company-capfостаннім часом emacsen). Але я здогадуюсь, що це не те, що ви хочете, оскільки це змінило б поточну ситуацію, і ви не отримаєте доповнення від emacs-lisp backkend (у такому випадку читайте далі).
Компанія пропонує спосіб об'єднати завершення з декількох джерел, використовуючи те, що воно називає groupedбекендами. Зазвичай учасниками company-backendsє окремі програмні пакети, але це також може бути перелік міток, у цьому випадку з’єднання заповнення з резервними пакетами, якщо вони повертаються однаково, prefixабо текст, який слід заповнити (див. Документацію company-backendsдля детального опису).
Тож якщо ви хочете об'єднати завершення з company-elisp(на останній час company-capfвикористовується emacsen ) і 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(текст, який слід заповнити). Це означає, що компанії, які кандидатимуть на програму backends після того, :withбуде ігноровано компанією, незалежно від того, повертається prefixчи ні, чи ні один із :withзворотних пакетів до повернення a prefix.
Ви можете встановити це локально у буфері emacs-lisp (я вважаю за краще це)