Wechseln Sie im Firmenmodus zum Dokumentationspuffer

10

Ich habe vor kurzem von auto-complete-modezu gewechselt company-modeund ich habe Spaß. Vor kurzem musste ich Emacs Lisp-Code schreiben. Ich beginne meine Funktion einzugeben, Abschlusskandidaten werden angezeigt, ich drücke F1und die Dokumentation wird in einem anderen Puffer geöffnet. Ich würde gerne zum Dokumentationspuffer springen , aber während ich tippe C-x o, wird er geschlossen. Irgendein Hinweis?

Petrux
quelle

Antworten:

8

Ich sehe keine Möglichkeit, dies im Firmenmodus zu tun, aber Sie können Ihre eigene Schlüsselbindung hinzufügen company-active-map.

Als schnelles Experiment nahm ich die company-show-doc-bufferImplementierung und entfernte einfach den company--electric-doWrapper:

(defun my/company-show-doc-buffer ()
  "Temporarily show the documentation buffer for the selection."
  (interactive)
  (let* ((selected (nth company-selection company-candidates))
         (doc-buffer (or (company-call-backend 'doc-buffer selected)
                         (error "No documentation available"))))
    (with-current-buffer doc-buffer
      (goto-char (point-min)))
    (display-buffer doc-buffer t)))

Sie können dies an einen anderen Schlüssel binden, z. B. C-F1, um den Dokumentpuffer "dauerhaft" zu öffnen:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)
Glucas
quelle
Nur der Vollständigkeit halber: Hier ist das Problem, das ich im Repository des GitHub-Projekts geöffnet habe, und sie haben vorgeschlagen, diesen Weg einzuschlagen.
Petrux
Ich wollte nur meine kleine Optimierung veröffentlichen, falls dieses Fenster ebenfalls ausgewählt werden soll (defun my-company-show-doc-buffer () "Zeigt vorübergehend den Dokumentationspuffer für die Auswahl an." (Interaktiv) (let * ((ausgewählt) (n-te Firmenauswahl Firmenkandidaten)) (doc-buffer (oder (firmen-call-backend 'doc-buffer selected) (Fehler "Keine Dokumentation verfügbar")))) (with-current-buffer doc-buffer (goto -char (point-min))) (Auswahlfenster (Anzeigepuffer doc-buffer t))))
Sandric
4

Kommentar des Autors auf einer Seite , auf der der Unternehmensmodus mit der automatischen Vervollständigung verglichen wird :

Was passiert, wenn Sie im Firmenmodus F1 drücken?

Es zeigt Pop-to-Window an, um den Hilfepuffer anzuzeigen, verbirgt ihn jedoch vor dem nächsten Befehl (es sei denn, dieser Befehl lautet scroll-other-window oder scroll-other-window-down).

Auf dieser Grundlage können Sie nur durch den Dokumentationspuffer scrollen und nicht dorthin springen.

Aber als ich mir den Code ansah company-show-doc-buffer, bemerkte ich, dass er verwendet company--electric-do, wodurch alle Befehle in interaktiv aufgerufen werden company--electric-commands. Normalerweise enthält es nur scroll-other-windowund scroll-other-window-down, aber vielleicht können Sie other-windowdieser Liste hinzufügen .

Davor Cubranic
quelle
Ich habe gerade so getestet: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")aber es funktioniert nicht. Während ich tippe, wird C-...der Hilfepuffer geschlossen. Das gleiche (add-to-list 'company--electric-commands 'other-window)in meine Init-Datei setzen.
Petrux
Ja, sieht aus wie eine Firma - Electric-Do verwendet save-window-excursiondas Speichern / Wiederherstellen der Fensterkonfiguration, sodass es nicht funktioniert. Sie sind möglicherweise besser dran, Ihren eigenen Befehl 'show doc' an einen Schlüssel im zu binden company-active-map.
Glucas