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ć)