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-backends
RET.
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-dabbrev
non viene mai utilizzato dalla società per il completamento e non si arriva mai foobarsentence
al completamento. Quindi potresti voler cambiare i back-end aziendali in modo che vengano company-dabbrev
prima company-elisp
(o company-capf
negli 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 grouped
backend. Di solito i membri di company-backends
sono 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 prefix
o il testo da completare (consultare la documentazione di company-backends
per una descrizione dettagliata).
Quindi, se vuoi unire i completamenti da company-elisp
(in recente company-capf
viene utilizzato emacsen ) e company-dabbrev
semplicemente farlo
(add-to-list 'company-backends '(company-capf company-dabbrev))
Inoltre, puoi unire diversi backend usando la :with
parola chiave
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Questo è diverso dall'esempio di un elenco di backend senza :with
poiché la società utilizzerà solo i backend prima :with
per determinare il prefix
(il testo da completare). Ciò implica che i candidati dei backend successivi :with
verranno ignorati dalla società, indipendentemente dal fatto che i backend restituiscano a prefix
o no, se nessuno dei backend prima di :with
restituire a prefix
.
Potresti voler impostare questo localmente nel buffer emacs-lisp (preferisco farlo)