Next: , Up: メニューの定義   [Contents][Index]


23.17.1.1 単純なメニューアイテム

メニューアイテムを定義するシンプル(かつ初歩的)な方法は、何らかのイベント型(何のイベント型かは問題ではない)を以下のようにバインドすることです:

(item-string . real-binding)

CARitem-stringはメニュー内で表示される文字列です。これは短いほうが望ましく、1個から3個の単語が望ましいでしょう。この文字列は対応するコマンドの動作を記述します。すべてのグラフィカルツールキットが非ASCIIテキストを表示できる訳ではないことに注意してください(キーボードメニューとGTK+ツールキットの大部分では機能するだろう)。

以下のようにヘルプ文字列と呼ばれる2つ目の文字列を与えることもできます:

(item-string help . real-binding)

helpはマウスがそのアイテム上にあるときに、help-echoテキストプロパティ(Help displayを参照)と同じ方法で表示されるhelp-echo文字列を指定します。

define-keyに関する限り、item-stringhelp-stringはそのイベントのバインディングの一部です。しかしlookup-keyは単にreal-bindingだけをリターンし、そのキーの実行にはreal-bindingだけが使用されます。

real-bindingnilならitem-stringはメニューに表示されますが選択できません。

real-bindingがシンボルでmenu-enableプロパティが非nilなら、そのプロパティはメニューアイテムが有効か無効かを制御する式です。メニュー表示にキーマップが使用されるたびにEmacsはその式を評価して、式の値が非nilの場合のみそのメニューのメニューアイテムを有効にします。メニューアイテム無効なときには、そのアイテムはfuzzy形式で表示されて選択できなくなります。

メニューバーはメニューを調べる際にどのアイテムが有効かを再計算しません。これはXツールキットが事前にメニュー全体を要求するからです。メニューバーの再計算を強制するにはforce-mode-line-updateを呼び出してください(モードラインのフォーマットを参照)。