diff options
Diffstat (limited to 'nvim.init.vim')
-rw-r--r-- | nvim.init.vim | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/nvim.init.vim b/nvim.init.vim new file mode 100644 index 0000000..c3d0ba8 --- /dev/null +++ b/nvim.init.vim @@ -0,0 +1,95 @@ +" dotfiles -- nvim.init.vim +" author: johannst + +" {{{ Basic vim + +if !exists('&mapleader') + let mapleader=" " +endif + +" disable preview window in completion +set completeopt-=preview + +" allow modified buffers in the background +set hidden + +" make cmdprompt 2 lines high -> used for echodoc to display signature +set cmdheight=2 + +" enable mouse +set mouse=a + +" render `listchars` chars +set list +set listchars=tab:>-,trail:- + +" highlight search results +set hlsearch + +" }}} +" {{{ Plugins +call plug#begin(stdpath('data') . '/plugged') + +Plug 'autozimu/LanguageClient-neovim', { + \ 'branch': 'next', + \ 'do': 'bash install.sh', + \ } + +Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } +Plug 'junegunn/fzf.vim' + +Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } +Plug 'Shougo/echodoc.vim' + +call plug#end() + +" }}} +" {{{ LanguageClient + +let g:LanguageClient_serverCommands = { + \ 'rust': ['rust-analyzer'], + \ 'cpp': ['clangd', '--completion-style=detailed'], + \ 'c': ['clangd', '--completion-style=detailed'], + \ } + +let g:LanguageClient_autoStart = 1 +let g:LanguageClient_selectionUI = "fzf" + +function ConfigureLSP() + nnoremap <leader>ld :call LanguageClient#textDocument_definition()<CR> + nnoremap <leader>lr :call LanguageClient#textDocument_rename()<CR> + nnoremap <leader>lf :call LanguageClient#textDocument_formatting()<CR> + nnoremap <leader>lt :call LanguageClient#textDocument_typeDefinition()<CR> + nnoremap <leader>lx :call LanguageClient#textDocument_references()<CR> + nnoremap <leader>la :call LanguageClient_workspace_applyEdit()<CR> + nnoremap <leader>lc :call LanguageClient#textDocument_completion()<CR> + nnoremap <leader>lh :call LanguageClient#textDocument_hover()<CR> + nnoremap <leader>ls :call LanguageClient_textDocument_documentSymbol()<CR> + nnoremap <leader>lm :call LanguageClient_contextMenu()<CR> + + " set LSP formatting for 'gq' + set formatexpr=LanguageClient#textDocument_rangeFormatting_sync() +endfunction() + +augroup LSP + autocmd! + autocmd FileType rust,c,cpp call ConfigureLSP() +augroup END + +augroup LSP_autofmt + autocmd! + autocmd BufWritePre *.rs,*.h,,*.c,*.hh,*.cc,*.hpp,*.cpp call LanguageClient#textDocument_formatting() +augroup END + +" }}} +" {{{ Deoplete + +let g:deoplete#enable_at_startup = 1 + +" }}} +" {{{ Echodoc + +let g:echodoc#enable_at_startup = 1 +let g:echodoc#type = 'signature' + +" }}} |