Previous: Modifying Menus, Up: Menu Keymaps [Contents][Index]
以下のマクロは、ポップアップメニュー、および/またはメニューバーメニューを定義する便利な方法を提供します。
このマクロは、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 ]... ]
ここでnameとcallbackは上記と同じ意味をもち、オプションのkeywordとargの各ペアーは、以下のいずれかである:
: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]))