Vai al buffer della documentazione con la modalità azienda


10

Ho recentemente passato da auto-complete-modeal company-modee mi diverte. Di recente ho dovuto scrivere del codice Emacs Lisp. Comincio a digitare la mia funzione, vengono visualizzati i candidati al completamento, premo F1e la documentazione si apre in un altro buffer. Vorrei passare al buffer della documentazione , ma, mentre digito C-x o, viene chiuso. Qualche suggerimento?

Risposte:


8

Non vedo un modo integrato nella modalità azienda per farlo, ma è possibile aggiungere il proprio key binding a company-active-map.

Come rapido esperimento ho preso l' company-show-doc-bufferimplementazione e ho semplicemente rimosso il 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)))

Puoi associarlo a un'altra chiave, ad esempio C-F1, per aprire "permanentemente" il buffer dei documenti:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)

Solo per completezza: ecco il problema che ho aperto sul repository del progetto GitHub e mi hanno suggerito di seguire questa strada.
petrux,

Volevo solo pubblicare la mia piccola modifica nel caso in cui desideri che anche questa finestra venga selezionata (defun my-company-show-doc-buffer () "Mostra temporaneamente il buffer di documentazione per la selezione." (Interattivo) (let * ((selezionato (ennesimi candidati-società-società-di-selezione)) (doc-buffer (o (doc-buffer di compagnia-call-backend 'selezionato) (errore "Nessuna documentazione disponibile"))))) (con--------buffer-doc-buffer (goto -char (point-min))) (select-window (display-buffer doc-buffer t))))
sandric

4

Commento dell'autore su una pagina che confronta la modalità azienda con il completamento automatico :

Cosa succede quando si preme F1 in modalità azienda

Utilizza pop-to-window per visualizzare il buffer della guida, ma lo nasconde prima del comando successivo (a meno che quel comando non sia scroll-other-window o scroll-other-window-down).

Sulla base di ciò, è possibile solo scorrere il buffer della documentazione, non saltare ad esso.

Ma, guardando il codice per company-show-doc-buffer, ho notato che utilizza company--electric-do, che chiamerà in modo interattivo qualsiasi comando company--electric-commands. Normalmente contiene solo scroll-other-windowe scroll-other-window-down, ma forse è possibile aggiungere other-windowa tale elenco.


Ho appena provato in questo modo: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")ma non funziona. Durante la digitazione, C-...il buffer della guida si chiude. Lo stesso inserendo il (add-to-list 'company--electric-commands 'other-window)mio file init.
petrux,

Sì, sembra una compagnia - electric-do usa save-window-excursionper salvare / ripristinare la configurazione della finestra, quindi non funzionerà. Potrebbe essere meglio associare il proprio comando "show doc" a una chiave in company-active-map.
glucas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.