Chuyển đến bộ đệm tài liệu với chế độ công ty


10

Gần đây tôi đã chuyển từ auto-complete-modeđến company-modevà tôi vui vẻ. Gần đây tôi đã phải viết một số mã Lisp của Emacs. Tôi bắt đầu nhập chức năng của mình, các ứng cử viên hoàn thành được hiển thị, tôi nhấn F1và tài liệu mở ra trong một bộ đệm khác. Tôi muốn chuyển đến bộ đệm tài liệu , nhưng, khi tôi gõ C-x onó sẽ bị đóng. Có gợi ý nào không?

Câu trả lời:


8

Tôi không thấy một cách được xây dựng trong chế độ công ty để làm điều này, nhưng bạn có thể thêm ràng buộc khóa của riêng mình vào company-active-map.

Như một thử nghiệm nhanh, tôi đã company-show-doc-bufferthực hiện và chỉ cần gỡ bỏ company--electric-dotrình bao bọc:

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

Bạn có thể liên kết khóa này với khóa khác, ví dụ C-F1, để "mở" vĩnh viễn bộ đệm doc:

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

Chỉ vì mục đích hoàn chỉnh: đây là vấn đề tôi đã mở trên kho lưu trữ của dự án GitHub và họ đề nghị đi theo con đường này.
petrux

Tôi chỉ muốn đăng bài chỉnh sửa nhỏ của mình trong trường hợp bạn muốn cửa sổ này cũng được chọn (defun my-company-show-doc-buffer () "Hiển thị tạm thời bộ đệm tài liệu cho lựa chọn." (Tương tác) (let * ((được chọn (nth chọn công ty-ứng cử viên công ty)) (doc-đệm (hoặc (doc-call-backend 'doc-buffer đã chọn) (lỗi "Không có tài liệu có sẵn"))) (với doc-đệm-đệm-đệm (goto -char (point-min))) (cửa sổ chọn (bộ đệm hiển thị doc-đệm t))))
sandric

4

Nhận xét của tác giả trên một trang so sánh chế độ công ty với tự động hoàn thành :

Điều gì xảy ra khi bạn nhấn F1 ở chế độ công ty

Nó sử dụng cửa sổ bật lên để hiển thị bộ đệm trợ giúp, nhưng ẩn nó trước lệnh tiếp theo (trừ khi lệnh đó là cuộn cửa sổ khác hoặc cuộn cửa sổ khác xuống).

Dựa vào đó, bạn chỉ có thể cuộn bộ đệm tài liệu, không thể nhảy tới nó.

Nhưng, nhìn vào cho company-show-doc-buffer, tôi nhận thấy rằng nó sử dụng company--electric-do, nó sẽ gọi tương tác bất kỳ lệnh nào trong company--electric-commands. Thông thường, nó chỉ chứa scroll-other-windowscroll-other-window-down, nhưng có lẽ bạn có thể thêm other-windowvào danh sách đó.


Tôi chỉ thử nghiệm như thế này: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")nhưng nó không hoạt động. Khi tôi gõ C-...bộ đệm trợ giúp đóng lại. Cùng đưa (add-to-list 'company--electric-commands 'other-window)vào tập tin init của tôi.
petrux

Vâng, có vẻ như công ty - sử dụng điện save-window-excursionđể lưu / khôi phục cấu hình cửa sổ, vì vậy nó sẽ không hoạt động. Bạn có thể tốt hơn nên ràng buộc lệnh 'hiển thị tài liệu' của riêng bạn với một khóa trong company-active-map.
glucas
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.