Hatena::ブログ(Diary)

わからん

2012.03.06

[] flymake で YAML のシンタックスチェック

 やりたいこと

flymake で YAML のシンタックスチェックがしたい。


f:id:kitokitoki:20120306014607p:image


 対処

~/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)))

設定はこれでおしまいです。 エラー位置が微妙にずれている気がします。気にしない気にしない。


 さらなるカスタマイズ

Google