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


21.17.8 Easy Menu

以下のマクロは、ポップアップメニュー、および/またはメニューバーメニューを定義する便利な方法を提供します。

Macro: easy-menu-define symbol maps doc menu

このマクロは、menuにより与えるコンテンツのポップアップメニュー、および/またはメニューバーサブメニューを定義する。

symbolが非nilの場合、それはシンボルである。その場合、このマクロはドキュメント文字列docをもつ、メニューをポップアップ(Pop-Up Menusを参照)する関数としてsymbolをを定義する。symbolはクォートされるべきではない。

symbolの値とは関係なく、mapsがキーマップの場合、メニューはメニューバーのトップレベルのメニュー(Menu Barを参照)としてmapsに追加される。これにはキーマップのリストも指定でき、その場合メニューはそれらのキーマップに個別に追加される。

menuの最初の要素は文字列でなければならず、それはメニューラベルの役割をもつ。値には、以下のキーワード/引数ペアーが任意の個数続くかもしれない:

:filter function

functionは1つの引数(他のメニューアイテムのリスト)で呼び出される関数でなければならず、メニュー内に表示される実際のアイテムをリターンする。

:visible include

includeには式を指定する。その式がnilに評価された場合、メニューは不可視になる。:includedは、:visibleにたいするエイリアスである。

:active enable

enableは式を。指定する。その式がnilに評価された場合、メニューは選択不可になる。:enableは、:activeにたいするエイリアスである。

menu内の残りの要素は、メニューアイテムである。

メニューアイテムには、3要素のベクター[name callback enable]を指定できる。ここでnameはメニューアイテム名(文字列)、callbackはアイテム選択時に実行するコマンド、または評価される式である。enableは式であり、nilに評価された場合、そのアイテムにたいする選択は無効になる。

かわりに、メニューアイテムは以下の形式をもつかもしれない:

   [ name callback [ keyword arg ]... ]

ここでnamecallbackは上記と同じ意味をもち、オプションのkeywordargの各ペアーは、以下のいずれかである:

:keys keys

keysは、メニューアイテムにたいする等価なキーボード入力(文字列)である。等価なキーボード入力は自動的に計算されるので、通常は必要ない。keysは、表示される前にsubstitute-command-keysにより展開される(Keys in Documentationを参照)。

:key-sequence keys

keysは、最初にメニューを表示されるかをする際、Emacsを高速化するヒントになる。等価なキーボード入力のないことが既知の場合は、nilを指定すべきである。それ以外では、メニューアイテムにたいする等価なキーボード入力を指定する文字列、またはベクターを指定すべきである。

:active enable

enableには式を指定する。その式がnilに評価された場合、アイテムは選択不可になる。enableは、:activeにたいするエイリアスである。

:visible include

includeには式を指定する。その式がnilに評価された場合、アイテムは不可視になる。:includedは、:visibleにたいするエイリアスである。

:label form

formは、メニューアイテムのラベル(デフォルトはname)の役目をもつ値を取得するために表示される式である。

:suffix form

formは、動的に評価される式であり、値はメニューエントリーのラベルに結合される。

:style style

styleは、メニューアイテムの型を記述するシンボルであり、toggle(チェックボックス)、radio(ラジオボタン)、またはそれ以外(通常のメニューアイテムであることを意味する)のいずれかである。

:selected selected

selectedには式を指定し、その式の値が非nilのときはチェックボックス、またはラジオボタンが選択状態になる。

:help help

helpは、メニューアイテムを説明する文字列である。

かわりに、メニューアイテムに文字列を指定できる。その場合、文字列は選択不可なテキストとしてメニューに表示される。ダッシュから構成される文字列は、セパレーターとして表示される(Menu Separatorsを参照)

かわりに、メニューアイテムにmenuと同じフォーマットのリストを指定できる。これはサブメニューとなる。

以下は、easy-menu-defineを使用して、Menu Bar内で定義したメニューと同等なメニューを定義する例である:

(easy-menu-define words-menu global-map
  "単語単位コマンドにたいするメニュー"
  '("Words"
     ["Forward word" forward-word]
     ["Backward word" backward-word]))