Berikut adalah cara umum untuk mengatur binding kunci spesifik buffer.
- Buat mode minor sementara (simpan cuplikan di bawah
temp-mode.el
dan require
di dalam init.el
.
- Aktifkan
temp-mode
mode minor itu dan tentukan keymap mode-minor itu hanya di buffer yang Anda butuhkan.
Letakkan Local Variables
cuplikan di bawah di buffer tempat Anda ingin pengikatan kunci khusus. Di bawah ini adalah contoh org-mode
file.
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-s
dan beralih ke buffer ONE
revert-buffer
(menyegarkan binding), bekerja di buffer ONE, C-x C-s
dan 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)