すべての警告はテキストメッセージ形式で、ユーザーに問題の内容を説明するとともに、シンボルで表される対応する深刻度レベルが付与されます。サポートされている深刻度レベルを、深刻度の高い順に、およびその意味を以下に示します。
:emergencyユーザーが速やかに対処しなければ、間もなくEmacsの動作に深刻な支障をきたす問題。
:error本質的に誤ったデータや状況に関する報告。
:warningそれ自体は誤りではないが、問題がある可能性を示唆するデータや状況に関する報告。
:debugユーザーが現在、警告を発生させているLispプログラムのデバッグを行っている場合に有用と思われる情報のレポート。
プログラムが無効な入力データに遭遇した場合、error または signal を呼び出して Lisp エラーを通知するか(エラーの通知方法 を参照)、あるいは重大度 :error の警告を報告することができます。Lisp
エラーを通知するのが最も簡単ですが、その場合は通知を行ったプログラムは実行を継続できなくなります。無効なデータがあっても処理を継続する方法を実装する手間をかけるのであれば、重大度
:error
の警告を報告することが、ユーザーに問題を知らせる適切な方法となります。例えば、Emacs Lisp
バイトコンパイラはこの方法でエラーを報告し、他の関数のコンパイルを継続できます。(プログラムが Lisp エラーを通知し、その後 condition-case
で処理した場合、ユーザーにはエラーメッセージが表示されません。代わりに警告として報告することで、この問題を回避できます。)
重大度レベルに加えて、各警告には分類用の警告タイプが設定されています。警告タイプは、シンボルまたはシンボルのリストのいずれかです。シンボルの場合は、プログラムのユーザーオプションで使用するカスタムグループである必要があります。リストの場合は、リストの最初の要素がそのカスタムグループである必要があります。例えば、バイトコンパイラの警告では警告タイプ
(bytecomp)
が使用されます。警告タイプがリストの場合、最初の要素以降の要素(任意のシンボルである必要があります)は警告のサブカテゴリを表し、警告の性質をより分かりやすく説明するためにユーザーに表示されます。
この関数は、警告テキストとして文字列 message を、警告タイプとして type を用いて警告を報告します。level
は重大度レベルを指定するもので、省略した場合はデフォルトで :warning、指定した場合は
nil となります。
buffer-name(nil
以外の場合は)、警告メッセージをログ出力するためのバッファ名を指定します。デフォルトは *Warnings* です。
この関数は、(format-message message args…)
が返す値をメッセージテキストとして *Warnings*
バッファに格納し、警告を報告します。それ以外の点では display-warning と同等です。
この関数は、(format-message message args…)
が返す値をメッセージテキスト、emacs を警告タイプ、:warning
を重大度レベルとして警告を報告します。これは互換性のためだけに存在しており、特定の警告タイプを指定すべきであるため、使用しないことを推奨します。