Wiki

[新規] [編集]

Flymake

Emacs > Emacs の Tips >

Flymake は,make? を利用してリアルタイムにプログラムの構文をチェックするシステムである.
エラーやウォーニング部分をハイライト表示し,エラー内容を表示したりエラー行へ移動することができる.

インストール

Emacs 22 以降には標準装備されている.

設定

基本設定

~/.emacsに以下を追記する.
(require 'flymake)
(add-hook
  'c++-mode
  (flymake-mode)
)
C++ の場合だけ Flymake を起動しているが,他の言語でも同様にすればよい.
これで,プログラムソースを保存すると構文チェックが行われる.

エラー表示

デフォルトではエラー内容がポップアップで表示されるが,ミニバッファに表示するには~/.emacsに以下を追記する.
  (defun flymake-display-err-minibuf-for-current-line ()
    "Displays the error/warning for the current line in the minibuffer"
    (interactive)
    (let* ((line-no             (flymake-current-line-no))
           (line-err-info-list  (nth 0 (flymake-find-err-info flymake-err-info line-no)))
           (count               (length line-err-info-list))
           )
      (while (> count 0)
        (when line-err-info-list
          (let* ((file       (flymake-ler-file (nth (1- count) line-err-info-list)))
                 (full-file  (flymake-ler-full-file (nth (1- count) line-err-info-list)))
                 (text (flymake-ler-text (nth (1- count) line-err-info-list)))
                 (line       (flymake-ler-line (nth (1- count) line-err-info-list))))
            (message "[%s] %s" line text)
            )
          )
        (setq count (1- count)))))
エラーかウォーニングのある行で M-x flymake-display-err-minibuf-for-current-line
とするとミニバッファにエラー内容が表示される.

キーバインド

構文チェックやエラー表示,エラー部分への移動のキーバインドを設定していると便利である.~/.emacsに以下を追記する.
  (define-key c++-mode-map "\C-cc" 'flymake-start-syntax-check)
  (define-key c++-mode-map "\C-ce" 'flymake-display-err-minibuf-for-current-line)
  (define-key c++-mode-map "\C-cn" 'flymake-goto-next-error)
  (define-key c++-mode-map "\C-cp" 'flymake-goto-prev-error)
この場合は以下のように設定しているが,これは好みのキーに割り当てればよい.
処理キーバインド
構文チェックC-c c
エラー表示C-c e
次のエラー部分へ移動C-c n
前のエラー部分へ移動C-c p

使い方

  1. プログラムのソースファイルを開く
  2. Flymake が起動する
    • モード行に "Flymake" と表示されていればよい

  3. ソースを編集して保存する
  4. 構文チェックが行われる
    • チェック中はモード行の "Flymake" の後ろに "*" が現れる

  5. エラーやウォーニング部分がハイライトされる
    • エラーは赤,ウォーニングは青くなる
    • モード行の "Flymake" の後ろにエラー数とウォーニング数が表示される

  6. エラー行へ移動して修正する
  7. 3に戻る