EmacsでC-M-dが効かない件について調べたメモ
pareditでparedit-forward-downというファンクションがあって、デフォルトでC-M-dに割り当ててあるんですが、どうも使えないので調べてました。
describe-keyでC-M-dを叩いても、無反応で、ミニバッファに「C-M-d is undefined」と出力すらされません。
emacsは以下の手順でインストールしたものです。osはmac osx lion。
macosx lionでemacsのフルスクリーン表示
http://d.hatena.ne.jp/yuheiomori0718/20111119/1321700747
調べたところ、どうやらSafariなどで使える「辞書で調べる」がcontrol + command + d に割り当ててあって、それにイベントを食われてしまっているみたいでした。
How do I disable the Command-Control-D word definition keyboard shortcut in OS X Lion?
http://superuser.com/questions/326223/how-do-i-disable-the-command-control-d-word-definition-keyboard-shortcut-in-os-x
しかもこのキーバインドは変更もできないし、無効にもできないようです。
一応システム環境設定で「辞書で調べる」のショートカットキーを指定するところがありますが、チェックを外しても、他のキーを割り当てても効きません。
諦めかけていたところ、辞書の方を調べていたら以下のエントリを見つけました
Dictionary.app を Emacs から引く
http://d.hatena.ne.jp/a666666/20100529/1275138722
experimentail/hackers パッチを当ててるので C-M-d は DictionaryService 連携で乗っ取られてて Emacs 側にこないので C-M-S-d を押すとできる。
というわけで原因はやはり辞書でした。
ためしにdescribe-keyでC-M-S-dしてみるとちゃんと反応しました。
C-M-d (translated from C-M-S-d) runs the command paredit-forward-down, which is an interactive compiled Lisp function in `paredit.el'. It is bound to C-M-d. (paredit-forward-down &optional ARGUMENT) Move forward down into a list. With a positive argument, move forward down that many levels. With a negative argument, move backward down that many levels. C-M-d
蛇足ですが、safariで使えるcontrol + command + dの辞書ポップアップはとても便利ですね。