Inilah cara penyelesaian dalam pekerjaan perusahaan (saya menyederhanakan sedikit deskripsi yang lebih rinci dapat ditemukan dalam dokumentasi company-backends C-hvcompany-backendsRET.
Anda memiliki daftar backend (mesin penyelesaian) perusahaan harus mencoba untuk memberikan penyelesaian pada titik. Perusahaan mencoba masing-masing backend ini satu demi satu dan yang pertama yang mengembalikan setiap kandidat digunakan untuk penyelesaian dan sisanya dari backend diabaikan. Jadi secara default hanya satu backend yang digunakan sekaligus.
Dalam kasus Anda (Anda tampak dalam mode emacs-lisp-mode) backend emacs-lisp adalah mengembalikan kandidat untuk penyelesaian dan karenanya company-dabbrevtidak pernah digunakan oleh perusahaan untuk penyelesaian dan Anda tidak pernah mendapatkan foobarsentencepenyelesaian. Jadi, Anda mungkin ingin mengubah backend perusahaan sehingga company-dabbrevdatang sebelumnya company-elisp(atau company-capfdi emacsen baru-baru ini). Tapi saya kira itu bukan yang Anda inginkan karena itu akan membalikkan situasi saat ini dan Anda tidak akan mendapatkan penyelesaian dari backend emacs-lisp (dalam hal ini baca terus).
Perusahaan menyediakan cara untuk menggabungkan penyelesaian dari berbagai sumber menggunakan apa yang disebutnya groupedbackend. Biasanya anggota company-backendsbackend individu, tetapi juga bisa menjadi daftar backend dalam hal penyelesaian dari backend digabung asalkan mereka mengembalikan yang sama prefixatau teks yang harus dilengkapi (silakan lihat dokumentasi company-backendsuntuk deskripsi rinci).
Jadi jika Anda ingin menggabungkan penyelesaian dari company-elisp(pada emacsen terbaru company-capfdigunakan) dan company-dabbrevcukup lakukan ini
(add-to-list 'company-backends '(company-capf company-dabbrev))
Selain itu, Anda dapat menggabungkan berbagai backend menggunakan :withkata kunci
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Ini berbeda dari contoh daftar backend tanpa :withkarena perusahaan hanya akan menggunakan backend sebelum :withuntuk menentukan prefix(teks yang harus diisi). Ini menyiratkan bahwa calon dari backend setelah :withakan diabaikan oleh perusahaan, terlepas dari apakah backend mengembalikan a prefixatau tidak, jika tidak ada dari backend sebelum :withmengembalikan a prefix.
Anda mungkin ingin mengatur ini secara lokal di buffer emacs-lisp (saya lebih suka melakukannya)