すべての警告は、ユーザーに問題を説明するためのテキストのメッセージと、重大レベル(severity level)をもっています。重大レベルはシンボルです。以下は可能性のある重大レベルとその意味を、重大度の降順でリストしたものです:
:emergency
直ちに対処しなければEmacs処理が間もなく深刻に害される問題。
:error
本質的に悪いデータや状況のリポート。
:warning
本質的に悪くはないが、可能性のある問題を励起する恐れのあるデータや状況のリポート。
:debug
デバッグ中なら有用かもしれない情報のリポート。
あなたのプログラムが無効な入力データに遭遇した際には、error
呼び出しによるLispエラーのシグナルするか、または重大度:error
の警告をリポートすることができます。Lispエラーのシグナルはもっとも簡単に行えることですが、それはプログラムが処理を継続できないことを意味します。間違ったデータでも処理を継続するための方法を実装するためにトラブルを受け取めたい場合には、その問題をユーザーに知らせるために重大度:error
の警告をリポートするのが正しい方法です。たとえばEmacs
Lispバイトコンパイラーはこの方法によりエラーを報告して、他の関数のコンパイルを継続できます(プログラムがLispエラーをシグナルしてcondition-case
でhandleしたならユーザーがそのエラーを確認することはないだろう。これは警告としてリポートすることによりユーザーにメッセージを示すことができる)。
クラス分けのために警告にはそれぞれ警告タイプ(warning
type)があります。このタイプはシンボルのリストです。最初のシンボルはそのプログラムのユーザーオプションとして使用するカスタムグループであるべきです。たとえばバイトコンパイラーの警告は警告タイプ(bytecomp)
を使用します。もし望むなら、このリスト内で更にシンボルを使用することにより警告をサブカテゴリー化することもできます。
この関数はメッセージとしてmessage、警告タイプとしてtypeを使用して警告をリポートする。levelは重大レベルであること。デフォルトは:warning
。
buffer-nameが非nil
なら、それは警告をロギングするためのバッファー名を指定する。デフォルトは*Warnings*。
この関数は*Warnings*バッファー内のメッセージとして(format-message message
args...)
の値を使用して警告をリポートする。他の点ではこれはdisplay-warning
と同じ。
この関数はメッセージとして(format-message message
args...)
の値、タイプとして(emacs)
、重大レベルとして:warning
を使用して警告をリポートする。これは互換性のためだけに存在する。固有な警告タイプを指定するべきであり、この関数の使用は推奨しない。