GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Controlling-Active-Maps.html ・ emacs-doc.conao3.com

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

変数: global-map

この変数には、Emacsのキーボード入力をコマンドにマッピングするデフォルトのグローバルキーマップが格納されています。通常、グローバルキーマップはこのキーマップです。デフォルトのグローバルキーマップは、self-insert-commandをすべての印字文字にバインドする完全なキーマップです。

グローバルキーマップのバインディングを変更するのは一般的な手法ですが、この変数には、初期状態のキーマップ以外の値を代入すべきではありません。

関数: current-global-map

この関数は、現在のグローバルキーマップを返します。いずれかを変更しない限り、これは global-map の値と同じになります。戻り値はコピーではなく参照であるため、keymap-set やその他の関数をこれに対して使用すると、グローバルバインディングが変更されます。

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

この関数は、現在のバッファのローカルキーマップを返します。キーマップがない場合は nil を返します。以下の例では、*scratch* バッファ(Lisp Interaction モードを使用)のキーマップは疎なキーマップであり、その中で ESC(ASCII コード 27)のエントリは、さらに別の疎なキーマップとなっています。

(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 はローカルキーマップのコピーではなく、その参照を返します。keymap-set やその他の関数をこれに対して使用すると、ローカルバインディングが変更されます。

関数: current-minor-mode-maps

この関数は、現在有効になっているマイナーモードのキーマップの一覧を返します。

関数: use-global-map keymap

この関数は、keymap を新しい現在のグローバルキーマップに設定します。nil を返します。

グローバルキーマップを変更することは非常に稀です。

関数: use-local-map keymap

この関数は、keymap を現在のバッファの新しいローカルキーマップに設定します。keymap が nil の場合、そのバッファにローカルキーマップはありません。use-local-map は nil を返します。ほとんどのメジャーモードコマンドがこの関数を使用します。

変数: minor-mode-map-alist

この変数は、特定の変数の値に応じて有効になったりならなかったりするキーマップを記述したalistです。その要素は以下のようになっています。

(variable . keymap)

キーマップ keymap は、variable が nil 以外の値を持つ場合に有効になります。通常、variable はマイナーモードを有効化または無効化する変数です。キーマップとマイナーモード を参照してください。

なお、minor-mode-map-alist の要素は minor-mode-alist の要素と同じ構造を持たない点に注意してください。マップはその要素の CDR である必要があり、マップを第2要素とするリストでは不十分です。CDR は、キーマップ(リスト)か、あるいは関数定義がキーマップであるシンボルのいずれかとなります。

複数のマイナーモードキーマップが有効な場合、minor-mode-map-alist で先に指定されている方が優先されます。ただし、マイナーモード同士が干渉しないように設計すべきです。適切に設計すれば、順序は問題になりません。

マイナーモードの詳細については、キーマップとマイナーモードを参照してください。また、minor-mode-key-binding(キールックアップ用関数を参照)も参照してください。

変数: 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 はすべてのバッファにおいて自動的にバッファローカルになります。

変数: overriding-local-map

nil 以外の場合、この変数には、バッファのローカルキーマップ、テキストプロパティやオーバーレイのキーマップ、およびマイナーモードのキーマップの代わりに使用するキーマップが格納されます。このキーマップが指定されている場合、現在のグローバルマップを除き、有効になっていたはずの他のすべてのマップを上書きします。

変数: overriding-terminal-local-map

nil 以外の場合、この変数には、overriding-local-map、バッファのローカルキーマップ、テキストプロパティまたはオーバーレイキーマップ、およびすべてのマイナーモードキーマップの代わりに使用するキーマップが格納されます。

この変数は常に現在のターミナルにローカルであり、バッファローカルにはなり得ません。複数ターミナルを参照してください。この変数は、インクリメンタル検索モードの実装に使用されます。

変数: overriding-local-map-menu-flag

この変数がnil以外の場合、overriding-local-mapまたはoverriding-terminal-local-mapの値がメニューバーの表示に影響を与えることがあります。デフォルト値はnilであるため、これらのマップ変数はメニューバーに影響しません。

なお、これら2つのマップ変数は、メニューバーの表示には影響しないものの、メニューバーを使用して入力されたキーシーケンスの実行には影響を及ぼします。したがって、メニューバーのキーシーケンスが入力された場合は、そのキーシーケンスを参照して実行する前に、変数をクリアする必要があります。これらの変数を使用するモードでは、通常いずれにせよこの処理が行われます。一般的に、処理対象外のイベントに対しては、「アンリード(unreading)」して終了することで対応します。

変数: special-event-map

この変数には、特殊イベント用のキーマップが格納されています。イベントタイプがこのキーマップにバインドされている場合、それは特殊イベントとなり、そのイベントのバインドはread-eventによって直接実行されます。特殊イベントを参照してください。

変数: emulation-mode-map-alists

この変数には、エミュレーションモードで使用するキーマップのalistのリストが格納されています。これは、複数のマイナーモードキーマップを使用するモードやパッケージ向けに用意されています。各要素は、minor-mode-map-alistと同じ形式と意味を持つキーマップのalistか、あるいはそのようなalistである変数バインディングを持つシンボルです。各alist内で有効なキーマップは、minor-mode-map-alistおよびminor-mode-overriding-map-alistよりも先に使用されます。

関数: set-transient-map keymap &optional keep-pred on-exit message timeout

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

通常、keymap は直後のキーを参照するために一度だけ使用されます。オプション引数 keep-pred が t の場合、ユーザーが keymap で定義されたキーを入力する限りマップは有効なままとなり、ユーザーが keymap に含まれないキーを入力すると、一時キーマップは無効化され、そのキーに対する通常のキー参照が継続されます。

keep-pred 引数には関数を指定することも可能です。その場合、keymap が有効な間、各コマンドを実行する前にその関数が引数なしで呼び出されます。keymap を有効に保つべき場合は、nil 以外の値を返す必要があります。

オプション引数 on-exit が nil でない場合、keymap が無効化された後に引数なしで呼び出される関数を指定します。

オプション引数 message は、トランジェントマップを有効にした後に表示するメッセージを指定します。message が文字列の場合、それはメッセージのフォーマット文字列となり、その文字列内の任意の ‘%k’ 指定子はトランジェントマップのキー一覧に置き換えられます。message の値が nil 以外の場合は、デフォルトのメッセージフォーマット ‘Repeat with %k’ となります。

オプション引数 timeout が nil 以外の場合、keymap を非アクティブにする前に何秒間待機するかを指定する数値である必要があります。変数 set-transient-map-timeout の値が nil 以外である場合、この引数の値が上書きされます。

この関数は、変数 overriding-terminal-local-map に keymap を追加・削除することで動作し、他のすべての有効なキーマップよりも優先されます(有効なキーマップの検索を参照)。