• 作成:

遅まきながら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分割画面を開くことが出来て快適です.

3分割画面