Next: , Up: The Echo Area   [Contents][Index]


37.4.1 エコーエリアへのメッセージの表示

このセクションではエコーエリア内にメッセージを表示する標準的な関数を説明します。

Function: message format-string &rest arguments

この関数は、エコーエリア内にメッセージを表示する。format関数(Formatting Stringsを参照)の場合と同様、format-stringはフォーマット文字列、argumentsはそのフォーマット仕様にたいするオブジェクトである。フォーマットされた結果文字列は、エコーエリア内に表示される。それにfaceテキストプロパティが含まれる場合、指定されたフェイスにより表示される(Facesを参照)。この文字列は*Messages*バッファーにも追加されるが、テキストプロパティは含まれない(Logging Messagesを参照)。

バッチモードでは後に改行が付加されたメッセージが標準エラーストリームにプリントされる。

format-stringnilか空文字列なら、messageはエコーエリアをクリアーする。エコーエリアが自動的に拡張されていたら、これにより通常のサイズに復元される。ミニバッファーがアクティブなら、これによりスクリーン上に即座にミニバッファーのコンテンツが復元される。

(message "Minibuffer depth is %d."
         (minibuffer-depth))
 -| Minibuffer depth is 0.
⇒ "Minibuffer depth is 0."

---------- Echo Area ----------
Minibuffer depth is 0.
---------- Echo Area ----------

エコーエリアやポップバッファー内に自動的にメッセージを表示するには、そのサイズに応じてdisplay-message-or-buffer (以下参照)を使用する。

Macro: with-temp-message message &rest body

この構文はbody実行の間にエコーエリア内にメッセージを一時的に表示する。これはmessageを表示してbodyを実行して、それからエコーエリアの前のコンテンツをリストアするとともにbodyの最後のフォームの値をリターンする。

Function: message-or-box format-string &rest arguments

この関数はmessageと同様にメッセージを表示するが、エコーエリアではなくダイアログボックスにメッセージを表示するかもしれない。この関数があるコマンド内からマウスを使用して呼び出されると — より正確にはlast-nonmenu-event (Command Loop Infoを参照)がnilかリストならメッセージの表示にダイアログボックスかポップアップメニュー、それ以外ならエコーエリアを使用する(これはy-or-n-pが同様の決定を行う際に使用する条件と同じ。Yes-or-No Queriesを参照)。

呼び出しの前後でlast-nonmenu-eventを適切な値にバインドすることによりエコーエリアでのマウスの使用を強制できる。

Function: message-box format-string &rest arguments

この関数はmessageと同様にメッセージを表示するが、利用可能なら常にダイアログボックス(かポップアップメニュー)を使用する。端末がサポートしないためにダイアログボックスやポップアップメニューが使用できなければ、message-boxmessageと同様にエコーエリアを使用する。

Function: display-message-or-buffer message &optional buffer-name not-this-window frame

この関数はメッセージmessageを表示する。messageには文字列かバッファーを指定できる。これがmax-mini-window-heightで定義されるエコーエリアの最大高さより小さければ、messageを使用してエコーエリアに表示される。それ以外ならメッセージを表示するためにdisplay-bufferはポップアップバッファーを使用する。

エコーエリアに表示したメッセージ、またはポップアップバッファー使用時はその表示に使用したウィンドウをリターンする。

messageが文字列ならオプション引数buffer-nameはポップアップバッファー使用時にメッセージ表示に使用するバッファー名(デフォルトは*Message*)。messageが文字列でエコーエリアに表示されていれば、いずれにせよコンテンツをバッファーに挿入するかどうかは指定されない。

オプション引数not-this-windowframeは、display-bufferの場合と同様に、バッファーが表示されている場合のみ使用される。

Function: current-message

この関数はエコーエリア内にカレントで表示されているメッセージ、またはそれが存在しなければnilをリターンする。