Previous: , Up: 警告のレポート   [Contents][Index]


41.5.4 遅延された警告

コマンド実行中には警告の表示を避けてコマンドの終わりでのみ警告を表示したいことがあるかもしれません。これは関数delay-warningを使用して行うことができます。Emacsはスタートアップの初期ステージの間は自動的にすべての警告メッセージ発行を遅延して、initファイルを処理した後でのみそれらを表示します。

Function: delay-warning type message &optional level buffer-name

この関数はdisplay-warning (警告の基礎を参照)の遅延対応版であり、同じ引数で呼び出される。警告メッセージはdelayed-warnings-listにキューイングされる。

Variable: delayed-warnings-list

この変数の値はカレントのコマンド完了後に表示される警告のリスト。各要素は以下のようなリストでなければならない:

(type message [level [buffer-name]])

これらはdisplay-warningの引数リストと同じ形式、同じ意味である。post-command-hook (コマンドループの概要を参照)の実行直後に、Emacsのコマンドループはこの変数で指定されたすべての警告を表示してから変数をnilにリセットする。

遅延警告メカニズムをよりカスタマイズする必要があるプログラムは変数delayed-warnings-hookを変更することができます:

Variable: delayed-warnings-hook

これは遅延警告を処理して表示するために、post-command-hookの後にEmacsコマンドループが実行するノーマルフック。Emacsはスタートアップ中、およびsite-startファイルとinitファイルをロードした後(要約: スタートアップ時のアクション順序を参照)にもこのフックを実行する。これはそれ以前に発せられた警告は自動的に遅延されるためである。

デフォルト値は2つの関数からなるリスト:

(collapse-delayed-warnings display-delayed-warnings)

関数collapse-delayed-warningsdelayed-warnings-listから重複するエントリーを削除する。関数display-delayed-warningsdelayed-warnings-list内の各要素にたいして順次display-warningを呼び出してから、delayed-warnings-listnilにセットする。