haskell-jp / questions #100 at 2022-05-01 14:42:24 +0900

vimでhaskellを書いている方はいらっしゃいますか?もしいらっしゃれば設定等を教えていただきたいです。
vimじゃなくてNeovimで、ですが、私は** を使っています。こちらNeovim専用なのであまり参考にはならないかも知れませんが一応。
neovimでcocを使っています
あ、あと、vim2hsというプラグインをこんな設定で使っています :point_down:
  call dein#add('goolord/vim2hs')
  let g:haskell_conceal = 0
  let g:haskell_json = 0 " Prevent "<|> foo <|>" from concealed

(プラグインマネージャーとしてdein.vimを使っています)
興が乗ったので共有すると、こんな関数を書いて良く使っています:
function! <SID>GoToHaskellImports() abort
  silent normal gg
  silent call search('^import\>')
  call histdel('/', -1)
  let @/ = histget("/", -1)
endfunction

最初の import 文までジャンプします。
vscodeだとコメントをeval出来たり型推論が薄い字で出てきたりする機能がありますが、vimでこれを実現出来ますか?
VS Codeを使ってないので詳細知りませんが、NeovimのLSPなら
  nnoremap <buffer> <silent> K     <cmd>lua vim.lsp.buf.hover()<CR>

と設定して K で型推論の結果を表示できるみたいですね。
(全然使いこなせてねぇ... :cold_sweat: )
Hiromi ISHII / mr_konn
HLSはLSPの仕様にはないVSCode特有の機能は使わない(LSPの範囲内で機能を提供する)という方針なので、あとはクライアント側(VSCode / emacs / vim)がLSPをどうやってどの範囲までサポートしているか、ということが問題になってきますね
Hiromi ISHII / mr_konn
VSCodeで eval や import まわりなどの薄字で出てくるアクションは LSP では Code Lens と呼ばれる機能なので、使っているクライアントで code lens をどう使うのかを調べればよさそうです
Hiromi ISHII / mr_konn
codelens の踏み込んだ設定方法等は書いてないみたいですが、vim に限らず主要なエディタでの HLSの使い方は、こちらの公式ドキュメントに書かれていたりします
https://haskell-language-server.readthedocs.io/en/latest/configuration.html#vim-or-neovim
cocより他のlspクライアントの方が良かったりしますかね
いやー、 とかの話を聞くとcocが一番多機能なんじゃないかと思いますね。
じゃあやっぱり設定次第なのか....
Hiromi ISHII / mr_konn
vim使ったことがないので何とも言えませんが、codelensの対応もしているみたいですね。灰色に表示するのにあたるのは CoCは virtual text というので実現しているっぽい?


https://github.com/neoclide/coc.nvim/blob/381b4e0ce4a8def5acdfec2f2bf5cb8557f4d8f7/doc/coc.txt#L537
一応使っているのはneovimです
cocでは codeLens はデフォルトでオフになっているので、`coc-settings.json` に codeLens.enable = true と書く必要がありますね
解決しました