Next: , Up: Menu Keymaps   [Contents][Index]


21.17.1 Defining Menus

キーマップがoverallプロンプト文字列(overall prompt string)をもつ場合、そのキーマップはメニューとして動作します。overallプロンプト文字列とは、キーマップの要素として表される文字列です(Format of Keymapsを参照)。この文字列には、メニューコマンドの目的を記述します。Emacsは、(もしあれば)メニュー表示に使用されるツールキットに応じ、メニュータイトルとしてoverallメニュー文字列を表示します12。キーボードメニューもoverallプロンプト文字列を表示します。

プロンプト文字列をもつキーマップを構築するもっとも簡単な方法は、make-keymapmake-sparse-keymap(Creating Keymapsを参照)、define-prefix-command(Definition of define-prefix-commandを参照)を呼び出すときに引数で文字列を指定する方法です。キーマップをメニューとして操作したくない場合は、これらの関数にたいしてプロンプト文字列を指定しないでください。

Function: keymap-prompt keymap

この関数は、keymapのoverallプロンプト文字列を、もしなければnilをリターンする。

メニューのアイテムは、そのキーマップ内のバインディングです。各バインディングはイベント型と定義を関連付けますが、イベント型はメニューの外見に何の意味ももちません(通常は、イベント型としてキーボードが生成できない擬似イベントのシンボルをメニューアイテムのバインディングに使用する)。メニュー全体は、これらのイベントにたいするキーマップ内のバインディングから生成されます。

メニュー内のアイテムの順序は、キーマップ内のバインディングの順序と同じです。define-keyは新たなバインディングを先頭に置くので、メニューアイテムの順序が重要な場合は、メニューの最後から先頭へメニューアイテムを定義する必要があります。既存のメニューにアイテムを追加するときは、define-key-afterを使用してメニュー内の位置を指定できます(Modifying Menusを参照)。


Footnotes

(12)

これはテキスト端末ののような、ツールキットを使用しないメニューにたいして要求されます。