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の辞書ポップアップはとても便利ですね。