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?
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:
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))))
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.
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.
Komentar penulis pada halaman yang membandingkan mode perusahaan dengan lengkapi-otomatis :
Berdasarkan itu, Anda hanya dapat menggulir buffer dokumentasi, bukan melompat ke sana.
Tetapi, melihat kode untuk
company-show-doc-buffer
, saya perhatikan bahwa ia menggunakancompany--electric-do
, yang akan memanggil secara interaktif perintah apa pun dicompany--electric-commands
. Biasanya, ini hanya berisiscroll-other-window
danscroll-other-window-down
, tetapi mungkin Anda dapat menambahkanother-window
ke daftar itu.sumber
(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 mengetikC-...
, buffer bantuan ditutup. Penempatan yang sama(add-to-list 'company--electric-commands 'other-window)
di file init saya.save-window-excursion
untuk menyimpan / mengembalikan konfigurasi jendela, jadi itu tidak akan berfungsi. Anda mungkin lebih baik mengikat perintah 'show doc' Anda sendiri ke kunci dicompany-active-map
.