VimのHaskell開発環境を準備する
最近Haskellの環境構築をしたのでその時を思い出しながら書きます。
環境
- OS: Gentoo Linux
- Editor: Neovim
- Plugin Manager: dein.vim
- Haskellはパッケ一ジマネ一ジャ一でインスト一ル済み
インスト一ルするツ一ル、 プラグインは
インスト一ルするプラグイン
手順
Stack
まずStackのインスト一ルをする。
sudo emerge --ask dev-haskell/stack
この時点でStackはインスト一ルされているがバ一ジョンが古いので更新する。 更新しないと次に紹介するHaskell Ide Engineのインスト一ルが出来ない。
stack upgrade
Stackの準備はこれで完了
Haskell Ide Engine
リポジトリのREADMEを読むとこんな感じでインスト一ルできることがわかる。
git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules cd haskell-ide-engine stack install
あとはインスト一ル先にパスが通っていることを確認してする。
which hie
パスが通っていれば完了。通っていなければインスト一ル先をパスに追加しておくこと。
Vim Plugin
autozimu/LanguageClient-neovim
の設定
[[plugins]] repo = 'autozimu/LanguageClient-neovim' depends = 'deoplete.nvim' rev = 'next' build = 'bash install.sh' hook_source = ''' set hidden let g:LanguageClient_serverCommands = { \ 'haskell': ['hie-wrapper'], \ } let g:LanguageClient_settingsPath = '/home/user/.config/nvim/settings.json' let g:LanguageClient_autoStart = 1 if &filetype == 'haskell' let g:LanguageClient_rootMarkers = ['*.cabal', 'stack.yaml'] endif nnoremap <silent> gt :call LanguageClient_textDocument_hover()<CR> nnoremap <silent> gr :call LanguageClient_textDocument_rename()<CR> nnoremap <silent> gs :call LanugageClient_textDocument_documentSymbol()<CR> nnoremap <silent> gd :call LanguageClient_textDocument_definition()<CR> nnoremap <silent> gr :call LanguageClient_textDocument_rename()<CR> nnoremap <silent> g- :call LanguageClient_textDocument_formatting()<CR>
neovimhaskell/haskell-vim
の設定
[[plugins]] repo = 'neovimhaskell/haskell-vim' on_ft = 'haskell'
確認
fizzbuzzを書いて適当な場所に間違いを埋め込んでみると、良い感じの場所にエラ一が出てくれています。
その他にも変数名の書き換えや型の表示、コ一ドの整形などをしてくれます。
いかかでしたか
上記のようにして環境を構築しました。 正直あまりHaskellを書いていないので設定が不十分かもしれません。 自分で設定した時はHaskell Ide Engineのインスト一ルに苦戦してました (stackの更新を忘れていた)が、こうやってまとめてみると簡単そうで入門にもよいと思いました。