Wie füge ich company-dabbrev zum Popup der Unternehmenserfüllung hinzu?


12

Installieren:

GUI-Version GNU Emacs 25.0.50.1 (x86_64-w64-mingw32) vom 25.07.2015 auf KAEL

Kompiliert aus EmacsW64.

unter Verwendung der neuesten Version von von MELPA

Windows 7 x 64-Bit.

Situation:

Zum Beispiel tippe ich die Puffer-Fobarsenz ein.

Beginnen Sie dann eine neue Zeile darunter und geben Sie fooba ein. Ich habe erwartet, dass foobarsentencesie im Popup-Abschlussfenster des Unternehmens vorgeschlagen wird. Aber es gibt keine foobarsentence.

Ich fand es von einer anderen Antwort, dass ich unternehmen dabbrev`` dafür verwenden könnte, gebunden, M-/. Aber ich konnte nicht herausfinden, wie ich die Vorschläge company-dabbrevin das Popup-Fenster "einspeisen" konnte. Ich habe ein Screencast-Gif erstellt, um meine Frage zu klären.

Bildbeschreibung hier eingeben

Wie Sie sehen können, M-/Anrufe company-dabbrev. Aber ich würde gerne sehen, dass in der Firma Abschluss Popup vorgeschlagen. Es hat mich überrascht, dass dies nicht die Standardeinstellung ist.

Irgendwelche Vorschläge, um die Vorschläge company-dabbrevin das Popup-Fenster des Unternehmens zu übernehmen?


Welcher Hauptmodus ist das?
PythonNut

Antworten:


24

So funktioniert die Fertigstellung im Unternehmen (ich vereinfache es ein wenig). Eine detailliertere Beschreibung finden Sie in der Dokumentation von company-backends C-hvcompany-backendsRET.

Sie haben eine Liste von Backends (Completion Engines), die Unternehmen versuchen sollten, die Vervollständigung zu einem bestimmten Zeitpunkt vorzunehmen. Das Unternehmen probiert jedes dieser Backends nacheinander aus, und das erste, das Kandidaten zurückgibt, wird zur Vervollständigung verwendet, und der Rest der Backends wird ignoriert. Standardmäßig wird also immer nur ein Backend verwendet.

In Ihrem Fall (Sie scheinen sich im emacs-lisp-Modus zu befinden) gibt das emacs-lisp-Backend Kandidaten zur Fertigstellung zurück und company-dabbrevwird daher von der Firma niemals zur Fertigstellung verwendet, und Sie werden niemals foobarsentencezur Fertigstellung gebracht. Vielleicht möchten Sie also das Back-End des Unternehmens so ändern, dass es company-dabbrevvor company-elisp(oder company-capfin neueren Versionen von Emacsen) kommt. Aber ich denke, das ist nicht das, was Sie wollen, da dies die aktuelle Situation umkehren würde und Sie keine Vervollständigungen vom emacs-lisp-Backend erhalten (in diesem Fall lesen Sie weiter).

Das Unternehmen bietet die Möglichkeit, Abschlüsse aus mehreren Quellen mithilfe von so genannten groupedBackends zusammenzuführen. Normalerweise sind die Mitglieder von company-backendseinzelne Backends, es kann sich aber auch um eine Liste von Backends handeln. In diesem Fall werden die Vervollständigungen aus den Backends zusammengeführt, sofern sie dieselben prefixoder den zu vervollständigenden Text zurückgeben (eine company-backendsausführliche Beschreibung finden Sie in der Dokumentation von ).

Also, wenn Sie Vervollständigungen von zusammenführen möchten company-elisp(auf neuere Emacsen company-capfverwendet wird) und dies company-dabbreveinfach tun

(add-to-list 'company-backends '(company-capf company-dabbrev))

Zusätzlich können Sie verschiedene Backends mit dem :withSchlüsselwort zusammenführen

(add-to-list 'company-backends '(company-capf :with company-dabbrev))

Dies unterscheidet sich von dem Beispiel einer Liste von Backends ohne, :withda die Firma nur die Backends zuvor :withzur Bestimmung des prefix(des zu vervollständigenden) Texts verwendet. Dies impliziert, dass die Kandidaten von Backends danach :withvom Unternehmen ignoriert werden, unabhängig davon, ob die Backends a zurückgeben prefixoder nein, wenn keines der Backends vor :witha zurückgibt prefix.

Möglicherweise möchten Sie dies lokal in Emacs-Lisp-Puffer festlegen (ich bevorzuge dies)


@wasamasa danke für das Feedback, bearbeitet meine Antwort zu erwähnen:with
Iqbal Ansari

Sir, Sie haben meine Stimme verdient. Ich habe Ihre Erklärung sehr genossen und Dinge über Company gelernt. Dank dafür.
ReneFroger

Ich bin froh, dass ich helfen konnte
Iqbal Ansari
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.