From 2fb10dd2a6a91c3c46a7eda1311eed49af5cb332 Mon Sep 17 00:00:00 2001
From: Wenley Tong <wenley@squareup.com>
Date: Fri, 28 Jun 2013 14:52:28 -0700
Subject: [PATCH 1/2] Added the better Bclose - close buffers while preserving
 windows

---
 vim/plugin/bclose.vim | 61 +++++++++++++++++++++++++++++++++++++++++++
 vimrc                 |  1 +
 2 files changed, 62 insertions(+)
 create mode 100644 vim/plugin/bclose.vim

diff --git a/vim/plugin/bclose.vim b/vim/plugin/bclose.vim
new file mode 100644
index 0000000..29637b6
--- /dev/null
+++ b/vim/plugin/bclose.vim
@@ -0,0 +1,61 @@
+"here is a more exotic version of my original Kwbd script
+"delete the buffer; keep windows; create a scratch buffer if no buffers left
+function s:Kwbd(kwbdStage)
+  if(a:kwbdStage == 1)
+    if(!buflisted(winbufnr(0)))
+      bd!
+      return
+    endif
+    let s:kwbdBufNum = bufnr("%")
+    let s:kwbdWinNum = winnr()
+    windo call s:Kwbd(2)
+    execute s:kwbdWinNum . 'wincmd w'
+    let s:buflistedLeft = 0
+    let s:bufFinalJump = 0
+    let l:nBufs = bufnr("$")
+    let l:i = 1
+    while(l:i <= l:nBufs)
+      if(l:i != s:kwbdBufNum)
+        if(buflisted(l:i))
+          let s:buflistedLeft = s:buflistedLeft + 1
+        else
+          if(bufexists(l:i) && !strlen(bufname(l:i)) && !s:bufFinalJump)
+            let s:bufFinalJump = l:i
+          endif
+        endif
+      endif
+      let l:i = l:i + 1
+    endwhile
+    if(!s:buflistedLeft)
+      if(s:bufFinalJump)
+        windo if(buflisted(winbufnr(0))) | execute "b! " . s:bufFinalJump | endif
+      else
+        enew
+        let l:newBuf = bufnr("%")
+        windo if(buflisted(winbufnr(0))) | execute "b! " . l:newBuf | endif
+      endif
+      execute s:kwbdWinNum . 'wincmd w'
+    endif
+    if(buflisted(s:kwbdBufNum) || s:kwbdBufNum == bufnr("%"))
+      execute "bd! " . s:kwbdBufNum
+    endif
+    if(!s:buflistedLeft)
+      set buflisted
+      set bufhidden=delete
+      set buftype=
+      setlocal noswapfile
+    endif
+  else
+    if(bufnr("%") == s:kwbdBufNum)
+      let prevbufvar = bufnr("#")
+      if(prevbufvar > 0 && buflisted(prevbufvar) && prevbufvar != s:kwbdBufNum)
+        b #
+      else
+        bn
+      endif
+    endif
+  endif
+endfunction
+
+command! Kwbd call s:Kwbd(1)
+nnoremap <silent> <Plug>Kwbd :<C-u>Kwbd<CR>
diff --git a/vimrc b/vimrc
index ca8a696..5e3143d 100644
--- a/vimrc
+++ b/vimrc
@@ -50,6 +50,7 @@ nmap <leader>T :CommandTFlush<CR>:CommandT<CR>
 nmap <leader>] :TagbarToggle<CR>
 nmap <leader><space> :call whitespace#strip_trailing()<CR>
 nmap <leader>g :ToggleGitGutter<CR>
+nmap <leader>c <Plug>Kwbd
 
 " plugin settings
 let g:CommandTMaxHeight=20
-- 
GitLab


From 229a6b35cff10adc9edcc5da4e0e0240127b7aa1 Mon Sep 17 00:00:00 2001
From: Wenley Tong <wenley.tong@gmail.com>
Date: Sun, 28 Jul 2013 00:23:02 -0700
Subject: [PATCH 2/2] Changed plugin to submodule

---
 .gitmodules           |  3 +++
 vim/bundle/kwbd       |  1 +
 vim/plugin/bclose.vim | 61 -------------------------------------------
 3 files changed, 4 insertions(+), 61 deletions(-)
 create mode 160000 vim/bundle/kwbd
 delete mode 100644 vim/plugin/bclose.vim

diff --git a/.gitmodules b/.gitmodules
index 6e010cb..886fcc2 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -94,3 +94,6 @@
 [submodule "vim/bundle/matchit"]
 	path = vim/bundle/matchit
 	url = https://github.com/vim-scripts/matchit.zip.git
+[submodule "vim/bundle/kwbd"]
+	path = vim/bundle/kwbd
+	url = git@github.com:vim-scripts/kwbdi.vim.git
diff --git a/vim/bundle/kwbd b/vim/bundle/kwbd
new file mode 160000
index 0000000..1fd0382
--- /dev/null
+++ b/vim/bundle/kwbd
@@ -0,0 +1 @@
+Subproject commit 1fd0382dd299b9feb343b7960f6977de402b0929
diff --git a/vim/plugin/bclose.vim b/vim/plugin/bclose.vim
deleted file mode 100644
index 29637b6..0000000
--- a/vim/plugin/bclose.vim
+++ /dev/null
@@ -1,61 +0,0 @@
-"here is a more exotic version of my original Kwbd script
-"delete the buffer; keep windows; create a scratch buffer if no buffers left
-function s:Kwbd(kwbdStage)
-  if(a:kwbdStage == 1)
-    if(!buflisted(winbufnr(0)))
-      bd!
-      return
-    endif
-    let s:kwbdBufNum = bufnr("%")
-    let s:kwbdWinNum = winnr()
-    windo call s:Kwbd(2)
-    execute s:kwbdWinNum . 'wincmd w'
-    let s:buflistedLeft = 0
-    let s:bufFinalJump = 0
-    let l:nBufs = bufnr("$")
-    let l:i = 1
-    while(l:i <= l:nBufs)
-      if(l:i != s:kwbdBufNum)
-        if(buflisted(l:i))
-          let s:buflistedLeft = s:buflistedLeft + 1
-        else
-          if(bufexists(l:i) && !strlen(bufname(l:i)) && !s:bufFinalJump)
-            let s:bufFinalJump = l:i
-          endif
-        endif
-      endif
-      let l:i = l:i + 1
-    endwhile
-    if(!s:buflistedLeft)
-      if(s:bufFinalJump)
-        windo if(buflisted(winbufnr(0))) | execute "b! " . s:bufFinalJump | endif
-      else
-        enew
-        let l:newBuf = bufnr("%")
-        windo if(buflisted(winbufnr(0))) | execute "b! " . l:newBuf | endif
-      endif
-      execute s:kwbdWinNum . 'wincmd w'
-    endif
-    if(buflisted(s:kwbdBufNum) || s:kwbdBufNum == bufnr("%"))
-      execute "bd! " . s:kwbdBufNum
-    endif
-    if(!s:buflistedLeft)
-      set buflisted
-      set bufhidden=delete
-      set buftype=
-      setlocal noswapfile
-    endif
-  else
-    if(bufnr("%") == s:kwbdBufNum)
-      let prevbufvar = bufnr("#")
-      if(prevbufvar > 0 && buflisted(prevbufvar) && prevbufvar != s:kwbdBufNum)
-        b #
-      else
-        bn
-      endif
-    endif
-  endif
-endfunction
-
-command! Kwbd call s:Kwbd(1)
-nnoremap <silent> <Plug>Kwbd :<C-u>Kwbd<CR>
-- 
GitLab