Ir para o buffer de documentação com o modo de empresa

10

Recentemente, mudei de auto-complete-modepara company-modee me divirto. Recentemente, tive que escrever um código Emacs Lisp. Começo a digitar minha função, são exibidos candidatos à conclusão, pressiono F1e a documentação é aberta em outro buffer. Gostaria de pular para o buffer de documentação , mas, enquanto digito, C-x oele é fechado. Alguma dica?

petrux
fonte

Respostas:

8

Não vejo uma maneira incorporada no modo da empresa para fazer isso, mas você pode adicionar sua própria ligação de chave company-active-map.

Como um experimento rápido, peguei a company-show-doc-bufferimplementação e simplesmente removi o 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)))

Você pode vincular isso a outra chave, por exemplo, C-F1, para "permanentemente" abrir o buffer de documentos:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)
glucas
fonte
Por uma questão de integridade: aqui está o problema que abri no repositório do projeto GitHub, e eles sugeriram seguir esse caminho.
precisa saber é
Eu só queria postar meu pequeno ajuste, caso você deseje que essa janela também seja selecionada (desative minha empresa-show-doc-buffer () "Mostrar temporariamente o buffer de documentação da seleção." (Interativo) (deixe * ((selecionado (enésima seleção de empresa - candidatos à empresa)) (buffer de documento (ou (buffer de doc de empresa chamada de back-end 'selecionado)) (erro "Nenhuma documentação disponível"))))) (buffer de doc com buffer atual com -char (point-min))) (janela de seleção (buffer de exibição doc-buffer t))))
sandric
4

Comentário do autor em uma página que compara o modo da empresa ao preenchimento automático :

O que acontece quando você pressiona F1 no modo empresa

Ele usa pop-to-window para exibir o buffer de ajuda, mas o oculta antes do próximo comando (a menos que esse comando seja scroll-other-window ou scroll-other-window-down).

Com base nisso, você pode rolar apenas o buffer da documentação, não pular para ele.

Mas, olhando para o código para company-show-doc-buffer, notei que ele usa company--electric-do, que irá chamar interativamente quaisquer comandos no company--electric-commands. Normalmente, ele contém apenas scroll-other-windowe scroll-other-window-down, mas talvez você possa adicionar other-windowa essa lista.

Davor Cubranic
fonte
Acabei de testar assim: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")mas não funciona. Enquanto digito, C-...o buffer de ajuda é fechado. O mesmo colocando (add-to-list 'company--electric-commands 'other-window)no meu arquivo init.
petrux
Sim, parece empresa - o electric-do usa save-window-excursionpara salvar / restaurar a configuração da janela, para que não funcione. É melhor vincular seu próprio comando 'show doc' a uma chave no company-active-map.
glucas