X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/ccdacf21dc7d84e54dc22e5398d5ecb4fb2912ec..d44eb9a1140fe20d3dec7297e2952828954ac0a1:/vim/vimrc diff --git a/vim/vimrc b/vim/vimrc index d5b0610..20c910e 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -1,14 +1,14 @@ +" force python3 +if has('python3') | endif + +" space is leader +let g:mapleader = " " + " runtimepath {{{1 set runtimepath ^=$XDG_CONFIG_HOME/vim set runtimepath +=$XDG_CONFIG_HOME/vim/after -" force python3 -if has('python3') | endif - " plugins {{{1 -" remove all autocommands -autocmd! - call plug#begin('$XDG_DATA_HOME/vim') " This does not update vim-plug, use PlugUpgrade instead Plug 'junegunn/vim-plug' @@ -48,7 +48,12 @@ Plug 'klen/python-mode' Plug 'kshenoy/vim-signature' Plug 'majutsushi/tagbar' Plug 'octol/vim-cpp-enhanced-highlight' -Plug 'raimondi/delimitmate' +if !has('nvim') + Plug 'raimondi/delimitmate' " {{{2 + let delimitMate_expand_cr = 2 + let g:delimitMate_expand_space = 1 + "}}} +end Plug 'sgeb/vim-diff-fold' Plug 'skywind3000/asyncrun.vim' " {{{2 command! -bang -nargs=* -complete=file Make AsyncRun -save=2 -program=make @ @@ -67,13 +72,38 @@ Plug 'tpope/vim-fugitive' Plug 'tpope/vim-repeat' Plug 'tpope/vim-scriptease' Plug 'tpope/vim-speeddating' -Plug 'tpope/vim-surround' "investigate vim-sandwich +if !has('nvim') + Plug 'tpope/vim-surround' "investigate vim-sandwich +endif Plug 'tpope/vim-unimpaired' Plug 'tweekmonster/spellrotate.vim' -Plug 'valloric/youcompleteme', { 'do': './install.py --clangd-completer --clang-completer' } +if !has("nvim") + " Plug 'valloric/youcompleteme' {{{2 + Plug 'valloric/youcompleteme', + \{ 'do': './install.py --clangd-completer --clang-completer' } + let g:ycm_clangd_binary_path = 'clangd' " use clangd in path + let g:ycm_clangd_args = ['--clang-tidy'] + let g:ycm_extra_conf_vim_data = ['getcwd()'] + let g:ycm_add_preview_to_completeopt = 1 + let g:ycm_complete_in_comments = 1 + let g:ycm_complete_in_strings = 1 + let g:ycm_autoclose_preview_window_after_insertion = 0 + + let g:ycm_language_server = + \ [ + \ { + \ 'name': 'haskell', + \ 'cmdline': [ 'haskell-language-server-wrapper', '--lsp' ], + \ 'filetypes': [ 'haskell', 'lhaskell' ] + \ }, + \ ] + " }}} +endif Plug 'vim-scripts/mediawiki.vim' Plug 'vim-scripts/replacewithregister' -Plug 'vim-scripts/yankring.vim' +if !has('nvim') + Plug 'svermeulen/vim-yoink' +end Plug 'wincent/loupe' " colorschemes @@ -95,9 +125,42 @@ endif "}}} -" snippets -Plug 'sirver/ultisnips' -Plug 'honza/vim-snippets' +if !has("nvim") + Plug 'sirver/ultisnips' " {{{ + Plug 'honza/vim-snippets' + + let g:UltiSnipsEditSplit = 'vertical' + let g:UltiSnipsSnippetDirectories = [ expand("$XDG_CONFIG_HOME/vim/ultisnips") ] + if has('fname_case') + let g:UltiSnipsSnippetDirectories = ["UltiSnips", "ultisnips"] + endif + let g:UltiSnipsExpandTrigger = "" + let g:UltiSnipsJumpForwardTrigger = "" + let g:UltiSnipsJumpBackwardTrigger = "" + + " UltiSnips completion function that tries to expand a snippet. If there's no + " snippet for expanding, it checks for completion window and if it's shown, + " selects first element. If there's no completion window it tries to jump to + " next placeholder. If there's no placeholder it just returns TAB key + " https://github.com/Valloric/YouCompleteMe/issues/36#issuecomment-15451411 + function! g:UltiSnips_Complete() + call UltiSnips#ExpandSnippet() + if g:ulti_expand_res == 0 + if pumvisible() + return "\" + else + call UltiSnips#JumpForwards() + if g:ulti_jump_forwards_res == 0 + return "\" + endif + endif + endif + return "" + endfunction + au InsertEnter * exec "inoremap " . g:UltiSnipsExpandTrigger . " =g:UltiSnips_Complete()" + let g:UltiSnipsListSnippets="" +"}}} +endif " text objects Plug 'kana/vim-textobj-user' @@ -107,6 +170,11 @@ Plug 'kana/vim-operator-user' " staging " Check LucHermites plugins: https://github.com/LucHermitte/lh-cpp +Plug 'imsnif/kdl.vim' + +Plug 'puremourning/vimspector' +Plug 'ilyachur/cmake4vim' +Plug 'ilyachur/gtest-vim' Plug 'git@github.com:/ram-z/vim-orgmode', { 'branch': 'dev' } " {{{2 Plug 'vim-scripts/syntaxrange' @@ -178,8 +246,6 @@ set linebreak " wrap long lines at a character in 'breakat' set showbreak=↪ " show these chars for wrapped lines set breakindent " preserve indentation in wrapped text -set lazyredraw " don't redraw while executing macros - set list " show chars defined in 'listchars' set listchars=tab:❭\ " list of strings used for list mode set listchars+=extends:❯,precedes:❮ @@ -196,6 +262,7 @@ augroup END set scrolloff=5 " number of screen lines to show around the cursor set sidescroll=1 " number of collumns to scroll set sidescrolloff=1 " don't scroll over the listchars +set display+=lastline " display as much as possible of last line set fillchars=diff:⣿,vert:│ @@ -224,7 +291,9 @@ set ttyfast " using the mouse {{{2 set mouse=rnv " list of flags for using the mouse -set ttymouse=xterm " type of mouse +if !has('nvim') + set ttymouse=xterm " type of mouse +endif " messages and info {{{2 set showcmd " Show (partial) command in status line. @@ -239,6 +308,7 @@ set shortmess+=T " truncate other messages in the middle set shortmess+=W " don't give 'written' or '[w]' when writing a file set shortmess+=A " ignore swapfile warning set shortmess+=I " no splash screen +set shortmess+=c " don't give |ins-completion-menu| messages " editing text {{{2 set backspace=indent,eol,start " allow backspacing over everything in insert mode @@ -255,7 +325,8 @@ set formatoptions+=l " do not wrap lines that have been longer when starting set formatoptions+=t " Auto-wrap text using textwidth set formatoptions-=o " Do not insert comment leader after hitting o or O in normal mode -set nrformats=hex " number formats recognized for CTRL-A and CTRL-X commands +set nrformats-=octal " don't inc/dec octal numbers with ^[AX] +set nrformats+=unsigned " treat all numbers as unsigned set complete=. " scan the current buffer ( 'wrapscan' is ignored) set complete+=w " scan buffers from other windows @@ -307,7 +378,10 @@ set backupskip+=.netrc " skip netrc set backupskip+=/dev/shm/pass* " skip passwordstore files set undofile " persistent undo history -set undodir=$XDG_CACHE_HOME/vim/undo// +set undolevels=10000 " moar undos +if !has('nvim') + set undodir=$XDG_CACHE_HOME/vim/undo// +endif augroup undoskip au! @@ -342,6 +416,7 @@ set wildignore+=*.orig " Merge resolution files " running make and jumping to errors {{{2 set makeprg=make\ -w " print changing directories +set grepformat=%f:%l:%c:%m set grepprg=ag\ --vimgrep\ $* " language specific {{{2 @@ -350,7 +425,15 @@ set isfname-== " don't treat `=` as being part of filenames " various {{{2 set virtualedit+=block " let cursor move past last char in mode set virtualedit+=onemore " allow the cursor to move just past the end of the line -set viminfo='100,<50,s10,h,n$XDG_CACHE_HOME/vim/viminfo " viminfo defaults but save file in .cache +if !has('nvim') + " viminfo defaults but save file in .cache + set viminfo='100,<50,s10,h,n$XDG_CACHE_HOME/vim/viminfo +else + " shada is the replacement format for viminfo + " this setting is probably not needed as it's most likely the default + " the default path is in XDG_DATA_HOME, which is fine + set shada='100,<50,s10,h +endif set viewdir=$XDG_CACHE_HOME/vim/view// @@ -358,9 +441,9 @@ set sessionoptions+=unix,slash " damn windows and it's silly ways " autocmds {{{1 " Resize splits when the window is resized {{{2 -augroup resize +augroup resize_splits au! - autocmd VimResized * :wincmd = + autocmd VimResized * :tabdo wincmd = augroup END " Only show cursorline in the current window and in normal mode {{{2 @@ -377,7 +460,7 @@ augroup ft_stdin augroup END " Jump to last known cursor position {{{2 -augroup cursor_pos +augroup last_loc au! " blacklist certain filetype let blacklist = ['gitcommit'] @@ -405,16 +488,8 @@ augroup END command! NoAutoChecktime let b:autochecktime=0 command! ToggleAutoChecktime let b:autochecktime=!get(b:, 'autochecktime', 0) | echom "b:autochecktime:" b:autochecktime -augroup terminal - au! - au TerminalOpen * if &buftype == 'terminal' | setlocal bufhidden=hide | endif -augroup END - " bindings {{{1 -" allow both and \ to be -map - " make function! MakeWithOpt() " TODO only do this if makeprg matches make @@ -602,9 +677,14 @@ nmap qq :echo "hi<" . synIDattr(synID(line("."),col("."),1),"na let g:checkattach_filebrowser = 'ranger' let g:checkattach_once = 'y' -" delimitmate {{{2 -let delimitMate_expand_cr = 2 -let g:delimitMate_expand_space = 1 +" close-another-window {{{2 +nnoremap c +nnoremap cc c +nnoremap ch :CloseLeftWindow +nnoremap cl :CloseRightWindow +nnoremap cj :CloseBelowWindow +nnoremap ck :CloseAboveWindow + " fswitch {{{2 nnoremap ff :FSHere @@ -627,8 +707,11 @@ function! GitToggle() if buflisted(l:status_buffer) execute 'bdelete '.l:status_buffer else - Git - 16wincmd_ + execute 'Git' + if !empty(FugitiveGitDir()) + " only resize status if Git was sucessful + 16wincmd_ + endif endif endfunction command! GitToggle :call GitToggle() @@ -666,14 +749,6 @@ nmap cog IndentGuidesToggle nmap [og IndentGuidesEnable nmap ]og IndentGuidesDisable -" close-another-window {{{2 -nnoremap c -nnoremap cc c -nnoremap ch :CloseLeftWindow -nnoremap cl :CloseRightWindow -nnoremap cj :CloseBelowWindow -nnoremap ck :CloseAboveWindow - " python-mode {{{2 let g:pymode_rope_completion = 0 @@ -734,38 +809,6 @@ let g:tcomment_textobject_inlinecomment = 'gic' let g:tcomment#filetype#guess = 0 "let g:tcomment#options = {'whitespace' : 'no'} -" ultisnips {{{2 -let g:UltiSnipsEditSplit = 'vertical' -let g:UltiSnipsSnippetDirectories = [ expand("$XDG_CONFIG_HOME/vim/ultisnips") ] -if has('fname_case') - let g:UltiSnipsSnippetDirectories = ["UltiSnips", "ultisnips"] -endif -let g:UltiSnipsExpandTrigger = "" -let g:UltiSnipsJumpForwardTrigger = "" -let g:UltiSnipsJumpBackwardTrigger = "" - -" UltiSnips completion function that tries to expand a snippet. If there's no -" snippet for expanding, it checks for completion window and if it's shown, -" selects first element. If there's no completion window it tries to jump to -" next placeholder. If there's no placeholder it just returns TAB key -" https://github.com/Valloric/YouCompleteMe/issues/36#issuecomment-15451411 -function! g:UltiSnips_Complete() - call UltiSnips#ExpandSnippet() - if g:ulti_expand_res == 0 - if pumvisible() - return "\" - else - call UltiSnips#JumpForwards() - if g:ulti_jump_forwards_res == 0 - return "\" - endif - endif - endif - return "" -endfunction -au InsertEnter * exec "inoremap " . g:UltiSnipsExpandTrigger . " =g:UltiSnips_Complete()" -let g:UltiSnipsListSnippets="" - " unite {{{2 call unite#filters#matcher_default#use(['matcher_fuzzy']) call unite#custom#profile('default', 'context', { @@ -821,35 +864,6 @@ nnoremap gg :Unite menu:fugitive let g:unite_source_history_yank_enable = 1 nnoremap [unite]p :Unite history/yank -" yankring {{{2 -nnoremap p :YRShow -let g:yankring_history_dir = expand('$XDG_CACHE_HOME/vim') -let g:yankring_replace_n_pkey = '' -let g:yankring_replace_n_nkey = '' - -" map Y to y$ for the yank ring -function! YRRunAfterMaps() - nnoremap Y :YRYankCount 'y$' -endfunction - -" youcompleteme {{{2 -let g:ycm_clangd_binary_path = 'clangd' " use clangd in path -let g:ycm_clangd_args = ['--clang-tidy'] -let g:ycm_extra_conf_vim_data = ['getcwd()'] -let g:ycm_add_preview_to_completeopt = 1 -let g:ycm_complete_in_comments = 1 -let g:ycm_complete_in_strings = 1 -let g:ycm_autoclose_preview_window_after_insertion = 0 - -let g:ycm_language_server = - \ [ - \ { - \ 'name': 'haskell', - \ 'cmdline': [ 'haskell-language-server-wrapper', '--lsp' ], - \ 'filetypes': [ 'haskell', 'lhaskell' ] - \ }, - \ ] - " vim-easy-align {{{2 " start interactive EasyAlign in visual mode vmap :echohl WarningMsg \| echo "EasyAlign mapped to a now" \| echohl None @@ -953,8 +967,6 @@ function! SwitchSpell() endfunction nnoremap coS :call SwitchSpell() -" fix spelling with first choice -nnoremap f 1z= " gitdir or home {{{2 " from derek wyatt: