Berikut adalah cara umum untuk mengatur binding kunci spesifik buffer.
- Buat mode minor sementara (simpan cuplikan di bawah
temp-mode.eldan requiredi dalam init.el.
- Aktifkan
temp-modemode minor itu dan tentukan keymap mode-minor itu hanya di buffer yang Anda butuhkan.
Letakkan Local Variablescuplikan di bawah di buffer tempat Anda ingin pengikatan kunci khusus. Di bawah ini adalah contoh org-modefile.
Dalam buffer ONE
# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-ONE)
# End:
Jika beberapa buffer lain mendefinisikan ulang menggunakan pengikatan kunci yang sama,
Dalam buffer DUA
# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-TWO)
# End:
maka pengikatan baru menjadi efektif dalam melakukan M-x revert-buffer.
Inilah yang akan saya lakukan jika saya harus sering beralih di antara dua buffer ini dan jika saya harus menggunakan F10penjilidan di keduanya:
- Bekerja di buffer ONE,
C-x C-s(simpan) dan beralih ke buffer TWO
revert-buffer(menyegarkan binding), bekerja di buffer DUA, C-x C-sdan beralih ke buffer ONE
revert-buffer(menyegarkan binding), bekerja di buffer ONE, C-x C-sdan beralih ke buffer TWO
Tetapi saya lebih suka mengikat perintah buffer-specific yang berbeda ke kunci yang berbeda.
Mode minor sementara
;; temp-mode.el
;; Temporary minor mode
;; Main use is to enable it only in specific buffers to achieve the goal of
;; buffer-specific keymaps
(defvar temp-mode-map (make-sparse-keymap)
"Keymap while temp-mode is active.")
;;;###autoload
(define-minor-mode temp-mode
"A temporary minor mode to be activated only specific to a buffer."
nil
:lighter " Temp"
temp-mode-map)
(provide 'temp-mode)