VS Code でも intero が使えてなかなか便利

はじめに

前に haskell-ide-engine について書いたんですがビルドが面倒などの理由であまり使わなくなりました。 intero は Emacs だけかと思ってたんですがいつの間にか VS Code や neovim でも使えるようになってたため導入してしばらく使ってみています。 intero は stack で簡単に入れられて自分でビルドする必要が無いというのがとても良いです。 VS Code + intero は docker 内の ghc や stack を使っている場合でも導入できました。

intero (haskero)

intero は haskell 開発用のツールでいくつかのエディタや IDE から利用できます。

github.com

VS Code 用の intero プラグインが haskero です。

gitlab.com

他に Haskelly というプラグインもあるんですが haskero.intero.stackPath に相当する設定がなくて docker 環境で使う場合は haskero の方が使える可能性ありそうということで haskero を選びました。

下のページで gif で動作している様子が見られるのでわかりやすいと思います。

marketplace.visualstudio.com

マウスホバーで変数の型を表示したり、ファイルを保存した時にエラーや警告を教えてくれます。 定義にジャンプしたり補完したりもできます。

docker 環境の場合

docker 環境を使っていない場合は多分すごく簡単で特にはまるところなく導入できると思います。 docker 環境の場合は前に haskell-ide-engine を使ったときと同じような方法で導入できました。

ちょっと導入してから時間が経っているためうろ覚えですが下の感じでできたと思います。

  • stack install intero でプロジェクト内に intero をインストール
  • プロジェクトのディレクトリをホスト側と同じパスでマウントする
  • stack 設定で allow-different-user: true にしておく
  • VS Code ワークスペース設定で haskero.intero.stackPath で docker 内の stack を実行するスクリプトを設定する
  • VS Code ワークスペース設定で "haskero.intero.ghciOptions": [] に設定する (何かエラー出てしまったため)

haskero.intero.stackPath で設定したスクリプトは現在 docker-compose を使っていたため下のような感じにしました。

#!/bin/bash
docker-compose run --rm --no-deps app stack $@

VS Code でも使えたその他の haskell 関連ツール

intero の他にもいくつか便利なツールが使えました。

現在は hlint と stylish-haskellプラグインを入れて使っています。

hlint と stylish-haskell は基本的に開いているファイルしか見ないようなので docker 環境でもあまり関係なく使えそうです。 また両方とも github で実行ファイルも配布されているので無理に docker 環境に入れなくても手軽に導入できると思います。

hlint は以下のプラグインを使いました。

marketplace.visualstudio.com

GitHub - hoovercj/vscode-haskell-linter: An extension to bring hlint to vscode

GitHub - ndmitchell/hlint: Haskell source code suggestions

stylish-haskell は下のプラグインを使いました。

marketplace.visualstudio.com

GitHub - vigoo/stylish-haskell-vscode: stylish-haskell support for VS code

GitHub - jaspervdj/stylish-haskell: Haskell code prettifier