ข้ามไปยังบัฟเฟอร์เอกสารด้วยโหมด บริษัท


10

ฉันเพิ่งเปลี่ยนจากauto-complete-modeเป็นcompany-modeและฉันสนุก เมื่อเร็ว ๆ นี้ฉันต้องเขียนโค้ด Emacs Lisp ฉันเริ่มพิมพ์ฟังก์ชั่นของฉันผู้สมัครจะแสดงความสมบูรณ์ฉันกดF1และเอกสารเปิดขึ้นในบัฟเฟอร์อีกอัน ฉันต้องการข้ามไปยังบัฟเฟอร์เอกสารคู่มือแต่เมื่อฉันพิมพ์C-x oมันจะถูกปิด คำใบ้ใด ๆ

คำตอบ:


8

ฉันไม่เห็นวิธีที่มีอยู่ในโหมด บริษัท เพื่อทำสิ่งนี้ แต่คุณสามารถเพิ่มการผูกคีย์ของคุณเองcompany-active-mapได้

เป็นการทดลองที่รวดเร็วฉันทำการcompany-show-doc-bufferติดตั้งและถอดcompany--electric-doเสื้อคลุมออก:

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

คุณสามารถผูกสิ่งนี้กับคีย์อื่นเช่น C-F1 เพื่อ "เปิด" อย่างถาวร "เปิดบัฟเฟอร์ doc:

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

เพื่อความสมบูรณ์: นี่คือปัญหาที่ฉันเปิดในพื้นที่เก็บข้อมูลของโครงการ GitHub และพวกเขาแนะนำให้ลงเส้นทางนี้
petrux

ฉันต้องการโพสต์ tweak เล็ก ๆ น้อย ๆ ของฉันในกรณีที่คุณต้องการให้หน้าต่างนี้ได้รับเลือกด้วย (กำหนด my-company-show-doc-buffer () "แสดงชั่วคราวบัฟเฟอร์เอกสารสำหรับการเลือก" (แบบโต้ตอบ) (ให้เลือก ((เลือกแล้ว) (การเลือก บริษัท ที่ผู้สมัครที่ บริษัท )) (doc-buffer (หรือ (เลือกการเรียก บริษัท - แบ็กเอนด์ 'doc-buffer ที่เลือก) (ข้อผิดพลาด "ไม่มีเอกสารประกอบ")))) (พร้อมกับบัฟเฟอร์ปัจจุบัน doc-buffer (goto -char (จุดต่ำสุด))) (เลือกหน้าต่าง (แสดงบัฟเฟอร์ doc-buffer t)))
sandric

4

ความคิดเห็นของผู้เขียนในหน้าการเปรียบเทียบโหมด บริษัท กับการทำให้สมบูรณ์อัตโนมัติ :

จะเกิดอะไรขึ้นเมื่อคุณกด F1 ในโหมด บริษัท

มันใช้ป๊อปอัพหน้าต่างเพื่อแสดงบัฟเฟอร์ช่วยเหลือ แต่ซ่อนไว้ก่อนคำสั่งต่อไป (เว้นแต่ว่าคำสั่งนั้นคือ scroll-other-window หรือ scroll-other-window-down)

ขึ้นอยู่กับว่าคุณสามารถเลื่อนบัฟเฟอร์เอกสารไม่ใช่ข้ามไปที่มัน

แต่มองไปที่รหัสสำหรับcompany-show-doc-bufferผมสังเกตเห็นว่ามันใช้company--electric-doซึ่งจะเรียกโต้ตอบคำสั่งใด ๆ company--electric-commandsใน โดยปกติจะมีเพียงscroll-other-windowและscroll-other-window-downแต่บางทีคุณสามารถเพิ่มลงother-windowในรายการ


ฉันเพิ่งทดสอบแบบนี้: (defvar company--electric-commands '(scroll-other-window scroll-other-window-down other-window) "List of Commands that won't break out of electric commands.")แต่มันใช้งานไม่ได้ ขณะที่ฉันพิมพ์C-...บัฟเฟอร์ความช่วยเหลือจะปิดลง เช่นเดียวกันกับการวาง(add-to-list 'company--electric-commands 'other-window)ในไฟล์ init ของฉัน
petrux

ใช่ดูเหมือน บริษัท - ระบบไฟฟ้าใช้save-window-excursionเพื่อบันทึก / กู้คืนการกำหนดค่าหน้าต่างดังนั้นจึงไม่ทำงาน คุณอาจจะดีกว่าที่มีผลผูกพันตัวเอง company-active-map'โชว์เอกสารคำสั่งของคุณเพื่อที่สำคัญในการที่
ลูกัส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.