Next: , Previous: , Up: キーマップ   [Contents][Index]


23.9 アクティブなキーマップの制御

Variable: global-map

この変数はEmacsキーボード入力をコマンドにマップするデフォルトのグローバルキーマップを含む。通常はこのキーマップがグローバルキーマップである。デフォルトグローバルキーマップはself-insert-commandをすべてのプリント文字にバインドするfullキーマップである。

これはグローバルキーマップ内のバインディングを変更する通常の手段だが、この変数に開始時のキーマップ以外の値を割り当てるべきではない。

Function: current-global-map

この関数はカレントのグローバルキーマップをリターンする。デフォルトグローバルキーマップとカレントグローバルキーマップのいずれも変更していなければglobal-mapと同じ値。リターン値はコピーではなく参照である。これにdefine-keyなどの関数を使用すると、グローバルバインディングが変更されるだろう。

(current-global-map)
⇒ (keymap [set-mark-command beginning-of-line …
            delete-backward-char])
Function: current-local-map

この関数はカレントバッファーのローカルキーマップをリターンする。ローカルキーマップがなければnilをリターンする。以下の例では、(Lisp Interactionモードを使用する)*scratch*バッファーにたいするキーマップは、ESC(ASCIIコード27)にたいするエントリーが別のsparseキーマップであるようなsparseキーマップである。

(current-local-map)
⇒ (keymap
    (10 . eval-print-last-sexp)
    (9 . lisp-indent-line)
    (127 . backward-delete-char-untabify)
    (27 keymap
        (24 . eval-defun)
        (17 . indent-sexp)))

current-local-mapはローカルキーマップのコピーではなく参照をリターンします。これにdefine-keyなどの関数を使用するとローカルバインディングが変更されるでしょう。

Function: current-minor-mode-maps

この関数はカレントで有効なメジャーモードのキーマップリストをリターンする。

Function: use-global-map keymap

この関数はkeymapを新たなカレントグローバルキーマップにする。これはnilをリターンする。

グローバルキーマップの変更は異例である。

Function: use-local-map keymap

この関数はkeymapをカレントバッファーの新たなローカルキーマップにする。keymapnilなら、そのバッファーはローカルキーマップをもたない。use-local-mapnilをリターンする。ほとんどのメジャーモードコマンドはこの関数を使用する。

Variable: minor-mode-map-alist

この変数はアクティブかどうかに関わらず、特定の変数の値にたいするキーマップを示すalistである。要素は以下のようになる:

(variable . keymap)

キーマップkeymapvariableが非nil値をもつときはアクティブである。variableは通常はメジャーモードを有効か無効にする変数である。キーマップとマイナーモードを参照のこと。

minor-mode-map-alistの要素がminor-mode-alistの要素と異なる構造をもつことに注意。マップは要素のCDRでなければならず、そうでなければ2つ目の要素にマップリストは用いられないだろう。CDRはキーマップ(リスト)、または関数定義がキーマップであるようなシンボルである。

1つ以上のマイナーモードキーマップがアクティブなとき、minor-mode-map-alist内で前のキーマップが優先される。しかし互いが干渉しないようにマイナーモードをデザインすること。これを正しく行えば順序は問題にならない。

マイナーモードについての詳細な情報は、キーマップとマイナーモードを参照のこと。minor-mode-key-binding (キー照合のための関数を参照)も確認されたい。

Variable: minor-mode-overriding-map-alist

この変数はメジャーモードによる特定のマイナーモードにたいするキーバインディングのオーバーライドを可能にする。このalistの要素はminor-mode-map-alistの要素のような(variable . keymap)という形式である。

ある変数がminor-mode-overriding-map-alistの要素として出現するなら、その要素によって指定されるマップはminor-mode-map-alist内の同じ変数にたいして指定されるすべてのマップを完全に置き換える。

すべてのバッファーにおいてminor-mode-overriding-map-alistは自動的にバッファーローカルである。

Variable: overriding-local-map

この変数が非nilならバッファーのローカルキーマップ、テキストプロパティまたはoverlayによるキーマップ、マイナーモードキーマップのかわりに使用されるするキーマップを保持する。このキーマップが指定されると、カレントグローバルキーマップ以外のアクティブだった他のすべてのマップがオーバーライドされる。

Variable: overriding-terminal-local-map

この変数が非nilならoverriding-local-map、バッファーのローカルキーマップ、テキストプロパティまたはoverlayによるキーマップ、およびすべてのマイナーモードキーマップのかわりに使用されるキーマップを保持する。

この変数はカレント端末にたいして常にローカルでありバッファーローカルにできない。複数の端末を参照のこと。これはインクリメンタル検索モードの実装に使用される。

Variable: overriding-local-map-menu-flag

この変数が非nilなら、overriding-local-mapoverriding-terminal-local-mapの値がメニューバーの表示に影響し得る。デフォルト値はnilなので、これらのマップ変数なメニューバーに影響をもたない。

これら2つのマップ変数は、たとえこれらの変数がメニューバー表示に影響し得るを与えない場合でも、メニューバーを使用してエンターされたキーシーケンスの実行には影響を与えることに注意。したがってもしメニューバーキーシーケンスが到着したら、そのキーシーケンスをルックアップして実行する前に変数をクリアーすること。この変数を使用するモードは通常は何らかの手段でこれを行っている。これらのモードは通常は“読み戻し(unread)”とexitによって処理されないイベントに応答する。

Variable: special-event-map

この変数はスペシャルイベントにたいするキーマップを保持する。あるイベント型がこのキーマップ内でバインディングをもつなら、それはスペシャルイベントであり、そのイベントにたいするバインディングはread-eventによって直接実行される。スペシャルイベントを参照のこと。

Variable: emulation-mode-map-alists

この変数はエミュレーションモードにたいして使用するキーマップのalistのリストを保持する。この変数は複数マイナーモードキーマップを使用するモードとパッケージを意図している。リストの各要素はminor-mode-map-alistと同じフォーマットと意味をもつキーマップのalistか、そのようなalist形式の変数バインディングをもつシンボルである。それぞれのalist内のアクティブなキーマップはminor-mode-map-alistminor-mode-overriding-map-alistの前に使用される。

Function: set-transient-map keymap &optional keep-pred on-exit

この関数は一時的(transient)なキーマップとしてkeymapを追加する。一時的なキーマップは1つ以上の後続するキーにたいして、他のキーマップより優先される。

keymapは通常は直後のキーをルックアップするために1回だけ使用される。しかし、オプション引数keep-predtなら、そのマップはユーザーがkeymap内で定義されたキーをタイプするまでアクティブのままとなる。keymap内にないキーをユーザーがタイプしたとき一時的キーマップは非アクティブとなり、そのキーにたいして通常のキールックアップが継続される。

keep-predには関数も指定できる。この場合にはkeymapがアクティブの間は、各コマンドの実行に優先してその関数が引数なしで呼び出される。keymapがアクティブの間、関数は非nilをリターンすること。

オプション引数on-exitが非nilなら、それはkeymapが非アクティブになった後に引数なしで呼び出される関数を指定する。

この関数は他のすべてのアクティブなキーマップに優先される変数overriding-terminal-local-mapにたいして、keymapを追加または削除することによって機能する(アクティブなキーマップの検索を参照)。