遅まきながらEmacsのHaskell開発環境をInteroに移行しました
InteroというHaskellのEmacs向け開発環境があります.
私はhaskell-modeとFlycheckを既にうまく強調させて動かしていたため. これを使う必要はないかと思って移行していませんでした.
しかし今改めて説明画面を見ると. GHCの提案警告に従ってコードを修正する機能. テストなどの違うターゲットにflycheckを移動させる機能. などが魅力的に見えたので移行してみることにしました.
移行してみたら型表示がリッチになっただけではなく. モジュールの補完機能が動いたりして予想以上の効果に満足です. hasktagsを使わなくても関数の定義箇所に飛べます. 名実ともにIDEという感じですね.
往年のghc-modの機能を超えている感じがします. Emacs使ってるHaskell使いはStackを使っているなら移行して損はないと思います.
hlintとの共存
当初hlintはデフォルトで使われていたようですが,
TypeApplications
を解釈できないので取り除かれてしまいました.
TypeApplications parse error · Issue #126 · commercialhaskell/intero
しかし私はhlintを使って問題ないコードを書いているので, hlintの警告を同時に表示させることにしました.
(flycheck-add-next-checker 'intero '(warning . haskell-hlint))
でOKです.
flycheck-add-next-checker
という便利関数を初めて知りました.
REPLとFlycheckの3分割表示
私はhaskell-modeでREPLを右上に, Flycheckを右下に表示する関数を書いていたのですが, interoは新たにREPLを作成するコマンドを作ったのでこれは陳腐化してしまいました.
interoの関数に合わせて書き直しました.
(defun intero-repl-and-flycheck ()
(interactive)
(delete-other-windows)
(flycheck-list-errors)
(intero-repl)
(split-window-below)
(other-window 1)
(switch-to-buffer flycheck-error-list-buffer)
(other-window 1)
)
これでいつでも下のように3分割画面を開くことが出来て快適です.