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


37.4.3 *Messages*へのメッセージのロギング

エコーエリア内に表示されるほとんどすべてのメッセージは、ユーザーが後で参照できるように*Messages*バッファー内にも記録されます。これにはmessageにより出力されたメッセージも含まれます。デフォルトではこのバッファーは読み取り専用でメジャーモードmessages-buffer-modeを使用します。ユーザーによる*Messages*バッファーのkillを妨げるものは何もありませんが、次回のメッセージ表示でバッファーは再作成されます。*Messages*バッファーに直接アクセスする必要があり、それが確実に存在するようにしたいLispコードは、すべて関数messages-bufferを使用するべきです。

Function: messages-buffer

この関数は*Messages*バッファーをリターンする。バッファーが存在しなければ作成してバッファーをmessages-buffer-modeに切り替える。

User Option: message-log-max

この変数は*Messages*バッファー内に保持するべき行数を指定する。値tは保持すべき行数に制限がないことを意味して、値nilはメッセージのロギングを完全に無効にする。以下はメッセージを表示して、それがロギングされることを防ぐ例:

(let (message-log-max)
  (message …))

*Messages*にたいするユーザーの利便性を向上させるために、ロギング機能は連続する同じメッセージを結合します。さらに2つのケースのために連続する関連メッセージの結合も行います。2つのケースとは応答を後にともなう質問(question followed by answer)、および一連のプログレスメッセージ(series of progress messages)です。

“応答を後にともなう質問(question followed by an answer)”とは、y-or-n-pにより生成されるような、これは1つ目が‘question’、2つ目が‘question...answer’のような、2つのメッセージです。1つ目のメッセージには、2つ目のメッセージ以上の追加の情報は伝えないので、2つ目のメッセージをロギングして、1つ目のメッセージは破棄します。

“一連のプログレスメッセージ(series of progress messages)”とは、make-progress-reporterが生成するような、連続するメッセージを意味します。これらは‘base...how-far’のような形式をもち、how-farは毎回異なりますが、baseは常に同じです。このシリーズ内の各メッセージのロギングでは、そのメッセージが前のメッセージと連続していれば、前のメッセージを破棄します。

関数make-progress-reportery-or-n-pは、メッセージログ結合機能をアクティブにするために何ら特別なことを行う必要はありません。これは‘...’で終わる共通のプレフィックスを共有する連続する2つのメッセージをログする際には常にこの処理を行います。