我有我自己的用戶自定義鍵綁定改寫如下所述: Globally override key binding in Emacs主要綁定在Emacs
每當我打開一個新的主要模式,說org-模式,我有我的一些綁定的覆蓋,以適應我在這種特定模式下的需求。 但是當我加載另一個主要模式時,它們有其自己的重寫,即使我不在具有該主模式的緩衝區中,它們仍保持放置狀態。
例如
(define-key custom-keys-mode-map (kbd "C-p") 'some-cool-function)
(add-hook 'org-mode-hook
(lambda()
(define-key custom-keys-mode-map (kbd "C-p") 'org-cool-function)))
(add-hook 'sunrise-mode-hook
(lambda()
(define-key custom-keys-mode-map (kbd "C-p") 'sunrise-cool-function)))
起初我使用C-p來執行我的冷靜,默認情況下,功能。 加載Org-Mode之後,我用C-p執行「org-cool-function」, ,當我加載Sunrise-Commander時,C-p執行「sunrise-cool-function」。
但是當我回到組織模式文件時, C-p仍然試圖執行「日出冷卻功能」而不是「org-cool-function」。
希望我清楚:)
這很好,但是解決方法是什麼?; – CrimsonKing 2013-04-08 19:21:06
那麼,從一開始就不會打敗自定義次要模式的目的嗎?要覆蓋我不希望或想要的令人討厭的主要模式鍵綁定? – CrimsonKing 2013-04-08 19:27:06
但是您希望不同模式下的相同密鑰具有不同的行爲。因此你需要不同的鍵盤映射。所以你可以做'自定義鍵模式映射',然後'自定義組合鍵模式映射'進一步推進將需要工作。我剛加入的'eval-after-load'應該足以滿足您的需求。 – 2013-04-08 19:29:23