全局覆蓋Emacs中的鍵綁定如何設置全局覆蓋并優先于該鍵的所有其他綁定的鍵綁定?我希望覆蓋所有主要/次要模式映射,并確保綁定始終有效。當然,這是行不通的:(global-set-key "\C-i" 'some-function)它在text-mode,但是當我用lisp-mode, C-i是反彈到lisp-indent-line.我可以在lisp-mode每一種模式都是個別的,但必須有更簡單的方法。每次為新文件類型安裝新模式時,我都必須返回并檢查,以確保所有的鍵綁定都不會被新模式覆蓋。我想這樣做是因為我想模仿我已經從其他編輯那里學到的和根深蒂固的綁定。
3 回答

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
(defvar my-keys-minor-mode-map (let ((map (make-sparse-keymap))) (define-key map (kbd "C-i") 'some-function) map) "my-keys-minor-mode keymap.")(define-minor-mode my-keys-minor-mode "A minor mode so that my key settings override annoying major modes." :init-value t :lighter " my-keys")(my-keys-minor-mode 1)
(defun my-minibuffer-setup-hook () (my-keys-minor-mode 0))(add-hook 'minibuffer-setup-hook 'my-minibuffer-setup-hook)

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
load
(add-hook 'after-load-functions 'my-keys-have-priority)(defun my-keys-have-priority (_file) "Try to ensure that my keybindings retain priority over other minor modes. Called via the `after-load-functions' special hook." (unless (eq (caar minor-mode-map-alist) 'my-keys-minor-mode) (let ((mykeys (assq 'my-keys-minor-mode minor-mode-map-alist))) (assq-delete-all 'my-keys-minor-mode minor-mode-map-alist) (add-to-list 'minor-mode-map-alist mykeys))))
添加回答
舉報
0/150
提交
取消