gcc には気を付けないと。

先日のエントリで、ob-C の編集バッファで flymake を有効にする方法を書いてみましたが、大事なことを忘れていました。
ご存知の方には何を今更ということではありますが、gccコンパイラドライバは、ソースファイルの拡張子を見て言語を推測しています。そのため、拡張子が無いファイルをソースとして指定すると、

$ gcc -c source
gcc: source: linker input file unused because linking not done

などと怒られてしまうことに。先日のエントリで紹介したコードでは、編集バッファの buffer-file-name を元に flymake が一時ファイルを作成して gcc に渡すので、何もしていないと上記のエラーとなってしまいます。
回避するには、`flymake-c-init' で作成する gccコマンドライン (ここで Makefile を指示しているなら Makefile によるコンパイルコマンドライン) に、

$ gcc --help
Usage: gcc [options] file...
Options:
(snipped...)
  -x             Specify the language of the following input files
                           Permissible languages include: c c++ assembler none
                           'none' means revert to the default behavior of
                           guessing the language based on the file's extension

というオプションを指定します。

(list "gcc" (list "-x" "c" "-Wall" "-Wextra" "-fsyntax-only"
                  local-file) (file-name-directory buffer-file-name))

の様な感じですね。
こうしておくと、どんなファイルでも C言語のソースファイルと認識して、C のコンパイル (syntax-check) を実行してくれることになります。

そもそも慎重さが足りないので、慌てて書くと良くないのですよね……と言いつつ、今日も時間がない状態で書いているという……またやらかしてしまうのかも。