vim-config/after/ftplugin/haskell.vim

189 lines
4.7 KiB
VimL
Raw Normal View History

2018-06-15 17:02:14 +00:00
setlocal ts=2 sw=2 expandtab
2018-05-26 17:18:09 +00:00
"set background=light
"set guifont=Neep\ Medium\ Semi-Condensed\ 18
2018-07-08 08:54:08 +00:00
" tags
call CmdAlias('hasktags', '!hasktags -c .<CR>')
" from
" https://raw.githubusercontent.com/begriffs/haskell-vim-now/master/git-hscope
call CmdAlias('codex', 'call system("haskell-ctags")<CR><CR>call LoadHscope()<CR>')
2020-10-11 11:50:17 +00:00
call CmdAlias('Cc', 'Clap commits<CR>')
2018-07-08 08:54:08 +00:00
map <leader>ctg :codex<CR>
2018-07-08 08:54:08 +00:00
set tags=tags;/,codex.tags;/
" classic ctags jump
2020-01-08 19:03:38 +00:00
" nnoremap <leader>gd <C-]>
2020-01-08 23:37:57 +00:00
" nnoremap <silent> <leader>cgd :cs find g <C-R>=expand("<cword>")<CR><CR>
2018-07-08 08:54:08 +00:00
nnoremap <silent> <C-\> :cs find c <C-R>=expand("<cword>")<CR><CR>
2020-10-18 17:45:39 +00:00
" set cscopeprg=do_at_stack_root\ hscope
2018-07-08 08:54:08 +00:00
set csre
set csto=1 " search codex tags first
set nocst
" set cscopequickfix=s-,c-,d-,i-,t-,e-,a-
function! LoadHscope()
set nocscopeverbose " suppress 'duplicate connection' error
let hsf = findfile("hscope.out", ".;")
if filereadable(hsf)
exe "cs add " . hsf
elseif $HSCOPE_DB != ""
cs add $HSCOPE_DB
endif
set cscopeverbose
endfunction
2020-10-18 17:45:39 +00:00
" au BufEnter /*.hs call LoadHscope()
2018-05-26 17:18:09 +00:00
2018-07-08 08:54:57 +00:00
"hoogle
nnoremap <leader>ho :Hoogle<CR>
nnoremap <leader>hc :HoogleClose<CR>
2018-05-26 17:18:09 +00:00
" haskell-vim
2018-06-15 17:02:14 +00:00
let g:haskell_classic_highlighting = 1
2020-08-22 18:37:20 +00:00
let g:haskell_indent_disable = 0
2018-05-26 17:18:09 +00:00
" let g:haskell_enable_quantification = 1
" let g:haskell_enable_recursivedo = 1
" let g:haskell_enable_arrowsyntax = 1
" let g:haskell_enable_pattern_synonyms = 1
" let g:haskell_enable_typeroles = 1
2020-10-11 11:50:17 +00:00
let g:haskell_indent_if = 0
let g:haskell_indent_case = 4
let g:haskell_indent_let = 4
let g:haskell_indent_where = 6
let g:haskell_indent_before_where = 2
let g:haskell_indent_after_bare_where = 2
let g:haskell_indent_do = 4
let g:haskell_indent_in = 0
let g:haskell_indent_guard = 4
" let g:haskell_disable_TH = 1
" vim-hindent
let g:hindent_on_save = 0
let g:hindent_indent_size = 4
let g:hindent_line_length = 80
" vim-stylishhask
let g:stylishask_on_save = 0
2018-05-26 17:18:09 +00:00
2018-06-15 17:02:14 +00:00
" haskellmode-vim
function! HaskellDocCurrentWord()
let word = expand("<cword>")
exe "IDoc " . word
endfunction
" done by LSP now
2018-06-15 17:40:09 +00:00
nmap <F7> :call HaskellDocCurrentWord()<CR><CR>
2018-06-15 17:02:14 +00:00
2020-10-11 11:50:17 +00:00
" nmap <silent> <F3> :silent update <bar> HsimportModule<CR>
" nmap <silent> <F4> :silent update <bar> HsimportSymbol<CR>
2018-06-15 17:02:14 +00:00
2018-05-26 17:18:09 +00:00
" liquid-types
let g:vim_annotations_offset = '/.liquid/'
" autocmd BufWritePost *.hs call s:check_and_lint()
" function! s:check_and_lint()
" let l:path = expand('%:p')
" let l:qflist = ghcmod#make('check', l:path)
" call extend(l:qflist, ghcmod#make('lint', l:path))
" call setqflist(l:qflist)
" cwindow
" if empty(l:qflist)
" echo "No errors found"
" endif
" endfunction
2018-06-15 17:02:14 +00:00
let g:ghcmod_hlint_options = ['--ignore=Eta reduce $']
2018-05-26 17:18:09 +00:00
2018-06-15 17:02:14 +00:00
" ALE
let g:ale_enabled = 0
let g:ale_linters = {'haskell':[], 'c':['clang']}
2018-06-18 10:00:33 +00:00
" let g:ale_linters = {'haskell':['ghc-mod', 'hdevtools', 'argon'], 'c':['clang']}
2018-06-15 17:02:14 +00:00
" let g:ale_fixers = {
2018-06-20 13:49:42 +00:00
" \ 'haskell': ['brittany'],
2018-06-15 17:02:14 +00:00
" \}
let g:ale_haskell_hdevtools_options = "-g '-Wall' -g '-Wno-orphans'"
2018-06-18 10:00:33 +00:00
let g:ale_haskell_argon_error_level = 14
let g:ale_haskell_argon_warn_level = 10
let g:ale_haskell_argon_info_level = 6
2018-05-26 17:18:09 +00:00
2018-06-14 00:28:01 +00:00
2018-09-17 07:42:18 +00:00
let g:neoformat_enabled_haskell = ['brittany']
2018-09-17 07:44:18 +00:00
2018-09-17 07:42:18 +00:00
2020-01-25 18:22:22 +00:00
" LSP
let g:LanguageClient_rootMarkers = ['cabal.project', '*.cabal', 'stack.yaml']
" \ 'haskell': ['ghcide', "--lsp"],
let g:LanguageClient_serverCommands = {
2020-10-18 17:45:39 +00:00
\ 'haskell': ['haskell-language-server-wrapper', '--lsp', '--logfile', $HOME.'/hls-server.log'],
2020-01-25 18:22:22 +00:00
\ }
let g:echodoc#enable_at_startup = 1
2020-01-08 19:03:38 +00:00
2020-01-25 18:22:22 +00:00
call deoplete#enable()
call deoplete#custom#source('LanguageClient',
2020-10-11 11:50:17 +00:00
\ 'min_pattern_length',
\ 2)
2020-01-25 18:22:22 +00:00
inoremap <expr><tab> pumvisible() ? "\<c-n>" : "\<tab>"
2020-08-22 18:37:20 +00:00
let g:tagbar_type_haskell = {
\ 'ctagsbin' : 'hasktags',
\ 'ctagsargs' : '-x -c -o-',
\ 'kinds' : [
\ 'm:modules:0:1',
\ 'd:data: 0:1',
\ 'd_gadt: data gadt:0:1',
\ 't:type names:0:1',
\ 'nt:new types:0:1',
\ 'c:classes:0:1',
\ 'cons:constructors:1:1',
\ 'c_gadt:constructor gadt:1:1',
\ 'c_a:constructor accessors:1:1',
\ 'ft:function types:1:1',
\ 'fi:function implementations:0:1',
\ 'i:instance:0:1',
\ 'o:others:0:1'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 'm' : 'module',
\ 'c' : 'class',
\ 'd' : 'data',
\ 't' : 'type',
\ 'i' : 'instance'
\ },
\ 'scope2kind' : {
\ 'module' : 'm',
\ 'class' : 'c',
\ 'data' : 'd',
\ 'type' : 't',
\ 'instance' : 'i'
\ }
\ }
2020-10-11 11:50:17 +00:00
2020-10-11 15:55:02 +00:00
" vim-lsp
if executable('haskell-language-server-wrapper')
au User lsp_setup call lsp#register_server({
\ 'name': 'hls',
\ 'cmd': {server_info->['haskell-language-server-wrapper', '--lsp']},
\ 'allowlist': ['haskell'],
\ })
endif