My vim configuration
git clone https://mcol.xyz/code/vim-misc
Log | Files | Refs | README

commit d6a4b2fc18850966a14fd9e33c078989c4119453
parent 6659cc9afb2af9481ed2f50ad61cde8b533085e4
Author: mcol <mcol@posteo.net>
Date:   Wed, 28 Nov 2018 19:41:59 +0000

moved to plugin folder

Diffstat:
Dbclose.vim | 89-------------------------------------------------------------------------------
Rautohighlight.vim -> plugin/autohighlight.vim | 0
Aplugin/bclose.vim | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rindent.vim -> plugin/indent.vim | 0
4 files changed, 95 insertions(+), 89 deletions(-)

diff --git a/bclose.vim b/bclose.vim @@ -1,89 +0,0 @@ -"------------------------------------------------------------------" -" :bclose " -"------------------------------------------------------------------" - -" Delete buffer while keeping window layout (don't close buffer's windows). -" Version 2008-11-18 from http://vim.wikia.com/wiki/VimTip165 -if v:version < 700 || exists('loaded_bclose') || &cp - finish -endif -let loaded_bclose = 1 -if !exists('bclose_multiple') - let bclose_multiple = 1 -endif - -" Display an error message. -function! s:Warn(msg) - echohl ErrorMsg - echomsg a:msg - echohl NONE -endfunction - -" Command ':Bclose' executes ':bd' to delete buffer in current window. -" The window will show the alternate buffer (Ctrl-^) if it exists, -" or the previous buffer (:bp), or a blank buffer if no previous. -" Command ':Bclose!' is the same, but executes ':bd!' (discard changes). -" An optional argument can specify which buffer to close (name or number). -function! s:Bclose(bang, buffer) - if empty(a:buffer) - let btarget = bufnr('%') - elseif a:buffer =~ '^\d\+$' - let btarget = bufnr(str2nr(a:buffer)) - else - let btarget = bufnr(a:buffer) - endif - if btarget < 0 - call s:Warn('No matching buffer for '.a:buffer) - return - endif - if empty(a:bang) && getbufvar(btarget, '&modified') - call s:Warn('No write since last change for buffer '.btarget.' (use :Bclose!)') - return - endif - " Numbers of windows that view target buffer which we will delete. - let wnums = filter(range(1, winnr('$')), 'winbufnr(v:val) == btarget') - if !g:bclose_multiple && len(wnums) > 1 - call s:Warn('Buffer is in multiple windows (use ":let bclose_multiple=1")') - return - endif - let wcurrent = winnr() - for w in wnums - execute w.'wincmd w' - let prevbuf = bufnr('#') - if prevbuf > 0 && buflisted(prevbuf) && prevbuf != w - buffer # - else - bprevious - endif - if btarget == bufnr('%') - " Numbers of listed buffers which are not the target to be deleted. - let blisted = filter(range(1, bufnr('$')), 'buflisted(v:val) && v:val != btarget') - " Listed, not target, and not displayed. - let bhidden = filter(copy(blisted), 'bufwinnr(v:val) < 0') - " Take the first buffer, if any (could be more intelligent). - let bjump = (bhidden + blisted + [-1])[0] - if bjump > 0 - execute 'buffer '.bjump - else - execute 'enew'.a:bang - endif - endif - endfor - execute 'bdelete'.a:bang.' '.btarget - execute wcurrent.'wincmd w' -endfunction -command! -bang -complete=buffer -nargs=? Bclose call s:Bclose('<bang>', '<args>') - - -""""" These are left in case the above is not ideal -"function! CloseIfLastBuffer() -" if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 -" let g:fromFile=expand('%:p') -" execute "q" -" execute "bd" -"endfunction -"nnoremap <BS> :call CloseIfLastBuffer()<CR> - -"autocmd BufDelete * if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 | quit | endif -"autocmd BufDelete * if len(filter(range(1, bufnr('$')), '! empty(bufname(v:val)) && buflisted(v:val)')) == 1 | quit | endif - diff --git a/autohighlight.vim b/plugin/autohighlight.vim diff --git a/plugin/bclose.vim b/plugin/bclose.vim @@ -0,0 +1,95 @@ +"------------------------------------------------------------------" +" :bclose " +"------------------------------------------------------------------" + +" Delete buffer while keeping window layout (don't close buffer's windows). +" Version 2008-11-18 from http://vim.wikia.com/wiki/VimTip165 +if v:version < 700 || exists('loaded_bclose') || &cp + finish +endif +let loaded_bclose = 1 +if !exists('bclose_multiple') + let bclose_multiple = 1 +endif + +" Display an error message. +function! s:Warn(msg) + echohl ErrorMsg + echomsg a:msg + echohl NONE +endfunction + +" Command ':Bclose' executes ':bd' to delete buffer in current window. +" The window will show the alternate buffer (Ctrl-^) if it exists, +" or the previous buffer (:bp), or a blank buffer if no previous. +" Command ':Bclose!' is the same, but executes ':bd!' (discard changes). +" An optional argument can specify which buffer to close (name or number). +function! s:Bclose(bang, buffer) + if empty(a:buffer) + let btarget = bufnr('%') + elseif a:buffer =~ '^\d\+$' + let btarget = bufnr(str2nr(a:buffer)) + else + let btarget = bufnr(a:buffer) + endif + if btarget < 0 + call s:Warn('No matching buffer for '.a:buffer) + return + endif + if empty(a:bang) && getbufvar(btarget, '&modified') + call s:Warn('No write since last change for buffer '.btarget.' (use :Bclose!)') + return + endif + " Numbers of windows that view target buffer which we will delete. + let wnums = filter(range(1, winnr('$')), 'winbufnr(v:val) == btarget') + if !g:bclose_multiple && len(wnums) > 1 + call s:Warn('Buffer is in multiple windows (use ":let bclose_multiple=1")') + return + endif + let wcurrent = winnr() + for w in wnums + execute w.'wincmd w' + let prevbuf = bufnr('#') + if prevbuf > 0 && buflisted(prevbuf) && prevbuf != w + buffer # + else + bprevious + endif + if btarget == bufnr('%') + " Numbers of listed buffers which are not the target to be deleted. + let blisted = filter(range(1, bufnr('$')), 'buflisted(v:val) && v:val != btarget') + " Listed, not target, and not displayed. + let bhidden = filter(copy(blisted), 'bufwinnr(v:val) < 0') + " Take the first buffer, if any (could be more intelligent). + let bjump = (bhidden + blisted + [-1])[0] + if bjump > 0 + execute 'buffer '.bjump + else + execute 'enew'.a:bang + endif + endif + endfor + execute 'bdelete'.a:bang.' '.btarget + execute wcurrent.'wincmd w' +endfunction +command! -bang -complete=buffer -nargs=? Bclose call s:Bclose('<bang>', '<args>') + + +""""" These are left in case the above is not ideal +"function! CloseIfLastBuffer() +" if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 +" let g:fromFile=expand('%:p') +" execute "q" +" execute "bd" +"endfunction +"nnoremap <BS> :call CloseIfLastBuffer()<CR> + +"autocmd BufDelete * if len(filter(range(1, bufnr('$')), 'buflisted(v:val)')) == 1 | quit | endif +"autocmd BufDelete * if len(filter(range(1, bufnr('$')), '! empty(bufname(v:val)) && buflisted(v:val)')) == 1 | quit | endif + + + +if v:this_session == expand("$HOME") . ".cache/vim/sessions/matlab-session.vim" + nnoremap <buffer> <silent> <BS> :Bclose<CR> +endif + diff --git a/indent.vim b/plugin/indent.vim