From 864ec3b152112c664b35822f8a10089a52b149d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= Date: Sun, 8 Mar 2015 08:58:22 +0100 Subject: [PATCH] Added general buffers configuration and mappings --- cfg/15-buffers.vim | 46 ++++++++++++++++++++++++++++++++++++++++++++++ doc/heavim.txt | 4 ++++ 2 files changed, 50 insertions(+) create mode 100644 cfg/15-buffers.vim diff --git a/cfg/15-buffers.vim b/cfg/15-buffers.vim new file mode 100644 index 0000000..1dcb903 --- /dev/null +++ b/cfg/15-buffers.vim @@ -0,0 +1,46 @@ +set hidden " Don't close buffers + +" Buffer navigation +nnoremap :bprev +nnoremap :bnext + +" Close buffer +function CloseCurrentBuffer( ) + let btarget = bufnr( '%' ) + if getbufvar( l:btarget , '&modified' ) + echohl ErrorMsg + echomsg "No write since last change" + echohl NONE + return + endif + + let wnums = filter( range( 1 , winnr( '$' ) ) , + \ 'winbufnr(v:val) == btarget' ) + let wcurrent = winnr( ) + for w in l:wnums + execute l:w . "wincmd w" + let prevbuf = bufnr( '#' ) + if l:prevbuf > 0 && buflisted( l:prevbuf ) && l:prevbuf != w + buffer # + else + bprevious + endif + if btarget == bufnr('%') + let blisted = filter( range( 1 , bufnr( '$' ) ) , + \ 'buflisted( v:val ) && v:val != btarget' ) + let bhidden = filter( copy( l:blisted ) , + \ 'bufwinnr( v:val ) < 0' ) + let bjump = ( l:bhidden + l:blisted + [ -1 ] )[ 0 ] + if l:bjump > 0 + execute 'buffer ' . l:bjump + else + enew + endif + endif + endfor + execute 'bdelete' l:btarget + execute l:wcurrent . 'wincmd w' +endfunction + +nnoremap :call CloseCurrentBuffer() + diff --git a/doc/heavim.txt b/doc/heavim.txt index 8783f2d..4d0c6e0 100644 --- a/doc/heavim.txt +++ b/doc/heavim.txt @@ -22,6 +22,10 @@ local leader key. T Toggle visible tabs + Previous buffer + Next buffer + Close current buffer + Open new tab Close current tab Select previous tab