初速1PV

プログラミングにまつわることの記録

VimのHaskell開発環境を準備する

最近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を書いて適当な場所に間違いを埋め込んでみると、良い感じの場所にエラ一が出てくれています。

f:id:shirai3:20190423063452p:plain
エラ一表示の例

その他にも変数名の書き換えや型の表示、コ一ドの整形などをしてくれます。

いかかでしたか

上記のようにして環境を構築しました。 正直あまりHaskellを書いていないので設定が不十分かもしれません。 自分で設定した時はHaskell Ide Engineのインスト一ルに苦戦してました (stackの更新を忘れていた)が、こうやってまとめてみると簡単そうで入門にもよいと思いました。