Oto jak działa kompletacja w firmie (upraszczam nieco bardziej szczegółowy opis w dokumentacji company-backends
C-hvcompany-backends
RET.
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-dabbrev
firma nigdy nie używa ich do ukończenia i nigdy się nie foobarsentence
kończy. Możesz więc chcieć zmienić backendy firmowe, aby pojawiły się company-dabbrev
wcześniej company-elisp
(lub company-capf
w 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 grouped
zwanych backendów. Zwykle członkowie company-backends
są 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 prefix
lub tekst do uzupełnienia ( company-backends
szczegółowy opis znajduje się w dokumentacji ).
Więc jeśli chcesz scalić uzupełnienia z company-elisp
(w ostatnim emacsen company-capf
jest używany) i company-dabbrev
po prostu zrób to
(add-to-list 'company-backends '(company-capf company-dabbrev))
Dodatkowo możesz łączyć różne backendy za pomocą :with
słowa kluczowego
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Różni się to od przykładowej listy backendów, :with
ponieważ firma użyje tylko backendów wcześniej :with
do określenia prefix
(tekst do uzupełnienia). Oznacza to, że kandydaci z backendów później :with
zostaną zignorowani przez firmę, niezależnie od tego, czy backendy zwrócą a prefix
czy nie, jeśli żaden z backendów przed :with
zwróci a prefix
.
Możesz ustawić to lokalnie w buforze emacs-lisp (wolę to zrobić)