diff --git a/after/ftplugin/haskell.vim b/after/ftplugin/haskell.vim index 6f9646f..0fb639a 100644 --- a/after/ftplugin/haskell.vim +++ b/after/ftplugin/haskell.vim @@ -94,14 +94,6 @@ let g:vim_annotations_offset = '/.liquid/' -" LSP -let g:LanguageClient_autoStart = 0 -let g:LanguageClient_serverCommands = { - \ 'haskell': ['hie-wrapper', '--lsp', '-d', '-l', $HOME.'/lang-server-lnvim.log'], - \ } -" we use ALE instead -let g:LanguageClient_diagnosticsEnable = 0 - " nnoremap ld :call LanguageClient#textDocument_definition() " nnoremap lr :call LanguageClient#textDocument_rename() " nnoremap lf :call LanguageClient#textDocument_formatting() @@ -200,4 +192,20 @@ let g:neoformat_enabled_haskell = ['brittany'] +" LSP +let g:LanguageClient_rootMarkers = ['cabal.project', '*.cabal', 'stack.yaml'] +" \ 'haskell': ['ghcide', "--lsp"], +let g:LanguageClient_serverCommands = { + \ 'haskell': ['hie-wrapper', '--lsp'], + \ } + + +let g:echodoc#enable_at_startup = 1 + + +call deoplete#enable() +call deoplete#custom#source('LanguageClient', + \ 'min_pattern_length', + \ 2) +inoremap pumvisible() ? "\" : "\" diff --git a/after/ftplugin/rust.vim b/after/ftplugin/rust.vim index 9d5e080..30be6ed 100644 --- a/after/ftplugin/rust.vim +++ b/after/ftplugin/rust.vim @@ -36,11 +36,13 @@ vnoremap "gy:call search_under_cursor(getreg('g')) " let g:autofmt_autosave = 0 " deoplete -" call deoplete#custom#option('sources',{ - " \ '_': ['buffer'], - " \ 'rust': ['ultisnips', 'buffer', 'file', 'LanguageClient'] - " \ }) -" inoremap pumvisible() ? "\" : "\" -" call deoplete#enable() - +call deoplete#custom#option('sources',{ + \ '_': ['buffer'], + \ 'rust': ['ultisnips', 'buffer', 'file', 'LanguageClient'] + \ }) +inoremap pumvisible() ? "\" : "\" +call deoplete#enable() +let g:LanguageClient_serverCommands = { + \ 'rust': ['~/.cargo/bin/ra_lsp_server'], + \ } diff --git a/after/plugin/plugin_settings.vim b/after/plugin/plugin_settings.vim index d0ddd1e..c6c2720 100644 --- a/after/plugin/plugin_settings.vim +++ b/after/plugin/plugin_settings.vim @@ -1,136 +1,64 @@ -function! ConfigureCocNVIM() -" ============ coc.nvim =========== - " if hidden is not set, TextEdit might fail. - set hidden +" echodoc +set cmdheight=2 +let g:echodoc#enable_at_startup = 1 +let g:echodoc#type = 'signature' - " Some servers have issues with backup files, see #649 - set nobackup - set nowritebackup - " Better display for messages - "set cmdheight=2 +"LanguageClient-neovim +" Required for operations modifying multiple buffers like rename. +set hidden +nnoremap lc LanguageClient_contextMenu() +" Or map each action separately +nnoremap K :call LanguageClient#textDocument_hover() +nnoremap gd :call LanguageClient#textDocument_definition() +nnoremap :call LanguageClient#textDocument_rename() +let g:LanguageClient_autoStart = 0 +let g:LanguageClient_diagnosticsEnable = 1 +let g:LanguageClient_diagnosticsDisplay = { + \ 1: { + \ "name": "Error", + \ "texthl": "ALEError", + \ "signText": "✖", + \ "signTexthl": "ALEErrorSign", + \ "virtualTexthl": "Error", + \ }, + \ 2: { + \ "name": "Warning", + \ "texthl": "ALEWarning", + \ "signText": "⚠", + \ "signTexthl": "ALEWarningSign", + \ "virtualTexthl": "Virtual", + \ }, + \ 3: { + \ "name": "Information", + \ "texthl": "ALEInfo", + \ "signText": "ℹ", + \ "signTexthl": "ALEInfoSign", + \ "virtualTexthl": "Virtual", + \ }, + \ 4: { + \ "name": "Hint", + \ "texthl": "ALEInfo", + \ "signText": "➤", + \ "signTexthl": "ALEInfoSign", + \ "virtualTexthl": "Virtual", + \ }, + \ } - " You will have bad experience for diagnostic messages when it's default 4000. - set updatetime=300 +" hi link ALEError Error +hi ALEError term=underline cterm=underline ctermfg=Red gui=undercurl guisp=Red +hi link ALEWarning Warning +hi Virtual cterm=italic ctermfg=10 gui=italic guifg=#4b5558 +hi link ALEInfo SpellCap - " don't give |ins-completion-menu| messages. - set shortmess+=c +let $LANGUAGECLIENT_DEBUG=1 +let g:LanguageClient_loggingLevel='DEBUG' +let g:LanguageClient_virtualTextPrefix = '' +let g:LanguageClient_loggingFile = expand('~/LanguageClient.log') +let g:LanguageClient_serverStderr = expand('~/LanguageServer.log') - " always show signcolumns - set signcolumn=yes - " Use tab for trigger completion with characters ahead and navigate. - " Use command ':verbose imap ' to make sure tab is not mapped by other plugin. - inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() - inoremap pumvisible() ? "\" : "\" - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - - " Use to trigger completion. - inoremap coc#refresh() - - " Use to confirm completion, `u` means break undo chain at current position. - " Coc only does snippet and additional edit on confirm. - inoremap pumvisible() ? "\" : "\u\" - " Or use `complete_info` if your vim support it, like: - " inoremap complete_info()["selected"] != "-1" ? "\" : "\u\" - - " Use `[g` and `]g` to navigate diagnostics - nmap [g (coc-diagnostic-prev) - nmap ]g (coc-diagnostic-next) - - " Remap keys for gotos - nmap gd (coc-definition) - nmap gy (coc-type-definition) - nmap gi (coc-implementation) - nmap gr (coc-references) - - " Use K to show documentation in preview window - nnoremap K :call show_documentation() - - function! s:show_documentation() - if (index(['vim','help'], &filetype) >= 0) - execute 'h '.expand('') - else - call CocActionAsync('doHover') - endif - endfunction - - " Highlight symbol under cursor on CursorHold - autocmd CursorHold * silent call CocActionAsync('highlight') - - " Remap for rename current word - nmap rn (coc-rename) - - " Remap for format selected region - xmap f (coc-format-selected) - nmap f (coc-format-selected) - - augroup mygroup - autocmd! - " Setup formatexpr specified filetype(s). - autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') - " Update signature help on jump placeholder - autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') - augroup end - - " Remap for do codeAction of selected region, ex: `aap` for current paragraph - xmap a (coc-codeaction-selected) - nmap a (coc-codeaction-selected) - - " Remap for do codeAction of current line - nmap ac (coc-codeaction) - " Fix autofix problem of current line - nmap qf (coc-fix-current) - - " Create mappings for function text object, requires document symbols feature of languageserver. - xmap if (coc-funcobj-i) - xmap af (coc-funcobj-a) - omap if (coc-funcobj-i) - omap af (coc-funcobj-a) - - " Use for select selections ranges, needs server support, like: coc-tsserver, coc-python - "nmap (coc-range-select) - "xmap (coc-range-select) - - " Use `:Format` to format current buffer - command! -nargs=0 Format :call CocAction('format') - - " Use `:Fold` to fold current buffer - command! -nargs=? Fold :call CocAction('fold', ) - - " use `:OR` for organize import of current buffer - command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') - - " Add status line support, for integration with other plugin, checkout `:h coc-status` - set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} - - " Using CocList - " Show all diagnostics - nnoremap a :CocList diagnostics - " Manage extensions - nnoremap e :CocList extensions - " Show commands - nnoremap c :CocList commands - " Find symbol of current document - nnoremap o :CocList outline - " Search workspace symbols - nnoremap s :CocList -I symbols - " Do default action for next item. - nnoremap j :CocNext - " Do default action for previous item. - nnoremap k :CocPrev - " Resume latest coc list - nnoremap p :CocListResume -endfunction - -autocmd! User coc.nvim call ConfigureCocNVIM() if !has("nvim") " lj @@ -170,11 +98,8 @@ let g:rainbow_active = 1 " let g:airline#extensions#tabline#enabled = 1 -" LSP -let g:LanguageClient_autoStart = 0 - " deoplete -let g:deoplete#enable_at_startup = 1 +let g:deoplete#enable_at_startup = 0 " ==== delimitMate ==== let g:delimitMate_matchpairs = "(:),[:],{:}" diff --git a/coc-settings.json b/coc-settings.json deleted file mode 100644 index fad6c73..0000000 --- a/coc-settings.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "languageserver": { - "haskell": { - "trace.server": "verbose", - "command": "hie-wrapper", - "args": ["--lsp", "-d", "-l", "/home/jule/lang-server.log"], - "rootPatterns": [ - "*.cabal", - "stack.yaml", - "cabal.config", - "cabal.project", - "package.yaml" - ], - "filetypes": [ - "hs", - "lhs", - "haskell" - ], - "initializationOptions": { - "languageServerHaskell": { - "hlintOn": false - } - } - }, - "bash": { - "trace.server": "verbose", - "command": "bash-language-server", - "args": ["start"], - "filetypes": ["sh"], - "ignoredRootPaths": ["~"] - }, - // install: https://github.com/mattn/efm-langserver - // and: https://github.com/Kuniwak/vint - "efm": { - "command": "efm-langserver", - "args": [], - // custom config path - //"args": ["-c", "/home/jule/.config/efm-langserver/config.yaml"], - "filetypes": ["vim"] - }, - "python": { - "command": "python", - "args": [ - "-mpyls", - "-vv", - "--log-file", - "/tmp/lsp_python.log" - ], - "trace.server": "verbose", - "filetypes": [ - "python" - ], - "settings": { - "pyls": { - "enable": true, - "trace": { - "server": "verbose" - }, - "commandPath": "", - "configurationSources": [ - "pycodestyle" - ], - "plugins": { - "jedi_completion": { - "enabled": true - }, - "jedi_hover": { - "enabled": true - }, - "jedi_references": { - "enabled": true - }, - "jedi_signature_help": { - "enabled": true - }, - "jedi_symbols": { - "enabled": true, - "all_scopes": true - }, - "mccabe": { - "enabled": true, - "threshold": 15 - }, - "preload": { - "enabled": true - }, - "pycodestyle": { - "enabled": true - }, - "pydocstyle": { - "enabled": false, - "match": "(?!test_).*\\.py", - "matchDir": "[^\\.].*" - }, - "pyflakes": { - "enabled": true - }, - "rope_completion": { - "enabled": true - }, - "yapf": { - "enabled": true - } - } - } - } - } - }, - "coc.preferences.hoverTarget": "float", - "diagnostic.virtualText": true, - "diagnostic.enableSign": true, - "suggest.floatEnable": true -} diff --git a/vimrc b/vimrc index ff4aa2d..354933b 100644 --- a/vimrc +++ b/vimrc @@ -41,6 +41,9 @@ Plug 'sbdchd/neoformat' Plug 'AndrewRadev/bufferize.vim' Plug 'vimwiki/vimwiki' Plug 'vmchale/dhall-vim' +Plug 'Shougo/echodoc.vim' +Plug 'tpope/vim-scriptease' + " scm Plug 'tpope/vim-fugitive' @@ -58,12 +61,12 @@ Plug 'Valloric/YouCompleteMe', { 'do': './install.py --clang-completer --go-comp \ } " deoplete for haskell if has('nvim') - " Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins', - " \ } + Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins', + \ } else - " Plug 'Shougo/deoplete.nvim' - " Plug 'roxma/nvim-yarp' - " Plug 'roxma/vim-hug-neovim-rpc' + Plug 'Shougo/deoplete.nvim' + Plug 'roxma/nvim-yarp' + Plug 'roxma/vim-hug-neovim-rpc' endif " snippets @@ -72,24 +75,11 @@ endif " LSP " setting this per-language breaks "let g:LanguageClient_autoStart = 1", -" Plug 'autozimu/LanguageClient-neovim', { - " \ 'branch': 'next', - " \ 'do': 'bash install.sh', - " \ } - " Use release branch (Recommend) -Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile', 'for': ['haskell', 'rust', 'sh', 'python', 'vim']} -Plug 'neoclide/coc-tsserver', {'do': 'yarn install --frozen-lockfile', 'for': ['typescript']} -"Plug 'neoclide/coc-git', {'do': 'yarn install --frozen-lockfile'} -" Plug 'neoclide/coc-rls', {'do': 'yarn install --frozen-lockfile', 'for': ['rust']} -Plug 'fannheyward/coc-rust-analyzer', {'do': 'yarn install --frozen-lockfile', 'for': ['rust']} -Plug 'neoclide/coc-prettier', {'do': 'yarn install --frozen-lockfile', 'for': ['haskell', 'rust', 'sh']} -" Plug 'neoclide/coc-python', {'do': 'yarn install --frozen-lockfile', 'for': ['python']} -"Plug 'neoclide/coc-vetur', {'do': 'yarn install --frozen-lockfile', 'for': ['haskell']} -Plug 'neoclide/coc-json', {'do': 'yarn install --frozen-lockfile', 'for': ['json']} -" Plug 'neoclide/coc-eslint', {'do': 'yarn install --frozen-lockfile', 'for': ['']} -Plug 'neoclide/coc-yaml', {'do': 'yarn install --frozen-lockfile', 'for': ['yaml']} -" Plug 'neoclide/coc-highlight', {'do': 'yarn install --frozen-lockfile', 'for': ['']} +Plug 'autozimu/LanguageClient-neovim', { + \ 'branch': 'next', + \ 'do': 'bash ./install.sh' + \ } " linting/compilation Plug 'w0rp/ale', { @@ -198,6 +188,10 @@ call CmdAlias('hotkeys', 'tabnew ~/.vim/hotkeys') call CmdAlias('TC', 'call ToggleComment()') call CmdAlias('TF', 'call ToggleFoldText()') call CmdAlias('ctags', '!/usr/bin/ctags -R --langmap=c:.c.h --c++-kinds=+p --c-kinds=+p+x --fields=+i+a+S+t+l+m+n --extra=+q .') +call CmdAlias('Nf', 'Neoformat') +call CmdAlias('NF', 'Neoformat') +call CmdAlias('nf', 'Neoformat') +call CmdAlias('LS', 'LanguageClientStart')