Як додати компанію-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.