X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/ec9f2140efb69f3f9e95b8b2fa3681e3ff07e38b..27a346435eaae9c38ce54dfdf899872b2cf6860d:/etc/vim/.vimrc?ds=sidebyside diff --git a/etc/vim/.vimrc b/etc/vim/.vimrc index 04521a6..59c8b08 100644 --- a/etc/vim/.vimrc +++ b/etc/vim/.vimrc @@ -22,12 +22,10 @@ set backup backupcopy=yes " NOTE: neovim uses ShaDa (SHAred DAta) format for viminfo and swap, and uses a " different version of undo file, so these types of files when created by " vim cannot be used with neovim, and the 'viminfofile', 'directory', and -" 'undodir' directories cannot be shared. -" NOTE: neovim has a nice default for these directories and files so -" customizing them is not necessary for it. +" 'undodir' directories cannot be shared. since neovim has a nice default +" for these directories and files, customizing them is not necessary. if !has('nvim') " viminfo - " NOTE: 'viminfofile' is a deprecated alias for 'shada' in neovim execute 'set viminfofile='.x.'/.viminfo' " swap @@ -48,6 +46,7 @@ endif unlet x unlet y + """ vim-only defaults if !has('nvim') " neovim defaults are already set @@ -57,15 +56,16 @@ if !has('nvim') autocmd! vimStartup " packages - packadd! matchit - packadd! editorconfig " this is now built to [n]vim in but optional - packadd! vim-commentary " nvim has built in commenting now + packadd! matchit " included with [n]vim but disabled by default + packadd! editorconfig " now included with [n]vim but disabled by default + packadd! vim-commentary " nvim has this built in now, vim still needs it " options set hlsearch autocmd BufRead * set autoindent endif + """ styling " nice default theme colorscheme murphy @@ -113,15 +113,19 @@ autocmd VimEnter,WinNew, autocmd VimEnter,WinNew * set list set listchars=tab:├─,extends:»,precedes:«,space:·,trail:∙,nbsp:■ + """ editor " always save undo file for all file buffers -autocmd BufRead * set undofile +autocmd BufReadPre * setlocal undofile " explicitly use modeline, even on systems where it's disabled by system vimrc -autocmd BufRead set modeline +autocmd BufRead * set modeline " should be default disabled but just in case set nomodelineexpr +"" enable editorconfig parsing for new buffers +let g:EditorConfig_enable_for_new_buf = 1 + "" indent " always use shiftwidth instead of tabsize set smarttab @@ -131,10 +135,9 @@ autocmd FileType markdown set softtabstop=4 shiftwidth=4 expandtab autocmd FileType javascript set softtabstop=2 shiftwidth=2 expandtab autocmd FileType json set softtabstop=2 shiftwidth=2 expandtab autocmd FileType html set softtabstop=2 shiftwidth=2 expandtab -let g:EditorConfig_enable_for_new_buf = 1 "" syntax -autocmd FileType todo set colorcolumn=0 +autocmd Syntax php syn clear phpHereDoc phpNowDoc "" mappings " use more accessible escapes, as C-n and C-o are shadowed by some terminals @@ -170,3 +173,98 @@ nnoremap l if !has('nvim') && maparg('', 'n') ==# '' nnoremap :nohlsearch=has('diff')?'diffupdate':'' endif + + +""" package config +"" suda +" https://github.com/lambdalisue/vim-suda/issues/32#issuecomment-829608925 +if ! &diff + let g:suda_smart_edit = 1 +endif +" re-enable backup, swap, undo for suda buffers that we can read +" https://github.com/lambdalisue/vim-suda/issues/25 +function s:SudaSettingsSave() + let b:sev_suda_swapfile = &swapfile + let b:sev_suda_undofile = &undofile + " fix https://github.com/lambdalisue/vim-suda/issues/87 + setlocal noswapfile +endfunction +function s:SudaSettingsRestore() + if filereadable(expand('')[7:]) + if exists('b:sev_suda_swapfile') && b:sev_suda_swapfile + try + setlocal swapfile + catch + " ignore swapfile errors, they should have been shown already + echohl ErrorMsg + for line in split(v:exception, '\n') + echomsg printf('[suda] %s', line) + endfor + echohl None + endtry + endif + if exists('b:sev_suda_undofile') && b:sev_suda_undofile + setlocal undofile + endif + endif +endfunction +function s:SudaProcessUndo(cmd) + let p = expand('')[7:] + if has('win32') || !&undofile || !filereadable(p) + return + endif + let p = resolve(p) + " XXX: comments are from :help backupdir to mark implementation details + let x = &undodir + " For backwards compatibility with Vim version 3.0 a '>' at the start + " of the option is removed. + if stridx(x, '>') == 0 + let x = x[1:] + endif + " To include a comma in a directory name precede it with a backslash. + for u in split(x, '\v\\@1