From 9d47bda15ff488dc71470620c2088c5567cacd7e Mon Sep 17 00:00:00 2001 From: Vivian De Smedt Date: Mon, 23 Jan 2023 13:04:25 +0100 Subject: [PATCH 1/2] all Bdelete to accept multiple arguments or ranges --- plugin/bbye.vim | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/plugin/bbye.vim b/plugin/bbye.vim index 82d482a..93efa4d 100644 --- a/plugin/bbye.vim +++ b/plugin/bbye.vim @@ -84,8 +84,39 @@ function! s:error(msg) let v:errmsg = a:msg endfunction -command! -bang -complete=buffer -nargs=? Bdelete - \ :call s:bdelete("bdelete", , ) +function! s:bdeletes(action, bang, range, arg1, arg2, ...) + let buffer_list = [] + if a:range == 1 + let buffer_list = add(buffer_list, arg1) + elseif a:range == 2 + let buffer_index = a:arg1 + while buffer_index <= a:arg2 + let buffer = s:str2bufnr(buffer_index) + if buffer >= 0 + let buffer_list = add(buffer_list, buffer_index) + endif + let buffer_index = buffer_index + 1 + endwhile + endif + + let i = 1 + for buffer_name in a:000 + let buffer_list = add(buffer_list, buffer_name) + let i = i + 1 + endfor + + if len(buffer_list) == 0 + call s:bdelete(a:action, a:bang, "") + endif + + for buffer_name in buffer_list + call s:bdelete(a:action, a:bang, buffer_name) + endfor +endfunction + +command! -complete=buffer -nargs=* -range=% -addr=buffers Bdelete + \ :call s:bdeletes("bdelete", , , , , ) + +command! -complete=buffer -nargs=* -range=% -addr=buffers Bdelete +\ :call s:bdeletes("bwipeout", , , , , ) -command! -bang -complete=buffer -nargs=? Bwipeout - \ :call s:bdelete("bwipeout", , ) From 6eb62e7ad242a2b9d97713b377bb395505e567af Mon Sep 17 00:00:00 2001 From: Vivian De Smedt Date: Tue, 24 Jan 2023 13:28:55 +0100 Subject: [PATCH 2/2] restore bang support --- plugin/bbye.vim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/bbye.vim b/plugin/bbye.vim index 93efa4d..7c6eb03 100644 --- a/plugin/bbye.vim +++ b/plugin/bbye.vim @@ -114,9 +114,9 @@ function! s:bdeletes(action, bang, range, arg1, arg2, ...) endfor endfunction -command! -complete=buffer -nargs=* -range=% -addr=buffers Bdelete +command! -bang -complete=buffer -nargs=* -range=% -addr=buffers Bdelete \ :call s:bdeletes("bdelete", , , , , ) -command! -complete=buffer -nargs=* -range=% -addr=buffers Bdelete +command! -bang -complete=buffer -nargs=* -range=% -addr=buffers Bdelete \ :call s:bdeletes("bwipeout", , , , , )