次: Prefix Keys, 前: Creating Keymaps, 上: Keymaps
キーマップでは、親キーマップ(parent keymap)と呼ぶ別のキーマップの バインディングを継承できます。 そのようなキーマップはつぎのようになります。
(keymap bindings... . parent-keymap)
このキーマップは、キーを探索する時点において parent-keymapが有するすべてのバインディングを継承しますが、 それらにはbindingsが追加されたり優先します。
define-key
や他のキーバインディング関数でparent-keymapの
バインディングを変更すると、それらの変更は、
bindingsで隠されない限り継承側のキーマップからも見えます。
その逆は真ではありません。
define-key
で継承側のキーマップを修正すると、
それはbindingsに影響するだけでparent-keymapには影響しません。
親キーマップを用いたキーマップを作成する正しい方法は、
set-keymap-parent
を使うことです。
親キーマップを用いたキーマップを直接作成するようなコードがある場合には、
set-keymap-parent
を用いるようにプログラムを変更してください。
キーマップkeymapの親キーマップとしてparentを設定し、 parentを返す。 parentが
nil
であると、 この関数はkeymapに親キーマップをいっさい与えない。keymapに(プレフィックスキー用のバインディングである) サブマップがあれば、それらもparentが指定するプレフィックスキーを 反映する新たな親マップを受け取る。
text-mode-map
からキーマップを継承する方法を示します。
(let ((map (make-sparse-keymap))) (set-keymap-parent map text-mode-map) map)