Next: , Previous: , Up: キーバインディングのカスタマイズ   [Contents][Index]


49.3.3 ローカルキーマップ

ここまではグローバルマップの詳細を説明してきました。メジャーモードは、ローカルキーマップ(local keymaps)で独自のキーバインディングを提供することにより、Emacsをカスタマイズします。たとえばCモードは、C言語のためにカレント行をインデントするために、TABをオーバーライドします。マイナーモードもローカルキーマップをもつことができます。マイナーモードが効力をもつとき、マイナーモードのキーマップの定義は、メジャーモードのローカルキーマップとグローバルキーマップの両方をオーバーライドします。それに加えて、バッファーの一部のテキストに、他のすべてのキーマップをオーバーライドする独自のキーマップを指定できます。

ローカルキーマップは、あるキーをプレフィクスキーマップとして定義することにより、そのキーをプレフィクスキーとして再定義できます。そのキーがグローバルでもプレフィクスとして定義されている場合、そのキーのグローバルおよびローカルの定義(両方のキーマップ)が、相乗して効果をもちます。つまりプレフィクスキーに続くイベントを探すのに、両方の定義が使用されます。たとえばローカルキーマップがC-cをプレフィクスキーマップとして定義し、そのキーマップがC-zをコマンドとして定義する場合、これはC-c C-zにローカルな意味を提供します。これはC-cで始まる他のシーケンスには影響を与えません。これらのシーケンスが独自のローカルバインディングをもたない場合、グローバルバインディングが効果をもちます。

これを別の方法で考えると、Emacsはキーシーケンス全体のバインディングにたいして、複数のキーマップを1つずつ探して、複数イベントキーシーケンスを処理すると考えることができます。最初にマイナーモードが有効な場合はマイナーモードのキーマップをチェックして、次にメジャーモードのキーマップをチェックして、それからグローバルキーマップをチェックするのです。これはキーの照合が機能する正確な方法ではありませんが、通常の場面における結果を理解するには充分です。