Ecco come funziona il completamento in azienda (sto semplificando un po 'una descrizione più dettagliata può essere trovata nella documentazione di company-backends C-hvcompany-backendsRET.
Hai un elenco di backend (motori di completamento) che l'azienda dovrebbe provare a fornire il completamento al punto. La società prova ciascuno di questi backend uno dopo l'altro e il primo che restituisce qualsiasi candidato viene utilizzato per il completamento e il resto dei backend viene ignorato. Quindi, per impostazione predefinita, viene utilizzato solo un backend alla volta.
Nel tuo caso (sembri in emacs-lisp-mode) il back-end di emacs-lisp sta restituendo i candidati per il completamento e quindi company-dabbrevnon viene mai utilizzato dalla società per il completamento e non si arriva mai foobarsentenceal completamento. Quindi potresti voler cambiare i back-end aziendali in modo che vengano company-dabbrevprima company-elisp(o company-capfnegli emacsen recenti). Ma suppongo che non sia quello che vuoi dal momento che ciò rovescerebbe la situazione attuale e non otterrai i completamenti dal backend di emacs-lisp (nel qual caso continua a leggere).
La società fornisce un modo per unire i completamenti da più fonti utilizzando ciò che chiama groupedbackend. Di solito i membri di company-backendssono singoli backend, ma può anche essere un elenco di backend nel qual caso il completamento dei backend viene unito a condizione che restituiscano lo stesso prefixo il testo da completare (consultare la documentazione di company-backendsper una descrizione dettagliata).
Quindi, se vuoi unire i completamenti da company-elisp(in recente company-capfviene utilizzato emacsen ) e company-dabbrevsemplicemente farlo
(add-to-list 'company-backends '(company-capf company-dabbrev))
Inoltre, puoi unire diversi backend usando la :withparola chiave
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Questo è diverso dall'esempio di un elenco di backend senza :withpoiché la società utilizzerà solo i backend prima :withper determinare il prefix(il testo da completare). Ciò implica che i candidati dei backend successivi :withverranno ignorati dalla società, indipendentemente dal fatto che i backend restituiscano a prefixo no, se nessuno dei backend prima di :withrestituire a prefix.
Potresti voler impostare questo localmente nel buffer emacs-lisp (preferisco farlo)