ダイアログボックスはポップアップメニューの一種であり、見た目が少し異なり、常にフレームの中央に表示され、階層は1つで、1つ以上のボタンを備えています。ダイアログボックスの主な用途は、ユーザーが「はい」「いいえ」やその他のいくつかの選択肢で回答できる質問を行うことです。ボタンが1つだけの場合、重要な情報を確実に認識させることもできます。関数
y-or-n-p および yes-or-no-p
は、マウスクリックで起動したコマンドから呼び出される際、キーボードの代わりにダイアログボックスを使用します。
この関数はポップアップダイアログボックスを表示し、ユーザーがどの選択肢を選んだかを示す値を返します。引数 contents で提示する選択肢を指定します。形式は以下の通りです:
(title (string . value)...)
x-popup-menu の単一ペインを指定するリストのように見えます。
戻り値は、選択された代替案の value です。
x-popup-menu に関しては、リストの要素がコンスセル (string . value) ではなく、単なる文字列である場合があります。そうなると、選択不可能なボックスになります。
リストに nil が含まれている場合、左側の項目と右側の項目が分けられ、nil より前の項目が左側に、nil
より後の項目が右側に配置されます。リストに nil
を含めない場合は、項目の約半分が左右それぞれに配置されます。
ダイアログボックスは常にフレームの中央に表示されます。引数 position
でどのフレームを指定します。指定可能な値は x-popup-menu
と同様ですが、正確な座標や個々のウィンドウは関係なく、フレームのみが重要となります。
header が nil
でない場合、ボックスのフレームタイトルは ‘Information’
となり、そうでない場合は ‘Question’ となります。前者は
message-box で使用されます(メッセージボックス
を参照)。(テキスト端末では、ボックスタイトルは表示されません。)
一部の構成では、Emacsは実際のダイアログボックスを表示できないため、代わりにフレーム中央のポップアップメニューに同じ項目を表示します。
ユーザーがウィンドウマネージャを使用するなどして有効な選択を行わずにダイアログボックスを閉じた場合、終了処理が実行され、x-popup-dialog は戻りません。