From: sev Date: Thu, 5 Dec 2024 20:57:31 +0000 (-0600) Subject: vimrc: simplify/fix suda fixes X-Git-Url: https://git.sev.monster/~sev/dotfiles.git/commitdiff_plain/8aac59d62a252503085ff488f59fe1090ad7b3d7?ds=sidebyside;hp=96bafe5384e081301ca8c38810b156d3d463c0cf vimrc: simplify/fix suda fixes previous code would only work with `suda_smart_edit` and would fail on new buffers. new code is simplified and works on all suda:// buffers. also moved the code to the bottom so that undofile is set by an earlier aucmd. --- diff --git a/etc/vim/.vimrc b/etc/vim/.vimrc index 888e189..9e1a6cd 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,35 @@ 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 g:sev_suda_backup = &backup + let g:sev_suda_swapfile = &swapfile + let g:sev_suda_undofile = &undofile +endfunction +function s:SudaSettingsRestore() + if filereadable(expand('')[7:]) + 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 suda://* call s:SudaSettingsSave() +autocmd BufReadPost suda://* call s:SudaSettingsRestore()