Emacsの構文チェックツール--Flymake
1クイックスタート
-----------
*構文チェックができるファイルを開いたときにflymakeを自動的に開くには、次のような構成が必要です.
*flymake-modeに入ると、構文チェックは次のような場合に自動的に行われます.
*bufferをロードした後
*返却後
*bufferの内容を変更してから一定時間が経過しました(デフォルトは0.5 s)
*構文チェックを手動で実行する場合は、関数`flymake-start-syntax-check-for-current-buffer`を実行します.
*構文でエラー/警告が検出された場合、エラーの行がハイライトされ、mode-lineに合計のエラーと警告の数が表示されます.
*「flymake-goto-next-error」および「flymake-goto-prev-error」を使用して次のエラー行に移動
*現在の行のエラー情報を表示するには、コマンド`flymake-display-err-menu-for-current-line`を使用します.
*構文チェックが完了すると、mode-lineにチェック結果が表示されます.以下に説明する
Flymake*Flymakeが実行中で、エラーは見つかりませんでした
Flymake:E/W*Flymakeが実行中で、E個のエラーとW個の警告が見つかりました
Flymake Flymake運転終了、エラーは見つかりませんでした
Flymake:E/W Flymake運転終了、E個のエラーとW個の警告が見つかりました
Flymake:! Flymake現在のbufferのプライマリファイルが見つかりません
CFGERR構文チェックプロセスは0以外の値を返しますが、エラー/警告情報は解析されません.構成エラーの可能性があります.
NOMASTER現在のbufferのプライマリファイルが見つかりません
NOMKでは、makefileなどの現在のbufferの構築ファイルは見つかりません.
PROCESS Flymakeは構文チェックプロセスを実行できません
*Flymakeにエラーが発生した場合、*Message*bufferに切り替えてログを表示できます.変数`flymake-log-level`はログを記録しないレベルを定義します.-1はログを記録しないことを示します.
2構成
-------
2.1構成変数
=============
* flymake-log-level
ログ出力のレベル
* flymake-allowed-file-name-masks
この変数は構文チェックツールを構成し、リストの要素フォーマットは(filename-regexp,init-function,cleanup-function)
getfname-function).
* flymake-buildfile-dirs
構築ファイル(通常makefileファイル)のディレクトリ(相対パス)リストを検索
* flymake-master-file-dirs
マスターファイルのディレクトリリストの検索
* flymake-get-project-include-dirs-function
この変数の値は関数で、関数の役割はbasedirパラメータを受信し、プロジェクトのincludeディレクトリリストを返すことです.
* flymake-err-line-patterns
エラー/警告情報のパターンマッチング、リスト要素フォーマット(regexp file-idx line-idx col-idx err-text-idx)
* flymake-compilation-prevents-syntax-check
この値は、同じファイルをコンパイルして構文チェックと同時に実行できるかどうかを示します.
* flymake-no-changes-timeout
bufferをどのくらい修正したかを設定し、構文チェックを開始します.
* flymake-start-syntax-check-on-newline
車に戻ってから文法検査を開始するかどうか.
* flymake-errline
エラーが発生した行の表示方法(face)を表示
* flymake-warnline
警告が表示された行の表示方法(face)を表示
2.2拡張による新しい構文チェックツールのサポート
=============================
flymake-allowed-file-name-masks変数を構成することで、新しい構文チェックツールを拡張できます.このリスト要素は(regexp file-idx line-idx col-idx err-text-idx)です.要素の各内容について説明します.
* filename-regexp
Flymakeはbuffer filenameをfilename-regexpと一致させ、一致しない場合はflymake-modeを閉じます.そうしないと、最初に一致した情報を使用して構文チェックを行います.
* init-function
init-functionは、文法検査前の初期化動作に用いる、通常、bufferコンテンツの一時コピーをコピーすることによって完成する.
この関数は(cmd-name arg-list)のようなフォーマットを返さなければならない.
Init-functionがnullを返すと、構文チェックは行われず、flymake-modeも閉じられません.
* cleanup-funcition
cleanup-functionは、構文チェック後のクリーンアップ動作に用いる、init-functionによって作成された一時コピーを削除することが多い.
* getfname-function
この関数は、init-functionによって作成された一時的なコピーにすぎない文法チェックツールによって報告されたファイル名を本物のファイル名に変換するために使用する.ほとんどの場合、関数`flymake-get-real-file-name`を使用できます.
新しい構文チェックツールの出力がFlymakeで認識できない場合は、`flymake-err-line-patterns`変数を構成する必要がある.このリスト要素のフォーマットは(regexp file-idx line-idx col-idx err-text-idx)
次はPerlチェックの例です
-----------
*構文チェックができるファイルを開いたときにflymakeを自動的に開くには、次のような構成が必要です.
(add-hook 'find-file-hook 'flymake-find-file-hook)
*flymake-modeに入ると、構文チェックは次のような場合に自動的に行われます.
*bufferをロードした後
*返却後
*bufferの内容を変更してから一定時間が経過しました(デフォルトは0.5 s)
*構文チェックを手動で実行する場合は、関数`flymake-start-syntax-check-for-current-buffer`を実行します.
*構文でエラー/警告が検出された場合、エラーの行がハイライトされ、mode-lineに合計のエラーと警告の数が表示されます.
*「flymake-goto-next-error」および「flymake-goto-prev-error」を使用して次のエラー行に移動
*現在の行のエラー情報を表示するには、コマンド`flymake-display-err-menu-for-current-line`を使用します.
*構文チェックが完了すると、mode-lineにチェック結果が表示されます.以下に説明する
Flymake*Flymakeが実行中で、エラーは見つかりませんでした
Flymake:E/W*Flymakeが実行中で、E個のエラーとW個の警告が見つかりました
Flymake Flymake運転終了、エラーは見つかりませんでした
Flymake:E/W Flymake運転終了、E個のエラーとW個の警告が見つかりました
Flymake:! Flymake現在のbufferのプライマリファイルが見つかりません
CFGERR構文チェックプロセスは0以外の値を返しますが、エラー/警告情報は解析されません.構成エラーの可能性があります.
NOMASTER現在のbufferのプライマリファイルが見つかりません
NOMKでは、makefileなどの現在のbufferの構築ファイルは見つかりません.
PROCESS Flymakeは構文チェックプロセスを実行できません
*Flymakeにエラーが発生した場合、*Message*bufferに切り替えてログを表示できます.変数`flymake-log-level`はログを記録しないレベルを定義します.-1はログを記録しないことを示します.
2構成
-------
2.1構成変数
=============
* flymake-log-level
ログ出力のレベル
* flymake-allowed-file-name-masks
この変数は構文チェックツールを構成し、リストの要素フォーマットは(filename-regexp,init-function,cleanup-function)
getfname-function).
* flymake-buildfile-dirs
構築ファイル(通常makefileファイル)のディレクトリ(相対パス)リストを検索
* flymake-master-file-dirs
マスターファイルのディレクトリリストの検索
* flymake-get-project-include-dirs-function
この変数の値は関数で、関数の役割はbasedirパラメータを受信し、プロジェクトのincludeディレクトリリストを返すことです.
* flymake-err-line-patterns
エラー/警告情報のパターンマッチング、リスト要素フォーマット(regexp file-idx line-idx col-idx err-text-idx)
* flymake-compilation-prevents-syntax-check
この値は、同じファイルをコンパイルして構文チェックと同時に実行できるかどうかを示します.
* flymake-no-changes-timeout
bufferをどのくらい修正したかを設定し、構文チェックを開始します.
* flymake-start-syntax-check-on-newline
車に戻ってから文法検査を開始するかどうか.
* flymake-errline
エラーが発生した行の表示方法(face)を表示
* flymake-warnline
警告が表示された行の表示方法(face)を表示
2.2拡張による新しい構文チェックツールのサポート
=============================
flymake-allowed-file-name-masks変数を構成することで、新しい構文チェックツールを拡張できます.このリスト要素は(regexp file-idx line-idx col-idx err-text-idx)です.要素の各内容について説明します.
* filename-regexp
Flymakeはbuffer filenameをfilename-regexpと一致させ、一致しない場合はflymake-modeを閉じます.そうしないと、最初に一致した情報を使用して構文チェックを行います.
* init-function
init-functionは、文法検査前の初期化動作に用いる、通常、bufferコンテンツの一時コピーをコピーすることによって完成する.
この関数は(cmd-name arg-list)のようなフォーマットを返さなければならない.
Init-functionがnullを返すと、構文チェックは行われず、flymake-modeも閉じられません.
* cleanup-funcition
cleanup-functionは、構文チェック後のクリーンアップ動作に用いる、init-functionによって作成された一時コピーを削除することが多い.
* getfname-function
この関数は、init-functionによって作成された一時的なコピーにすぎない文法チェックツールによって報告されたファイル名を本物のファイル名に変換するために使用する.ほとんどの場合、関数`flymake-get-real-file-name`を使用できます.
新しい構文チェックツールの出力がFlymakeで認識できない場合は、`flymake-err-line-patterns`変数を構成する必要がある.このリスト要素のフォーマットは(regexp file-idx line-idx col-idx err-text-idx)
次はPerlチェックの例です
(defun flymake-perl-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "perl" (list "-wc " local-file))))
(setq flymake-allowed-file-name-masks
(cons '(".+\\.pl$"
flymake-perl-init
flymake-simple-cleanup
flymake-get-real-file-name)
flymake-allowed-file-name-masks))
(setq flymake-err-line-patterns
(cons '("\\(.*\\) at \\([^
]+\\) line \\([0-9]+\\)[,.
]"
2 3 nil 1)
flymake-err-line-patterns))