• 作成日時:
  • 更新日時:

遅まきながら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分割画面
3分割画面