Як додати компанію-dabbrev до спливаючого вікна завершення компанії?


12

Налаштування:

Версія GUI GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) 2015-07-25 на KAEL

Складено з EmacsW64.

, використовуючи останню версію від MELPA

Біт Windows 7 x64.

Ситуація:

Наприклад, я набираю буферну фобарсентенцію.

А потім запустити новий рядок під цим і набравши fooba, я очікував, що мені foobarsentenceзапропонують запропонувати з вікна завершення спливаючого вікна компанії. Але немає foobarsentence.

Я довідався про це від іншої відповіді , який я міг би використовувати компанію-dabbrev`` для цього, пов'язаного, M-/. Але я не міг зрозуміти, як я можу "подати" пропозиції із company-dabbrevспливаючого вікна. Я зробив gif на екрані, щоб зрозуміти своє запитання.

введіть тут опис зображення

Як бачите, M-/дзвінки company-dabbrev. Але я хотів би побачити, що пропонується у спливаючому вікні завершення компанії. Мене це здивувало, це не за замовчуванням.

Будь-яка пропозиція, щоб "подати" пропозиції від company-dabbrevспливаючого вікна компанії?


Що це за мажорний режим?
PythonNut

Відповіді:


25

Ось як працює завершення в компанії (я спрощую трохи детальніший опис можна знайти в документації 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 (я вважаю за краще це)


@wasamasa дякую за відгук, відредагував мою відповідь на згадку:with
Iqbal Ansari

Сер, ви заслуговуєте на мій голос. Мені дуже сподобалось ваше пояснення та дізналися про компанію. Дякую за це.
ReneFroger

Радий, що можу допомогти
Ікбал Ансарі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.