Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,11 @@ nmap <leader>6 <Plug>BuffetSwitch(6)
nmap <leader>7 <Plug>BuffetSwitch(7)
nmap <leader>8 <Plug>BuffetSwitch(8)
nmap <leader>9 <Plug>BuffetSwitch(9)
nmap <leader>0 <Plug>BuffetSwitch(10)
nmap <leader>0 <Plug>BuffetSwitch(0) " to the last one
nmap <leader>] <Plug>BuffetNext
nmap <leader>[ <Plug>BuffetPrev
nmap <leader><Left> <Plug>BuffetMoveLeft
nmap <leader><Right> <Plug>BuffetMoveRight
```

This will allow you to switch between buffers 1 - 10. You can get more `<Plug>`
Expand Down
42 changes: 37 additions & 5 deletions autoload/buffet.vim
Original file line number Diff line number Diff line change
Expand Up @@ -353,15 +353,47 @@ endfunction
function! buffet#bswitch(index)
let i = str2nr(a:index) - 1
if i < 0 || i > len(s:buffer_ids) - 1
echohl ErrorMsg
echom "Invalid buffer index"
echohl None
return
let buffer_id = s:buffer_ids[len(s:buffer_ids)-1]
else
let buffer_id = s:buffer_ids[i]
endif
let buffer_id = s:buffer_ids[i]
execute 'silent buffer ' . buffer_id
endfunction

function! buffet#moveLeft()
let cIdx = index(s:buffer_ids, s:last_current_buffer_id)
let idx = str2nr(cIdx)
if idx <= 0
return
endif
let tmp = s:buffer_ids[idx]
let s:buffer_ids[idx] = s:buffer_ids[idx-1]
let s:buffer_ids[idx-1] = tmp
return s:Render()
endfunction

function! buffet#moveRight()
let cIdx = index(s:buffer_ids, s:last_current_buffer_id)
if cIdx > len(s:buffer_ids)-2
return
endif
let tmp = s:buffer_ids[cIdx]
let s:buffer_ids[cIdx] = s:buffer_ids[cIdx+1]
let s:buffer_ids[cIdx+1] = tmp
return s:Render()
endfunction

function! buffet#bnext()
let current_buffer_id_i = index(s:buffer_ids, s:last_current_buffer_id)
let next_buffer_id_i = (current_buffer_id_i+2)%len(s:buffer_ids)
call buffet#bswitch(next_buffer_id_i)
endfunction

function! buffet#bprev()
let current_buffer_id_i = index(s:buffer_ids, s:last_current_buffer_id)
call buffet#bswitch(current_buffer_id_i)
endfunction

" inspired and based on https://vim.fandom.com/wiki/Deleting_a_buffer_without_closing_the_window
function! buffet#bwipe(bang, buffer)
let btarget = s:GetBuffer(a:buffer)
Expand Down
7 changes: 6 additions & 1 deletion plugin/buffet.vim
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,15 @@ endfunction

let g:buffet_bwipe_filters = ["buffet#bwipe_nerdtree_filter"]

for s:n in range(1, g:buffet_max_plug)
for s:n in range(0, g:buffet_max_plug)
execute printf("noremap <silent> <Plug>BuffetSwitch(%d) :call buffet#bswitch(%d)<cr>", s:n, s:n)
endfor

noremap <silent> <Plug>BuffetNext :call buffet#bnext()<cr>
noremap <silent> <Plug>BuffetPrev :call buffet#bprev()<cr>
noremap <silent> <Plug>BuffetMoveLeft :call buffet#moveLeft()<cr>
noremap <silent> <Plug>BuffetMoveRight :call buffet#moveRight()<cr>

command! -bang -complete=buffer -nargs=? Bw call buffet#bwipe(<q-bang>, <q-args>)
command! -bang -complete=buffer -nargs=? Bonly call buffet#bonly(<q-bang>, <q-args>)

Expand Down