Jak dodać company-dabbrev do wyskakującego okienka zakończenia firmy?

12

Ustawiać:

Wersja GUI GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) z dnia 2015-07-25 na KAEL

Kompilacja z EmacsW64.

, przy użyciu najnowszej wersji MELPA

Windows 7 x64 bit.

Sytuacja:

Na przykład piszę w buforze fobarsentencji.

A potem rozpocznij nowy wiersz poniżej i pisząc fooba, spodziewałem się, że dostanę foobarsentencesugestię z okna wyskakującego okna Firmy. Ale nie ma foobarsentence.

Dowiedziałem się z innej odpowiedzi, że mógłbym użyć do tego firmy-dabbrev`` M-/. Ale nie mogłem wymyślić, jak mogę „zasugerować” sugestie company-dabbrevdo wyskakującego okienka. Zrobiłem gif screencast, aby wyjaśnić moje pytanie.

wprowadź opis zdjęcia tutaj

Jak widać, M-/połączenia company-dabbrev. Chciałbym jednak zobaczyć to sugerowane w wyskakującym oknie firmy. Zaskoczyło mnie to, że nie jest to domyślnie.

Wszelkie sugestie w celu „przesłania” sugestii company-dabbrevdo wyskakującego okienka firmy?

ReneFroger
źródło
Co to jest tryb główny?
PythonNut

Odpowiedzi:

25

Oto jak działa kompletacja w firmie (upraszczam nieco bardziej szczegółowy opis w dokumentacji company-backends C-hvcompany-backendsRET.

Masz listę backendów (mechanizmów ukończenia), które firma powinna spróbować zrealizować w punkcie. Firma wypróbowuje każdy z tych backendów jeden po drugim, a pierwszy, który zwraca dowolnych kandydatów, jest wykorzystywany do zakończenia, a reszta backendów jest ignorowana. Tak więc domyślnie używany jest tylko jeden backend na raz.

W twoim przypadku (wydaje się, że jesteś w trybie emacs-lisp) backend emacs-lisp zwraca kandydatów do ukończenia, dlatego company-dabbrevfirma nigdy nie używa ich do ukończenia i nigdy się nie foobarsentencekończy. Możesz więc chcieć zmienić backendy firmowe, aby pojawiły się company-dabbrevwcześniej company-elisp(lub company-capfw ostatnim emacsen). Ale myślę, że to nie jest to, czego chcesz, ponieważ odwróciłoby to obecną sytuację i nie dostaniesz uzupełnień z backendu emacs-lisp (w którym to przypadku czytaj dalej).

Firma zapewnia sposób scalania uzupełnień z wielu źródeł przy użyciu tak groupedzwanych backendów. Zwykle członkowie company-backendssą pojedynczymi backendami, ale może to być także lista backendów, w którym to przypadku zakończenie z backendów jest scalane, pod warunkiem, że zwracają to samo prefixlub tekst do uzupełnienia ( company-backendsszczegółowy opis znajduje się w dokumentacji ).

Więc jeśli chcesz scalić uzupełnienia z company-elisp(w ostatnim emacsen company-capfjest używany) i company-dabbrevpo prostu zrób to

(add-to-list 'company-backends '(company-capf company-dabbrev))

Dodatkowo możesz łączyć różne backendy za pomocą :withsłowa kluczowego

(add-to-list 'company-backends '(company-capf :with company-dabbrev))

Różni się to od przykładowej listy backendów, :withponieważ firma użyje tylko backendów wcześniej :withdo określenia prefix(tekst do uzupełnienia). Oznacza to, że kandydaci z backendów później :withzostaną zignorowani przez firmę, niezależnie od tego, czy backendy zwrócą a prefixczy nie, jeśli żaden z backendów przed :withzwróci a prefix.

Możesz ustawić to lokalnie w buforze emacs-lisp (wolę to zrobić)

Iqbal Ansari
źródło
@wasamasa dziękuję za opinię, zredagowałem moją odpowiedź, aby wspomnieć:with
Iqbal Ansari
Sir, zasługujesz na mój głos. Naprawdę podobało mi się twoje wyjaśnienie i dowiedziałem się czegoś o firmie. Dziękuję za to.
ReneFroger
Cieszę się, że mogłem pomóc
Iqbal Ansari