summaryrefslogtreecommitdiff
path: root/nvim.init.vim
diff options
context:
space:
mode:
Diffstat (limited to 'nvim.init.vim')
-rw-r--r--nvim.init.vim95
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'
+
+" }}}