Beralih ke buffer dokumentasi dengan mode perusahaan

10

Saya baru saja beralih dari auto-complete-modeke company-modedan saya bersenang-senang. Baru-baru ini saya harus menulis beberapa kode Emacs Lisp. Saya mulai mengetik fungsi saya, kandidat penyelesaian ditampilkan, saya tekan F1dan dokumentasi terbuka di buffer lain. Saya ingin melompat ke buffer dokumentasi , tetapi, saat saya mengetiknya C-x oakan ditutup. Ada petunjuk?

petrux
sumber

Jawaban:

8

Saya tidak melihat cara bawaan untuk mode perusahaan untuk melakukan ini, tetapi Anda dapat menambahkan pengikatan kunci Anda sendiri company-active-map.

Sebagai percobaan cepat saya mengambil company-show-doc-bufferimplementasi dan hanya menghapus company--electric-dobungkusnya:

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

Anda dapat mengikat ini ke kunci lain, misalnya C-F1, untuk "secara permanen" membuka buffer doc:

    (define-key company-active-map (kbd "C-<f1>") #'my/company-show-doc-buffer)
glukas
sumber
Hanya demi kelengkapan: di sini adalah masalah saya dibuka pada repositori proyek GitHub, dan mereka menyarankan untuk turun jalan ini.
petrux
Saya hanya ingin memposting tweak kecil saya jika Anda ingin jendela ini juga bisa dipilih (defun my-company-show-doc-buffer () "Tampilkan sementara buffer dokumentasi untuk seleksi." (Interaktif) (biarkan * (dipilih) (n perusahaan-kandidat perusahaan-seleksi)) (buffer-doc (atau (buffer-panggilan-backend-perusahaan-dipilih) (kesalahan "Tidak ada dokumentasi tersedia"))))) (dengan-buffer-saat ini buffer-dok (goto -char (point-min))) (jendela-pilih (display-buffer doc-buffer t))))
sandric
4

Komentar penulis pada halaman yang membandingkan mode perusahaan dengan lengkapi-otomatis :

Apa yang terjadi ketika Anda menekan F1 dalam mode perusahaan

Ini menggunakan pop-to-window untuk menampilkan buffer bantuan, tetapi menyembunyikannya sebelum perintah berikutnya (kecuali perintah itu adalah scroll-other-window atau scroll-other-window-down).

Berdasarkan itu, Anda hanya dapat menggulir buffer dokumentasi, bukan melompat ke sana.

Tetapi, melihat kode untuk company-show-doc-buffer, saya perhatikan bahwa ia menggunakan company--electric-do, yang akan memanggil secara interaktif perintah apa pun di company--electric-commands. Biasanya, ini hanya berisi scroll-other-windowdan scroll-other-window-down, tetapi mungkin Anda dapat menambahkan other-windowke daftar itu.

Davor Cubranic
sumber
Saya baru saja diuji seperti ini: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")tetapi tidak berhasil. Saat saya mengetik C-..., buffer bantuan ditutup. Penempatan yang sama (add-to-list 'company--electric-commands 'other-window)di file init saya.
petrux
Ya, sepertinya perusahaan - electric-do digunakan save-window-excursionuntuk menyimpan / mengembalikan konfigurasi jendela, jadi itu tidak akan berfungsi. Anda mungkin lebih baik mengikat perintah 'show doc' Anda sendiri ke kunci di company-active-map.
glucas