Ось як працює завершення в компанії (я спрощую трохи детальніший опис можна знайти в документації company-backends
C-hvcompany-backends
RET.
У вас є список зворотних механізмів (двигунів добудови), компанія повинна спробувати забезпечити завершення в пункті. Компанія випробовує кожен цей сервер один за іншим, і перший, який повертає будь-яких кандидатів, використовується для завершення, а решта повернення ігнорується. Тож за замовчуванням використовується одночасно лише один бекенд.
У вашому випадку (ви, здається, в режимі 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 (я вважаю за краще це)