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.