Răsfoiți Sursa

when quitting the bufexplorer window using the 'q' mapping, switch to
the previously active buffer rather than the first buffer in the list
also, preserve the correct alt buffer so that <C-^> works.

halfmanhalffish 11 ani în urmă
părinte
comite
587d7f50d7
1 a modificat fișierele cu 10 adăugiri și 3 ștergeri
  1. 10 3
      plugin/bufexplorer.vim

+ 10 - 3
plugin/bufexplorer.vim

@@ -112,6 +112,8 @@ let s:sort_by = ["number", "name", "fullpath", "mru", "extension"]
 let s:splitMode = ""
 let s:splitMode = ""
 let s:tabSpace = []
 let s:tabSpace = []
 let s:types = {"fullname": ':p', "path": ':p:h', "relativename": ':~:.', "relativepath": ':~:.:h', "shortname": ':t'}
 let s:types = {"fullname": ':p', "path": ':p:h', "relativename": ':~:.', "relativepath": ':~:.:h', "shortname": ':t'}
+let s:altBufferOnEntry = ""
+let s:activeBufferOnEntry = ""
 
 
 " Setup the autocommands that handle the MRUList and other stuff. {{{2
 " Setup the autocommands that handle the MRUList and other stuff. {{{2
 autocmd VimEnter * call s:Setup()
 autocmd VimEnter * call s:Setup()
@@ -683,6 +685,12 @@ function! s:BuildBufferList()
             endif
             endif
         endif
         endif
 
 
+        if buf.attributes =~ "%"
+            let s:activeBufferOnEntry = matchstr(buf.attributes, '[0-9]\+')
+        elseif buf.attributes =~ "#"
+            let s:altBufferOnEntry =  matchstr(buf.attributes, '[0-9]\+')
+        endif
+
         let line = buf.attributes." "
         let line = buf.attributes." "
 
 
         " Are we to split the path and file name?
         " Are we to split the path and file name?
@@ -916,9 +924,8 @@ function! s:Close()
     else
     else
         " Since there are buffers left to switch to, swith to the previous and
         " Since there are buffers left to switch to, swith to the previous and
         " then the current.
         " then the current.
-        for b in reverse(listed[0:1])
-            execute "keepjumps silent b ".b
-        endfor
+        execute "keepjumps silent b ".s:altBufferOnEntry
+        execute "keepjumps silent b ".s:activeBufferOnEntry
     endif
     endif
 
 
     " Clear any messages.
     " Clear any messages.