การตั้งค่าการโยงคีย์เฉพาะโหมดหลักใน emacs


9

ใน.emacsไฟล์ของฉันฉันต้องการเพิ่มการเชื่อมโยงคีย์สำหรับโหมดหลักเฉพาะ (การตั้งค่าcoffee-compile-fileเป็นC-c C-cในโหมดกาแฟ)

ฉันได้พบจำนวนมากของคำแนะนำเกี่ยวกับการใช้local-set-keyและglobal-set-keyดังนั้นฉันสามารถเพิ่มผลผูกพันครั้งนี้ผมได้เปิดแฟ้มในกาแฟโหมด .emacsแต่มันจะดีแบบนี้จะถูกจัดการโดย

คำตอบ:


8

ใช้โหมดเบ็ด C-h mแสดงข้อมูลเกี่ยวกับโหมดหลักโดยปกติจะรวมถึงสิ่งที่มันสนับสนุน; จากนั้นคุณทำสิ่งที่ชอบ

(add-hook 'coffee-mode-hook ;; guessing
    '(lambda ()
       (local-set-key "\C-cc" 'coffee-compile-file)))

6

คุณสามารถกำหนดปุ่มในแผนที่เฉพาะโหมดเช่น:

(add-hook 'coffee-mode-hook
    (lambda ()
        (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))

หรือสะอาดกว่า:

(eval-after-load "coffee-mode"
    '(define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file))

คำสั่งที่สองทำให้คำจำกัดความที่สำคัญเกิดขึ้นเพียงครั้งเดียวในขณะที่คำสั่งแรกทำให้คำนิยามเกิดขึ้นทุกครั้งที่coffee-modeเปิดใช้งาน (ซึ่งเกินขีด จำกัด )


2
FYI: คำอุปมาเหล่านี้ผิดที่ ส่วนเสริมนี้ควรอ่าน: (add-hook 'coffee-mode-hook (lambda () (define-key coffee-mode-map (kbd "C-c c") 'coffee-compile-file)))
owenmarshall

นอกจากนี้ทำไมต้องกำหนดไว้ในเบ็ด
Nikana Reklawyks

@NikanaReklawyks คุณถูกต้องการกำหนดไว้ในเบ็ดไม่สะอาดเท่าการใช้eval-after-loadคำสั่งในกรณีนี้ ฉันจะอัปเดตคำตอบอย่างเหมาะสม
Trey Jackson

3

Emacs 24.4 แทนที่eval-after-loadด้วยwith-eval-after-load:

** New macro `with-eval-after-load'.
This is like the old `eval-after-load', but better behaved.

ดังนั้นคำตอบควรเป็น

(with-eval-after-load 'coffee-mode
  (define-key coffee-mode-map (kbd "C-c C-c") 'coffee-compile-file)
  (define-key erlang-mode-map (kbd "C-c C-m") 'coffee-make-coffee)
  ;; Add other coffee commands
)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.