Şirket modu ile belge arabelleğine atla


10

Geçenlerde geçiş yaptınız auto-complete-modeetmek company-modeeğlenmek ve ben. Son zamanlarda Emacs Lisp kodu yazmak zorunda kaldım. İşlevimi yazmaya başlarım, tamamlama adayları gösterilir, basarım F1ve belgeler başka bir arabellekte açılır. Dokümantasyon tamponuna atlamak istiyorum , ama C-x oyazarken kapanıyor. İpucu var mı?

Yanıtlar:


8

Bunu yapmak için şirket modunda yerleşik bir yol görmüyorum, ancak kendi anahtar bağlantınızı ekleyebilirsiniz company-active-map.

Hızlı bir deneme olarak company-show-doc-bufferuygulamayı aldım ve company--electric-doambalajı kaldırdım :

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

Belge arabelleğini "kalıcı olarak" açmak için bunu başka bir anahtara, örneğin C-F1'e bağlayabilirsiniz:

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

Sadece bütünlük uğruna: İşte GitHub projesinin deposunda açtığım sorun ve bu yolda ilerlemelerini önerdiler.
petrux

Ben sadece bu pencerenin de seçilmesini istiyorsanız benim küçük tweak göndermek istedim (defun benim şirket-show-doc-buffer () "Geçici seçim için belge tampon göstermek." (Etkileşimli) (let * ((seçili (n. şirket seçimi şirket adayları)) (doc-buffer (veya (company-call-backend 'doc-buffer seçildi) (hata "Belge mevcut değil"))))) (mevcut-buffer doc-buffer ile (goto -char (nokta-dk))) (select-window (display-buffer doc-buffer t))))
sandric

4

Yazarın şirket modunu otomatik tamamlama ile karşılaştıran bir sayfadaki yorumu :

Şirket modunda F1 tuşuna bastığınızda ne olur?

Yardım arabelleğini görüntülemek için açılır pencereyi kullanır, ancak bir sonraki komuttan önce gizler (bu komut diğer pencere kaydırma veya diğer pencere kaydırma aşağı değilse).

Buna dayanarak, sadece belge arabelleğini kaydırabilirsiniz, ona atlamazsınız.

Ama, şu an kod için company-show-doc-buffer, ben kullandığını fark company--electric-doetkileşimli herhangi komutları arayacak olan company--electric-commands. Normalde, yalnızca scroll-other-windowve içerir scroll-other-window-down, ancak belki other-windowbu listeye ekleyebilirsiniz .


Sadece böyle test ettim: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")ama işe yaramıyor. Yazarken C-...kapanır tampon da. Aynı şey (add-to-list 'company--electric-commands 'other-window)benim init dosyama koymak .
petrux

Evet, şirkete benziyor - electric-do save-window-excursion, pencere yapılandırmasını kaydetmek / geri yüklemek için kullanır , bu yüzden çalışmaz. Kendi 'show doc' komutunuzu içindeki bir tuşa bağlamanız daha iyi olabilir company-active-map.
glucas
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.