Przejdź do bufora dokumentacji w trybie firmowym

10

Mam od niedawna auto-complete-modesię company-modei zabawy. Ostatnio musiałem napisać kod Emacsa Lispa. Zaczynam pisać moją funkcję, pokazani są kandydaci do ukończenia, naciskam F1i dokumentacja otwiera się w innym buforze. Chciałbym przeskoczyć do bufora dokumentacji , ale podczas pisania C-x osię zamyka. Jakaś wskazówka?

petrux
źródło

Odpowiedzi:

8

Nie widzę wbudowanego do tego trybu wbudowanego, aby to zrobić, ale możesz dodać własne powiązanie z kluczem company-active-map.

Jako szybki eksperyment wziąłem company-show-doc-bufferimplementację i po prostu usunąłem company--electric-doopakowanie:

(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)))

Możesz powiązać to z innym kluczem, na przykład C-F1, aby „na stałe” otworzyć bufor dokumentów:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)
glucas
źródło
Tylko ze względu na kompletność: oto problem, który otworzyłem w repozytorium projektu GitHub, i zasugerowali pójście tą drogą.
petrux
Chciałem tylko opublikować moją drobną poprawkę na wypadek, gdyby to okno również zostało wybrane (defun my-company-show-doc-buffer () „Tymczasowo pokaż bufor dokumentacji dla wyboru.” (Interaktywne) (let * ((zaznaczono (n-ty wybór firmy-kandydaci na firmę)) (bufor-doc (lub (wybrany bufor-wezwanie do firmy) (błąd „Brak dostępnej dokumentacji”)))) (z bieżącym buforem bufor-doc (goto -char (punkt-min))) (okno wyboru (bufor bufora wyświetlania doc-bufor t))))
sandric
4

Komentarz autora na stronie porównującej tryb firmowy z autouzupełnianiem :

Co się stanie, gdy naciśniesz F1 w trybie firmowym

Używa opcji pop-to-window do wyświetlenia bufora pomocy, ale ukrywa go przed następnym poleceniem (chyba że polecenie to przewiń inne okno lub przewiń inne okno).

Na tej podstawie możesz jedynie przewijać bufor dokumentacji, a nie przeskakiwać do niego.

Ale patrząc na kod dla company-show-doc-buffer, zauważyłem, że używa company--electric-do, który wezwie interaktywnie żadnych poleceń company--electric-commands. Zwykle zawiera tylko scroll-other-windowi scroll-other-window-down, ale może możesz dodać other-windowdo tej listy.

Davor Cubranic
źródło
Właśnie testowałem w ten sposób: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")ale to nie działa. Podczas pisania C-...bufor pomocy zamyka się. To samo umieszczenie (add-to-list 'company--electric-commands 'other-window)w moim pliku init.
petrux,
Tak, wygląda jak firma - electric-do używa save-window-excursiondo zapisywania / przywracania konfiguracji okna, więc nie będzie działać. Lepiej powiąż swoje własne polecenie „pokaż dokument” z klawiszem w company-active-map.
glucas