आप अपने स्वयं के मामूली मोड और इसके मुख्य मानचित्र को परिभाषित कर सकते हैं और अन्य सभी मोड (मामूली + प्रमुख) को ओवरराइड कर सकते हैं। इसीलिए मैंने अपनी छोटी विधा लिखने का विकल्प चुना।
आपकी कुंजी बाइंडिंग के चरण सभी बाइंडिंग को ओवरराइड करते हैं:
- नीचे दिखाए गए अनुसार अपने स्वयं के मामूली मोड और मुख्य मानचित्र को परिभाषित करना।
- विश्व स्तर पर अपने मामूली मोड को सक्रिय करें
(define-key my-mode-map (kbd "C-j") #'newline-and-indent)
इसी तरह आपके अन्य मोड में सेट की गई आपकी अन्य बाइंडिंग अन्य मोड्स में ओवरराइड हो जाएगी।
मैं एक मामूली मोड लिखने के तरीके पर क्रिस्टोफर वेलन्स द्वारा ब्लॉग पोस्ट पढ़ने की अत्यधिक सलाह देता हूं । यह ब्लॉग प्लस को nil
कई प्रमुख और लघु मोड में कई प्रमुख बाइंडिंग सेट करने की झुंझलाहट से प्रेरित करता है और मुझे अपनी खुद की मामूली मोड लिखने के लिए प्रेरित करता है।
इस दृष्टिकोण का उपयोग करने का सबसे अच्छा हिस्सा यह है कि जब आप यह जांचना चाहते हैं कि इमैक के डिफ़ॉल्ट कॉन्फ़िगरेशन में मुख्य बाइंडिंग क्या करते हैं, तो आप बस अपने मामूली मोड को बंद कर देते हैं; फिर आप इसे वापस चालू करते हैं और आपको अपने कस्टम कुंजी बाइंडिंग वापस मिल जाते हैं।
;; 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/