Anda dapat menentukan mode minor Anda sendiri dan peta kuncinya dan memilikinya yang menimpa semua mode lainnya (minor + utama). Itulah mengapa saya memilih untuk menulis mode minor saya sendiri.
Langkah-langkah untuk membuat binding kunci Anda menimpa semua binding:
- Menentukan mode minor dan peta kunci Anda sendiri seperti yang ditunjukkan di bawah ini.
- Aktifkan mode minor Anda secara global
(define-key my-mode-map (kbd "C-j") #'newline-and-indent)
Demikian pula binding kunci Anda lainnya yang diatur dalam mode minor Anda akan menimpa yang di mode lain.
Saya sangat merekomendasikan membaca posting blog oleh Christopher Wellons tentang cara menulis mode minor. Blog itu ditambah gangguan karena harus mengatur beberapa ikatan kunci nil
dalam beberapa mode mayor dan minor mengilhami saya untuk menulis mode minor saya sendiri.
Bagian terbaik dari menggunakan pendekatan ini adalah ketika Anda ingin memeriksa apa yang dilakukan ikatan kunci dalam konfigurasi default emacs, Anda cukup mematikan mode minor Anda; Anda kemudian menyalakannya kembali dan Anda mendapatkan kembali binding kunci kustom Anda.
;; Main use is to have my key bindings have the highest priority
;; https://github.com/kaushalmodi/.emacs.d/blob/master/elisp/modi-mode.el
(defvar my-mode-map (make-sparse-keymap)
"Keymap for `my-mode'.")
;;;###autoload
(define-minor-mode my-mode
"A minor mode so that my key settings override annoying major modes."
;; If init-value is not set to t, this mode does not get enabled in
;; `fundamental-mode' buffers even after doing \"(global-my-mode 1)\".
;; More info: http://emacs.stackexchange.com/q/16693/115
:init-value t
:lighter " my-mode"
:keymap my-mode-map)
;;;###autoload
(define-globalized-minor-mode global-my-mode my-mode my-mode)
;; https://github.com/jwiegley/use-package/blob/master/bind-key.el
;; The keymaps in `emulation-mode-map-alists' take precedence over
;; `minor-mode-map-alist'
(add-to-list 'emulation-mode-map-alists `((my-mode . ,my-mode-map)))
;; Turn off the minor mode in the minibuffer
(defun turn-off-my-mode ()
"Turn off my-mode."
(my-mode -1))
(add-hook 'minibuffer-setup-hook #'turn-off-my-mode)
(provide 'my-mode)
;; Minor mode tutorial: http://nullprogram.com/blog/2013/02/06/