コマンド実行中には警告の表示を避けてコマンドの終わりでのみ警告を表示したいことがあるかもしれません。これは関数delay-warning
を使用して行うことができます。Emacsはスタートアップの初期ステージの間は自動的にすべての警告メッセージ発行を遅延して、initファイルを処理した後でのみそれらを表示します。
この関数はdisplay-warning
(警告の基礎を参照)の遅延対応版であり、同じ引数で呼び出される。警告メッセージはdelayed-warnings-list
にキューイングされる。
この変数の値はカレントのコマンド完了後に表示される警告のリスト。各要素は以下のようなリストでなければならない:
(type message [level [buffer-name]])
これらはdisplay-warning
の引数リストと同じ形式、同じ意味である。post-command-hook
(コマンドループの概要を参照)の実行直後に、Emacsのコマンドループはこの変数で指定されたすべての警告を表示してから変数をnil
にリセットする。
遅延警告メカニズムをよりカスタマイズする必要があるプログラムは変数delayed-warnings-hook
を変更することができます:
これは遅延警告を処理して表示するために、post-command-hook
の後にEmacsコマンドループが実行するノーマルフック。Emacsはスタートアップ中、およびsite-startファイルとinitファイルをロードした後(要約: スタートアップ時のアクション順序を参照)にもこのフックを実行する。これはそれ以前に発せられた警告は自動的に遅延されるためである。
デフォルト値は2つの関数からなるリスト:
(collapse-delayed-warnings display-delayed-warnings)
関数collapse-delayed-warnings
はdelayed-warnings-list
から重複するエントリーを削除する。関数display-delayed-warnings
はdelayed-warnings-list
内の各要素にたいして順次display-warning
を呼び出してから、delayed-warnings-list
をnil
にセットする。