コマンドの実行中に警告を表示せず、コマンドの終了後にのみ表示したい場合があります。これには 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
および user 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
を代入します。