VS Code でも intero が使えてなかなか便利
はじめに
前に haskell-ide-engine について書いたんですがビルドが面倒などの理由であまり使わなくなりました。 intero は Emacs だけかと思ってたんですがいつの間にか VS Code や neovim でも使えるようになってたため導入してしばらく使ってみています。 intero は stack で簡単に入れられて自分でビルドする必要が無いというのがとても良いです。 VS Code + intero は docker 内の ghc や stack を使っている場合でも導入できました。
intero (haskero)
intero は haskell 開発用のツールでいくつかのエディタや IDE から利用できます。
VS Code 用の intero プラグインが haskero です。
他に Haskelly というプラグインもあるんですが haskero.intero.stackPath に相当する設定がなくて docker 環境で使う場合は haskero の方が使える可能性ありそうということで haskero を選びました。
下のページで gif で動作している様子が見られるのでわかりやすいと思います。
マウスホバーで変数の型を表示したり、ファイルを保存した時にエラーや警告を教えてくれます。 定義にジャンプしたり補完したりもできます。
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 は以下のプラグインを使いました。
GitHub - hoovercj/vscode-haskell-linter: An extension to bring hlint to vscode
GitHub - ndmitchell/hlint: Haskell source code suggestions
stylish-haskell は下のプラグインを使いました。
GitHub - vigoo/stylish-haskell-vscode: stylish-haskell support for VS code