2012.03.06
■[emacs] flymake で YAML のシンタックスチェック
やりたいこと
flymake で YAML のシンタックスチェックがしたい。
対処
~/bin などのパス(emacs の exec-path)の通してあるところに、emacs-yaml-syntax-check という名前で以下のファイルを配置します。実行権限を付与して下さい。require している yaml は Ruby の標準添付ライブラリです。
#!/usr/bin/env ruby require "yaml" begin YAML.load(ARGF) rescue Exception => error warn error.message #=> syntax error on line 3, col 2: ` name: pattern' end
scratch バッファで (executable-find "emacs-yaml-syntax-check") と書き、) の後ろで C-x C-e し、nil が返される場合はパスが通っていません。
emacs の設定ファイルは次のように書きます。
(require 'flymake) (defun flymake-yaml-init () (interactive) (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 "emacs-yaml-syntax-check" (list local-file)))) (add-to-list 'flymake-allowed-file-name-masks '("\\.ya?ml$" flymake-yaml-init)) (add-to-list 'flymake-err-line-patterns '("syntax error on line \\([0-9]+\\), col \\([0-9]+\\): `\\(.*\\)'" nil 1 2 3)) (add-hook 'yaml-mode-hook '(lambda() (flymake-mode t)))
設定はこれでおしまいです。 エラー位置が微妙にずれている気がします。気にしない気にしない。

