Emacs + typescript-tools + auto-complete + flymake
引き続き TypeScript の環境整備。
普通に flymake を使うと毎回 node tsc.js が走ってしまうのと取れるエラーの数に制限がかかっているのを解消するために typescript-tools からエラーをとれるようにして flymake に流しこむ。
普通に flymake の初期化を定義するとプロセス起動しかできないので、初期化関数では nil を返しておいて処理をスキップしてタイマーで実際のエラー取得をするようにした。(flymake側でプロセス呼んで標準入力読む以外の方法対応しないかなぁ)
(defun flymake-typescript-init () (run-at-time 0.1 nil 'flymake-typescript-check-error) nil) (add-to-list 'flymake-allowed-file-name-masks '("\\.ts\\'" flymake-typescript-init)) (defun flymake-typescript-check-error () "Show syntax errors." (interactive) (setq flymake-last-change-time nil) (setq flymake-check-start-time (flymake-float-time)) ... (setq flymake-new-err-info (flymake-parse-err-lines flymake-new-err-info lines)) (flymake-post-syntax-check 0 "tss") (setq flymake-is-running nil))
typescript-tools でスクリプトの編集結果を読み込めるようにしたり、コンパイルエラーをとれるようにしたりしていたら、同時期にどちらも公式側で対応されてた……。LanguageService の API を出しているだけで大差なかったのは幸いか。 clausreinke さん働き過ぎ。
https://github.com/zakki/auto-complete-ts/tree/typescript-tools