diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index aaad501..d0959aa 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -1,106 +1,85 @@ call plug#begin('~/.local/share/nvim/plugged') Plug 'davidhalter/jedi-vim' -Plug 'Shougo/deoplete.nvim', {'do': ':UpdateRemotePlugins'} -Plug 'zchee/deoplete-jedi' -Plug 'sbdchd/neoformat' +Plug 'ncm2/float-preview.nvim' Plug 'dense-analysis/ale' Plug 'jacoborus/tender.vim' Plug 'vim-airline/vim-airline' +Plug 'vim-airline/vim-airline-themes' Plug 'airblade/vim-gitgutter' Plug 'scrooloose/nerdtree' -Plug 'Lokaltog/vim-monotone' -Plug 'ncm2/float-preview.nvim' +Plug 'gleam-lang/gleam.vim' +Plug 'cespare/vim-toml' +Plug 'rust-lang/rust.vim' +Plug 'vim-scripts/DrawIt' call plug#end() -" Sane defaults. -set mouse= -syntax on -filetype plugin indent on -set omnifunc=syntaxcomplete#Complete -set completeopt-=preview +let g:airline_theme='papercolor' +let g:airline#extensions#ale#enabled=1 + +inoremap pumvisible() ? "\" : "\" +inoremap pumvisible() ? "\" : "\" + +let g:jedi#completions_enabled=0 +let g:jedi#use_splits_not_buffers="right" + +" Preview window is floating +let g:float_preview#docked=0 +let g:float_preview#max_width=100 +let g:float_preview#max_height=150 +let g:float_preview#auto_close=0 + set tabstop=4 set softtabstop=4 set shiftwidth=4 -set textwidth=79 set expandtab set autoindent set fileformat=unix set number +" Hide top preview window, use float_preview instead +set completeopt-=preview +set omnifunc=ale#completion#OmniFunc -" Enable folding on indent -set foldmethod=indent -set foldlevel=79 +" Lint and check types +let b:ale_linters={ +\ 'python': ['mypy', 'pyls', 'pylint'], +\ 'ocaml': ['merlin'], +\ 'rust': ['analyzer', 'cargo'] +\ } +let b:ale_fixers = { +\ 'rust': 'rustfmt', +\ 'python': 'autopep8', +\ 'ocaml': 'ocamlformat' +\} -" Toggles on different plugins/modes -noremap :ToggleMouse -inoremap :ToggleMousea -nmap :set nonumber! -nmap :GitGutterBufferToggle -nmap :NERDTreeToggle -set pastetoggle= +let g:ale_rust_rustfmt_options='--edition 2018' -" Enable vimrc files per project -set exrc -" Disable unsafe commands in project vimrc -set secure - -set wildignorecase " Ignore case in command completion -set laststatus=2 " Always show statusline - -" Search settings -set smartcase " If an uppercase letter is the query, be case sensitive -set incsearch " Highlight matches while typing query -set hlsearch " Highlight all search matches - -" Highlight matching brackets -set showmatch -set mps+=<:> " Also, match < and > - - -" COLORS -" Much better with Tomorrow Night Bright color theme set in alacritty -set background=dark -" Monochrome colorscheme config -let g:monotone_color = [120, 100, 70] " Sets theme color to bright green -let g:monotone_secondary_hue_offset = 200 " Offset secondary colors by 200 degrees -let g:monotone_emphasize_comments = 1 " Emphasize comments - -highlight Search ctermfg=Black -highlight Comment ctermfg=Grey -highlight SignColumn ctermbg=236 -highlight LineNr ctermfg=244 -highlight LineNr ctermbg=232 -highlight Folded ctermbg=DarkGreen -highlight Folded ctermfg=Black -highlight MatchParen cterm=bold ctermbg=magenta ctermfg=none - - -" Filetype indents and line lengths -autocmd BufEnter rst,md set textwidth=79 -autocmd BufEnter html,yaml,css set softtabstop=2 shiftwidth=2 - -" Enable alignment -let g:neoformat_basic_format_align=1 -" Enable tab to spaces conversion -let g:neoformat_basic_format_retab=1 -" Enable trimmming of trailing whitespace -let g:neoformat_basic_format_trim=1 -let g:neoformat_try_formatprg=0 - -" Global ALE config -nmap e: ALEDetail -let b:ale_linters=[] " file type linters defined in ftplugin/*.vim +let g:ale_fix_on_save=0 let g:ale_lint_on_save=1 +let g:ale_lint_on_enter=0 let g:ale_list_window_size=20 +" Use .venv as a global default +let g:ale_virtualenv_dir_names=['.venv'] let g:ale_completion_enabled=1 -let g:ale_set_signs = 1 let g:ale_sign_error="✗" let g:ale_sign_warning="⚠" +let g:ale_echo_msg_error_str = 'E' +let g:ale_echo_msg_warning_str = 'W' +let g:ale_echo_msg_format = '[%linter%] %s [%severity%]' + +" Enable warnings about trailing whitespace for all files. let b:ale_warn_about_trailing_whitespace=1 -highlight ALEWarning ctermbg=Yellow ctermfg=None guibg=Yellow gui=None cterm=Underline -highlight ALEError ctermbg=Red ctermfg=Black cterm=underline + +nmap e :ALEDetail +noremap d :ALEGoToDefinition +noremap r :ALEFindReferences +noremap g] :ALEGoToDefinition +noremap h :ALEHover + +" ALE colors +highlight ALEError ctermbg=DarkRed ctermfg=Black +highlight ALEWarning ctermbg=Yellow ctermfg=White " Use TAB to switch between buffers noremap :bn @@ -111,21 +90,51 @@ highlight WhitespaceEOL ctermbg=red guibg=#ab0d0d match WhitespaceEOL /\s\+\%#\@ :let _s=@/:%s/\s\+$//e:let @/=_s -" Git Gutter config -highlight GitGutterAdd guibg=#22ff22 guifg=#000000 ctermfg=Green -highlight GitGutterChange guibg=#bbbb00 guifg=#000000 ctermfg=Yellow -highlight GitGutterDelete guibg=#ff2222 guifg=#000000 ctermfg=DarkRed +" Much better with Tomorrow Night Bright color theme set in alacritty +" set background=dark +highlight Search ctermfg=Black +highlight Comment ctermfg=Grey +highlight SignColumn ctermbg=0 +highlight LineNr ctermbg=0 ctermfg=248 +highlight Folded ctermbg=Green ctermfg=Black +highlight Pmenu ctermbg=gray guibg=gray + +highlight GitGutterAdd ctermfg=Green +highlight GitGutterChange ctermfg=Red +highlight GitGutterDelete ctermfg=DarkRed +highlight GitGutterAddLine ctermbg=LightGreen +highlight GitGutterChangeLine ctermbg=Yellow +highlight GitGutterDeleteLine ctermbg=LightRed +highlight GitGutterChangeDeleteLine ctermbg=LightRed + +nmap ]h (GitGutterNextHunk) +nmap [h (GitGutterPrevHunk) let g:gitgutter_sign_added='+' -let g:gitgutter_sign_modified='-+' +let g:gitgutter_sign_modified='±' let g:gitgutter_sign_removed='-' -let g:gitgutter_sign_removed_first_line='^^' -let g:gitgutter_sign_modified_removed='--' +let g:gitgutter_sign_removed_first_line='^' +let g:gitgutter_sign_modified_removed='-' let g:gitgutter_map_keys=0 +let g:gitgutter_set_sign_backgrounds=1 + +" Toggles on different plugins/modes +nmap :ToggleMouse +set pastetoggle= +nmap :set nonumber! +nmap :GitGutterBufferToggle +nmap :NERDTreeToggle +nmap :GitGutterLineHighlightsToggle + +autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab " Maintain undo history between sessions -if !isdirectory("/tmp/.vim-undo-dir") -call mkdir("/tmp/.vim-undo-dir", "", 0700) +if !isdirectory("/tmp/.vim-undo-dir-vladan") + call mkdir("/tmp/.vim-undo-dir-vladan", "", 0700) endif -set undodir=/tmp/.vim-undo-dir +set undodir=/tmp/.vim-undo-dir-vladan set undofile +" Enable vimrc files per project +set exrc +" Disable unsafe commands in project vimrc +set secure