Previous: Modifying Menus, Up: Menu Keymaps [Contents][Index]
以下のマクロは、ポップアップメニュー、および/またはメニューバーメニューを定義する便利な方法を提供します。
このマクロは、menuにより与えるコンテンツのポップアップメニュー、および/またはメニューバーサブメニューを定義する。
symbolが非nilの場合、それはシンボルである。その場合、このマクロはドキュメント文字列docをもつ、メニューをポップアップ(Pop-Up Menusを参照)する関数としてsymbolをを定義する。symbolはクォートされるべきではない。
symbolの値とは関係なく、mapsがキーマップの場合、メニューはメニューバーのトップレベルのメニュー(Menu Barを参照)としてmapsに追加される。これにはキーマップのリストも指定でき、その場合メニューはそれらのキーマップに個別に追加される。
menuの最初の要素は文字列でなければならず、それはメニューラベルの役割をもつ。値には、以下のキーワード/引数ペアーが任意の個数続くかもしれない:
:filter functionfunctionは1つの引数(他のメニューアイテムのリスト)で呼び出される関数でなければならず、メニュー内に表示される実際のアイテムをリターンする。
:visible includeincludeには式を指定する。その式がnilに評価された場合、メニューは不可視になる。:includedは、:visibleにたいするエイリアスである。
:active enableenableは式を。指定する。その式がnilに評価された場合、メニューは選択不可になる。:enableは、:activeにたいするエイリアスである。
menu内の残りの要素は、メニューアイテムである。
メニューアイテムには、3要素のベクター[name callback
enable]を指定できる。ここでnameはメニューアイテム名(文字列)、callbackはアイテム選択時に実行するコマンド、または評価される式である。enableは式であり、nilに評価された場合、そのアイテムにたいする選択は無効になる。
かわりに、メニューアイテムは以下の形式をもつかもしれない:
[ name callback [ keyword arg ]... ]
ここでnameとcallbackは上記と同じ意味をもち、オプションのkeywordとargの各ペアーは、以下のいずれかである:
:keys keyskeysは、メニューアイテムにたいする等価なキーボード入力(文字列)である。等価なキーボード入力は自動的に計算されるので、通常は必要ない。keysは、表示される前にsubstitute-command-keysにより展開される(Keys in Documentationを参照)。
:key-sequence keyskeysは、最初にメニューを表示されるかをする際、Emacsを高速化するヒントになる。等価なキーボード入力のないことが既知の場合は、nilを指定すべきである。それ以外では、メニューアイテムにたいする等価なキーボード入力を指定する文字列、またはベクターを指定すべきである。
:active enableenableには式を指定する。その式がnilに評価された場合、アイテムは選択不可になる。enableは、:activeにたいするエイリアスである。
:visible includeincludeには式を指定する。その式がnilに評価された場合、アイテムは不可視になる。:includedは、:visibleにたいするエイリアスである。
:label formformは、メニューアイテムのラベル(デフォルトはname)の役目をもつ値を取得するために表示される式である。
:suffix formformは、動的に評価される式であり、値はメニューエントリーのラベルに結合される。
:style stylestyleは、メニューアイテムの型を記述するシンボルであり、toggle(チェックボックス)、radio(ラジオボタン)、またはそれ以外(通常のメニューアイテムであることを意味する)のいずれかである。
:selected selectedselectedには式を指定し、その式の値が非nilのときはチェックボックス、またはラジオボタンが選択状態になる。
:help helphelpは、メニューアイテムを説明する文字列である。
かわりに、メニューアイテムに文字列を指定できる。その場合、文字列は選択不可なテキストとしてメニューに表示される。ダッシュから構成される文字列は、セパレーターとして表示される(Menu Separatorsを参照)
かわりに、メニューアイテムにmenuと同じフォーマットのリストを指定できる。これはサブメニューとなる。
以下は、easy-menu-defineを使用して、Menu Bar内で定義したメニューと同等なメニューを定義する例である:
(easy-menu-define words-menu global-map
"単語単位コマンドにたいするメニュー"
'("Words"
["Forward word" forward-word]
["Backward word" backward-word]))