Ist es möglich, die Fertigstellung des Unternehmens ohne Präfix zu starten?

8

Die automatische Vervollständigung ist besonders nützlich beim Schreiben von CSS, um die verfügbaren Optionen für eine bestimmte Eigenschaft anzuzeigen. Das Unternehmen company-minimum-prefix-lengthsteuert, wie viele Zeichen ich eingeben muss, bevor Optionen angeboten werden.

Ich möchte jedoch eine Fertigstellung ohne Zeichen, daher erhalte ich Folgendes:

Firmenmodus Abschluss von CSS

Derzeit kann ich dies nur von beiden bekommen:

  1. Explizit anrufen M-x company-complete
  2. Einstellen (setq company-minimum-prefix-length 0), Eingeben eines einzelnen Zeichens und Rücktaste, z a DEL.

Ist das möglich? Idealerweise kann ich dies sowohl für Eigenschaften als auch für deren Werte tun.

Wilfred Hughes
quelle
Das Problem ist jedoch, dass die Fertigstellung immer aktiviert ist. Es wäre für Eigenschaften und zumindest für Selektoren aktiviert. Es gibt so viele Eigenschaften, dass eine Vervollständigung ohne Präfix nicht sehr hilfreich wäre und nur Platz auf dem Bildschirm beanspruchen würde. Möchten Sie kontextsensitive Vervollständigungseigenschaften?
PythonNut
Ja, ich nehme an, es ist kontextbezogen: Ich habe überlegt, den Befehl zum Einfügen selbst einzufügen, um die Vervollständigung im Leerzeichen auszulösen, aber das hilft nur für Werte. Obwohl ich denke, dass die Vervollständigung ohne Präfix nützlich ist, auch für Eigenschaften. (Ich lerne mehr CSS und das Dropdown zeigt mehr als 10 mit einer Bildlaufleiste).
Wilfred Hughes
"Ein einzelnes Zeichen und eine Rücktaste eingeben" Warum das? Mit company-minimum-prefix-lengthauf 0 gesetzt ist , wird Sie bereits die Fertigstellung Pop - up nach der Eingabe von Raum sehen. Nicht nach Drücken der Eingabetaste.
Dmitry
@Dmitry Ich sehe dieses Verhalten nicht. Welche Unternehmensversion verwenden Sie?
Wilfred Hughes
@ WilfredHughes Meister.
Dmitry

Antworten:

5

In solchen Fällen verwende ich TAB, um den Unternehmensmodus bei Bedarf auszulösen - in Ihrem CSS-Beispiel funktioniert dies einwandfrei. Ich benutze auch TAB zum Einrücken ( tab-always-indentsetzen auf complete). Sie können das Unternehmen indent-for-tab-commandmithilfe der hier beschriebenen Konfiguration in das integrierte System integrieren: https://github.com/company-mode/company-mode/issues/94#issuecomment-40884387

Hier ist der relevante Code aus dem verlinkten Github-Kommentar:

(define-key company-mode-map [remap indent-for-tab-command]
  'company-indent-for-tab-command)

(setq tab-always-indent 'complete)

(defvar completion-at-point-functions-saved nil)

(defun company-indent-for-tab-command (&optional arg)
  (interactive "P")
  (let ((completion-at-point-functions-saved completion-at-point-functions)
        (completion-at-point-functions '(company-complete-common-wrapper)))
    (indent-for-tab-command arg)))

(defun company-complete-common-wrapper ()
  (let ((completion-at-point-functions completion-at-point-functions-saved))
    (company-complete-common)))
Glucas
quelle
3

Ab den neuesten Versionen von companyist dies der richtige Weg:

(define-key company-mode-map [remap indent-for-tab-command] #'company-indent-or-complete-common)
Alexander Shukaev
quelle