Voici comment fonctionne l'achèvement en entreprise (je simplifie un peu une description plus détaillée peut être trouvée dans la documentation de company-backends
C-hvcompany-backends
RET.
Vous avez une liste de backends (moteurs de complétion) que la société doit essayer de fournir au moment voulu. La société essaie chacun de ces backends l'un après l'autre et le premier qui retourne les candidats est utilisé pour l'achèvement et les autres backends sont ignorés. Donc, par défaut, un seul backend est utilisé à la fois.
Dans votre cas (vous semblez en mode emacs-lisp), le backend emacs-lisp renvoie les candidats à l'achèvement et company-dabbrev
n'est donc jamais utilisé par l'entreprise pour l'achèvement et vous n'obtenez jamais l' foobarsentence
achèvement. Donc, vous voudrez peut-être changer les backends de l' entreprise afin que cela company-dabbrev
précède company-elisp
(ou company-capf
dans les emacsen récents). Mais je suppose que ce n'est pas ce que vous voulez, car cela inverserait la situation actuelle et vous n'obtiendrez pas les compléments du backend emacs-lisp (auquel cas lisez la suite).
La société fournit un moyen de fusionner les complétions à partir de plusieurs sources en utilisant ce qu'elle appelle des grouped
backends. Habituellement, les membres de company-backends
sont des backends individuels, mais il peut également s'agir d'une liste de backends auquel cas l'achèvement des backends est fusionné à condition qu'ils retournent le même prefix
ou le texte à compléter (veuillez consulter la documentation de company-backends
pour une description détaillée).
Donc, si vous voulez fusionner les finitions de company-elisp
(sur Emacsen récent company-capf
est utilisé) et company-dabbrev
faites simplement cela
(add-to-list 'company-backends '(company-capf company-dabbrev))
De plus, vous pouvez fusionner différents backends à l'aide du :with
mot clé
(add-to-list 'company-backends '(company-capf :with company-dabbrev))
Ceci est différent de l'exemple sans liste de backends :with
car la société n'utilisera que les backends avant :with
pour déterminer le prefix
(le texte à compléter). Cela implique que les candidats des backends après :with
seront ignorés par la société, que les backends retournent prefix
ou non, si aucun des backends avant :with
retour a prefix
.
Vous voudrez peut-être définir cela localement dans le tampon emacs-lisp (je préfère le faire)