LoginSignup
11
10

More than 5 years have passed since last update.

global-set-key したキーが特定の mode-map に取られてしまったときーー!

Last updated at Posted at 2014-03-05

悲しいときーーー!!

悲しいときーーー!!
ゴキゲンな lisp を入れて global-set-key を設定したら、特定のモードのときにその mode-map にキーが取られてしまったときーーー!!

そのような場合に以下のように対処してみました。
もっとよい方法があったらお教え下さい。

追記

syohex さんにコメントで「上書きされない用のマイナーモードを作る方法」を教えていただきました。→ http://d.hatena.ne.jp/rubikitch/20101126/keymap

ゴキゲンな lisp を入れたらキーバインド衝突

ゴキゲンな lisp の例として、expand-region をご紹介します。(「自分が入れたEmacs便利拡張・設定集 (2013年版) - $shibayu36->blog;」で学びました。わしのようなレイトマジョリティにはたまらない、よだれ記事です。ありがとうございました。)

設定

(require 'expand-region)
(global-set-key (kbd "C-,") 'er/expand-region)

よし! C-, ッターン!!! うお〜〜いいねいいね〜〜!!
と思った矢先……

モードマップと衝突

そしたら org-mode で C-,org-cycle-agenda-files に割り当てられていたので見事に衝突ですよ。 birthday.org が開かれてしまいましたよww 一つも誕生日など書かれていない無意味なファイルですよwwww

衝突を解消する

この例では、org モードがロードされたら org-mode-map の C-, を nil にして割り当てを解除しました。

;;
;; Disabling key bindings
;;
(eval-after-load "org"
  '(progn
     (define-key org-mode-map (kbd "C-,") nil)
     ))

終わりに

この方法では衝突するモードが見つかるたびにそれぞれ解除しないといけません。
もっといい方法があるのでしたら是非とも教えていただきたく存じます。

大事なことなのでもう一度追記

syohex さんにコメントで「上書きされない用のマイナーモードを作る方法」を教えていただきました。→ http://d.hatena.ne.jp/rubikitch/20101126/keymap

11
10
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10