Salta al búfer de documentación con modo empresa

10

Me he cambiado recientemente de auto-complete-modea company-modey divirtiéndose. Recientemente tuve que escribir un código Emacs Lisp. Comienzo a escribir mi función, se muestran los candidatos de finalización, presiono F1y la documentación se abre en otro búfer. Me gustaría saltar al búfer de documentación , pero a medida que escribo C-x ose cierra. Alguna pista?

petrux
fuente

Respuestas:

8

No veo una forma integrada en el modo de empresa para hacer esto, pero puede agregar su propio enlace de clave company-active-map.

Como experimento rápido, tomé la company-show-doc-bufferimplementación y simplemente eliminé el company--electric-docontenedor:

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

Puede vincular esto a otra tecla, por ejemplo C-F1, para abrir "permanentemente" el búfer de documentos:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)
glucas
fuente
Solo por completo: aquí está el problema que abrí en el repositorio del proyecto GitHub, y sugirieron seguir este camino.
Petrux
Solo quería publicar mi pequeño ajuste en caso de que quiera que esta ventana también sea seleccionada (defun my-company-show-doc-buffer () "Muestra temporalmente el búfer de documentación para la selección". (Interactivo) (let * ((seleccionado (enésima empresa-selección empresa-candidatos)) (doc-buffer (o (company-call-backend 'doc-buffer seleccionado) (error "No hay documentación disponible")))) (with-current-buffer doc-buffer (ir a -char (point-min))) (select-window (display-buffer doc-buffer t))))
sandric
4

Comentario del autor en una página que compara el modo empresa con el autocompletado :

¿Qué sucede cuando presionas F1 en modo empresa?

Utiliza pop-to-window para mostrar el búfer de ayuda, pero lo oculta antes del siguiente comando (a menos que ese comando sea scroll-other-window o scroll-other-window-down).

En base a eso, solo puede desplazarse por el búfer de documentación, no saltar a él.

Pero, mirando el código para company-show-doc-buffer, me di cuenta de que utiliza company--electric-do, la cual llamará de forma interactiva cualquier comando en company--electric-commands. Normalmente, contiene solo scroll-other-windowy scroll-other-window-down, pero tal vez pueda agregarlo other-windowa esa lista.

Davor Cubranic
fuente
Acabo de probar así: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")pero no funciona. Mientras escribo, C-...el búfer de ayuda se cierra. Lo mismo poner (add-to-list 'company--electric-commands 'other-window)en mi archivo de inicio.
Petrux
Sí, parece una compañía: electric-do utiliza save-window-excursionpara guardar / restaurar la configuración de la ventana, por lo que no funcionará. Puede que sea mejor vincular su propio comando 'show doc' a una tecla en el company-active-map.
glucas