最近順調にバージョンが上がっているCoffeeLintを使ってみた。CoffeeLintのサイトから辿れるcoffeelintnodeはサバクラの構成っぽくてちょっと使いづらそうだったので、flymakeの設定を書いてみた。
flymake-cursorにも対応させてあるので下のスクリーンショットのミニバッファーにエラー内容が表示されてる。

自分でelispを書く場合、この本はとても良かった。この本を片手に他の人の書いたelispを読むのも楽しい。
それからcoffeelintのパスがnvmのちょっとアレなパスで直書きしたくなかったのと、coffeelintが結構死ぬので、flymakeが巻き添えを食わないようにする設定のやり方を参考にさせてもらった。
昨日書いたpythonのflymake部分を切り離してinit-flymake.elに統合したので、coffeescriptだけ設定したい場合は下のelispからpythonの設定を削除すれば動くと思います。
(defadvice flymake-post-syntax-check (before flymake-force-check-was-interrupted)
(setq flymake-check-was-interrupted t))
(ad-activate 'flymake-post-syntax-check)
(add-hook 'find-file-hook 'flymake-find-file-hook)
(when (load "flymake" t)
;; flymake+pyflakes+pep8
; http://d.hatena.ne.jp/cou929_la/20110525/1306321857
(defun flymake-pyflakes-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 "pycheckers" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.py\\'" flymake-pyflakes-init))
;; flymake+coffeelint
; http://blog.kzfmix.com/entry/1334315825
(defun flymake-coffeelint-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 "coffeelint" (list "--csv" local-file))))
(add-to-list 'flymake-err-line-patterns
'(".+,\\(.+\\),\\(.+\\),\\(.+\\)"
nil 1 nil 3))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.coffee\\'" flymake-coffeelint-init)))
(load-library "flymake-cursor")
magitの使い方も覚えたので、Flask+Spineのコーディングが快適にできそう。