Pyon's Diary


舊 令和貳年庚子睦月拾四日 (金・晴)

Stack

Haskellで開發を行ふ際に必須のプロジェクト管理ツール.

インストールは簡単で以下のコマンドを實行するだけ.

curl --silent --show-error --location https://get.haskellstack.org/ | sh

これで /usr/local/binstack がインストールされる.

新規プロジェクトの作成はコマンドを三つ實行するだけ.

stack new new-pj # 新しいディレクトリが作成される
cd new-pj
stack setup # プロジェクト用のHaskellがインストールされる
stack build
stack exec new-pj-exec

Haskell IDE Engine (HIE)

久振りにHaskellの學習をしやうと思つて開發環境の整備を行なつた.

ghc-modがdeprecatedになつてゐて現在はHaskell IDE Engineと云ふ物を使ふらしい.

ビルドに物凄く時間が掛つた.

git clone https://github.com/haskell/haskell-ide-engine --recurse-submodules
cd haskell-ide-engine
stack ./install.hs hie-8.6.5 # $HOME/.local/binにhieコマンドがインストールされる
stack ./install.hs data

coc.nvim

NeoVimからLSPを扱ふためのプラグイン.

以下の樣に dein.toml に追記する.

[[plugins]]
repo     = 'neoclide/coc.nvim'
merge    = 0
rev      = 'release'
hook_add = '''
    function! s:show_documentation()
        if (index(['vim','help'], &filetype) >= 0)
            execute 'h '.expand('<cword>')
        else
            call CocAction('doHover')
        endif
    endfunction
    nnoremap <silent> K :call <SID>show_documentation()<CR>

    " 補完の設定
    inoremap <expr> <Tab>   pumvisible() ? "\<C-n>" : "\<Tab>"
    inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
    inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"

    nmap <silent> [g <Plug>(coc-diagnostic-prev)
    nmap <silent> ]g <Plug>(coc-diagnostic-next)
    nmap <silent> gd <Plug>(coc-definition)
    nmap <silent> gy <Plug>(coc-type-definition)
    nmap <silent> gi <Plug>(coc-implementation)
    nmap <silent> gr <Plug>(coc-references)
    nmap <leader>rn <Plug>(coc-rename)
'''
comments powered by Disqus