Aller au tampon de documentation avec le mode entreprise


10

Je suis récemment passé de auto-complete-modeà company-modeet je m'amuse. Récemment, j'ai dû écrire du code Lisp Emacs. Je commence à taper ma fonction, les candidats à l'achèvement sont affichés, j'appuie sur F1et la documentation s'ouvre dans un autre tampon. Je voudrais passer au tampon de documentation , mais, au fur et à mesure que je tape, C-x oil se ferme. Un indice?

Réponses:


8

Je ne vois pas de moyen intégré au mode entreprise pour le faire, mais vous pouvez ajouter votre propre liaison de clé à company-active-map.

Comme expérience rapide, j'ai pris l' company-show-doc-bufferimplémentation et j'ai simplement retiré le 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)))

Vous pouvez le lier à une autre clé, par exemple C-F1, pour ouvrir "en permanence" le tampon de documentation:

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

Juste pour être complet: voici le problème que j'ai ouvert sur le référentiel du projet GitHub, et ils ont suggéré de suivre cette voie.
petrux

Je voulais juste publier mon petit ajustement au cas où vous voudriez que cette fenêtre soit également sélectionnée (defun my-company-show-doc-buffer () "Afficher temporairement le tampon de documentation pour la sélection." (Interactif) (let * ((sélectionné (nth company-selection company-Candidates)) (doc-buffer (ou (company-call-backend 'doc-buffer selected) (erreur "Aucune documentation disponible"))))) (with-current-buffer doc-buffer (goto -char (point-min))) (fenêtre de sélection (tampon d'affichage doc-tampon t)))))
sandric

4

Commentaire de l'auteur sur une page comparant le mode entreprise à la saisie semi-automatique :

Que se passe-t-il lorsque vous appuyez sur F1 en mode entreprise

Il utilise pop-to-window pour afficher le tampon d'aide, mais le masque avant la commande suivante (sauf si cette commande est scroll-other-window ou scroll-other-window-down).

Sur cette base, vous pouvez uniquement faire défiler le tampon de documentation, pas y accéder.

Mais, en regardant le code de pour company-show-doc-buffer, je remarquai qu'il utilise company--electric-do, qui fera appel de manière interactive toutes les commandes company--electric-commands. Normalement, il ne contient que scroll-other-windowet scroll-other-window-down, mais vous pouvez peut-être ajouter other-windowà cette liste.


Je viens de tester comme ça: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")mais ça ne marche pas. Au fur et à mesure que je tape, C-...le tampon d'aide se ferme. La même mise (add-to-list 'company--electric-commands 'other-window)dans mon fichier init.
petrux

Ouais, ressemble à l'entreprise - electric-do utilise save-window-excursionpour enregistrer / restaurer la configuration de la fenêtre, donc cela ne fonctionnera pas. Vous feriez mieux de lier votre propre commande 'show doc' à une clé dans le company-active-map.
glucas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.