X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/blobdiff_plain/96bafe5384e081301ca8c38810b156d3d463c0cf..b758c1000aa81a146633112bdf8a54e8f5efbbc9:/etc/vim/.vimrc?ds=sidebyside diff --git a/etc/vim/.vimrc b/etc/vim/.vimrc index 888e189..0b9bcd9 100644 --- a/etc/vim/.vimrc +++ b/etc/vim/.vimrc @@ -68,42 +68,6 @@ if !has('nvim') 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 l:f = expand('') - if stridx(l:f, 'suda://') == 0 - let g:sev_suda_file = expand('') - let g:sev_suda_backup = &backup - let g:sev_suda_swapfile = &swapfile - let g:sev_suda_undofile = &undofile - endif -endfunction -function s:SudaSettingsRestore() - if exists('g:sev_suda_file') && filereadable(g:sev_suda_file) - if exists('g:sev_suda_backup') && g:sev_suda_backup - " XXX: suda.vim uses setlocal for this, even though it's global... - " https://github.com/lambdalisue/vim-suda/issues/85 - setlocal backup - endif - if exists('g:sev_suda_swapfile') && g:sev_suda_swapfile - setlocal swapfile - endif - if exists('g:sev_suda_undofile') && g:sev_suda_undofile - setlocal undofile - endif - endif -endfunction -autocmd BufReadPre * call s:SudaSettingsSave() -autocmd BufReadPost suda://* call s:SudaSettingsRestore() - - """ styling " nice default theme colorscheme murphy @@ -156,7 +120,6 @@ set listchars=tab:├─,extends:»,precedes:«,space:·,trail:∙,nbsp:■ " always save undo file for all file buffers autocmd BufReadPre * setlocal undofile - " explicitly use modeline, even on systems where it's disabled by system vimrc autocmd BufRead * set modeline " should be default disabled but just in case @@ -210,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