[vim-scripts] 03/11: Updated bufexplorer to 7.3.3

James McCoy jamessan at debian.org
Thu Aug 15 04:03:10 UTC 2013


This is an automated email from the git hooks/post-receive script.

jamessan pushed a commit to branch master
in repository vim-scripts.

commit 2ce0f2764f895bb9ee24f963f1701288add50811
Author: James McCoy <jamessan at debian.org>
Date:   Thu Jan 17 22:08:22 2013 -0500

    Updated bufexplorer to 7.3.3
    
    Signed-off-by: James McCoy <jamessan at debian.org>
---
 debian/changelog                 |    1 +
 debian/vim-scripts.status        |    2 +-
 doc/bufexplorer.txt              |  722 ++++++++++--------
 html/index.html                  |    2 +-
 html/plugin_bufexplorer.vim.html |   66 +-
 plugin/bufexplorer.vim           | 1567 +++++++++++++++++++-------------------
 6 files changed, 1251 insertions(+), 1109 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 989973d..9ae2f05 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,7 @@ vim-scripts (20121008) UNRELEASED; urgency=low
     - supertab: Updated to 2.0  (Closes: #698168)
       + Remove patch disabledby-supertab.diff, merged upstream.
     - surround: Updated to 2.0
+    - bufexplorer: Updated to 7.3.3
 
  -- James McCoy <jamessan at debian.org>  Thu, 17 Jan 2013 21:32:43 -0500
 
diff --git a/debian/vim-scripts.status b/debian/vim-scripts.status
index 176325e..e21ac18 100644
--- a/debian/vim-scripts.status
+++ b/debian/vim-scripts.status
@@ -47,7 +47,7 @@ email:       delux256-vim at yahoo dot com
 license:     license [2], see below
 extras:	     doc/bufexplorer.txt
 disabledby:  let loaded_bufexplorer = 1
-version:     7.2.8
+version:     7.3.3
 
 script_name: plugin/minibufexpl.vim
 addon:       minibufexplorer
diff --git a/doc/bufexplorer.txt b/doc/bufexplorer.txt
index 06e9223..468012b 100644
--- a/doc/bufexplorer.txt
+++ b/doc/bufexplorer.txt
@@ -1,9 +1,9 @@
-*bufexplorer.txt*              Buffer Explorer       Last Change: 22 Oct 2010
+*bufexplorer.txt*              Buffer Explorer       Last Change: 14 Jan 2013
 
 Buffer Explorer                                *buffer-explorer* *bufexplorer*
-                                Version 7.2.8
+                                Version 7.3.3
 
-Plugin for easily exploring (or browsing) Vim |:buffers|.
+Plugin for easily exploring (or browsing) Vim|:buffers|.
 
 |bufexplorer-installation|   Installation
 |bufexplorer-usage|          Usage
@@ -22,7 +22,8 @@ This plugin is only available if 'compatible' is not set.
 INSTALLATION                                        *bufexplorer-installation*
 
 To install:
-  - Download the bufexplorer.zip.
+  - Download the bufexplorer.zip from:
+    http://www.vim.org/scripts/script.php?script_id=42
   - Extract the zip archive into your runtime directory.
     The archive contains plugin/bufexplorer.vim, and doc/bufexplorer.txt.
   - Start Vim or goto an existing instance of Vim.
@@ -37,11 +38,11 @@ To install:
 USAGE                                                      *bufexplorer-usage*
 
 To start exploring in the current window, use: >
- \be   or   :BufExplorer
+ \be   or   :BufExplorer   or   Your custom key mapping
 To start exploring in a newly split horizontal window, use: >
- \bs   or   :BufExplorerHorizontalSplit
+ \bs   or   :BufExplorerHorizontalSplit   or   Your custom key mapping
 To start exploring in a newly split vertical window, use: >
- \bv   or   :BufExplorerVerticalSplit
+ \bv   or   :BufExplorerVerticalSplit   or   Your custom key mapping
 
 If you would like to use something other than '\', you may simply change the
 leader (see |mapleader|).
@@ -58,11 +59,12 @@ Commands to use once exploring:
  <leftmouse>   Opens the buffer that is under the cursor into the current
                window.
  <shift-enter> Opens the buffer that is under the cursor in another tab.
+ B             Works in association with the|ShowTabBuffer|option.  If
+              |ShowTabBuffer|is set to 1, this toggles if BufExplorer is to
+               only store the most recent tab for this buffer or not.
  d            |:delete|the buffer under the cursor from the list.  The
                buffer's 'buflisted' is cleared. This allows for the buffer to
                be displayed again using the 'show unlisted' command.
- R             Toggles relative path/absolute path.
- T             Toggles to show only buffers for this tab or not.
  D            |:wipeout|the buffer under the cursor from the list.  When a
                buffers is wiped, it will not be shown when unlisted buffer are
                displayed.
@@ -71,11 +73,16 @@ Commands to use once exploring:
  o             Opens the buffer that is under the cursor into the current
                window.
  p             Toggles the showing of a split filename/pathname.
- q             Quit exploring.
+ q             Exit/Close bufexplorer.
  r             Reverses the order the buffers are listed in.
- s             Selects the order the buffers are listed in. Either by buffer
+ R             Toggles relative path/absolute path.
+ s             Cycle thru how the buffers are listed. Either by buffer
                number, file name, file extension, most recently used (MRU), or
                full path.
+ S             Cycle thru how the buffers are listed, in reverse order.
+	       Either by buffer number, file name, file extension, most
+               recently used (MRU), or full path.
+ T             Toggles to show only buffers for this tab or not.
  t             Opens the buffer that is under the cursor in another tab.
  u             Toggles the showing of "unlisted" buffers.
 
@@ -106,6 +113,14 @@ WINDOW LAYOUT                                       *bufexplorer-windowlayout*
 ===============================================================================
 CUSTOMIZATION                                       *bufexplorer-customization*
 
+If you do not like the default key mappings of \be, \bs, and \bv, you can
+override bufexplorer's default mappings by setting up something like the
+following in your vimrc file:
+
+  noremap <silent> <F11> :BufExplorer<CR>
+  noremap <silent> <m-F11> :BufExplorerHorizontalSplit<CR>
+  noremap <silent> <c-F11> :BufExplorerVerticalSplit<CR>
+
                                                           *g:bufExplorerChgWin*
 If set, bufexplorer will bring up the selected buffer in the window specified
 by g:bufExplorerChgWin.
@@ -179,9 +194,15 @@ To control where the new split window will be placed above or below the
 current window, use: >
   let g:bufExplorerSplitBelow=1        " Split new window below current.
   let g:bufExplorerSplitBelow=0        " Split new window above current.
-The default is to use what ever is set by the global &splitbelow
+The default is to use whatever is set by the global &splitbelow
 variable.
 
+                                                   *g:bufExplorerSplitHorzSize*
+To control the size of the new horizontal split window. use: >
+  let g:bufExplorerHorzSize=n          " New split window is n rows high.
+  let g:bufExplorerHorzSize=0          " New split window size set by Vim.
+The default is 0, so that the size is set by Vim.
+
                                                 *g:bufExplorerSplitOutPathName*
 To control whether to split out the path and file name or not, use: >
   let g:bufExplorerSplitOutPathName=1  " Split the path and file name.
@@ -196,303 +217,390 @@ current window, use: >
   let g:bufExplorerSplitRight=1        " Split right.
 The default is to use the global &splitright.
 
+                                                   *g:bufExplorerSplitVertSize*
+To control the size of the new vertical split window. use: >
+  let g:bufExplorerVertSize=n          " New split window is n columns wide.
+  let g:bufExplorerVertSize=0          " New split windows size set by Vim.
+The default is 0, so that the size is set by Vim.
+
 ===============================================================================
 CHANGE LOG                                              *bufexplorer-changelog*
 
-7.2.8  - Enhancements:
-         * Thanks to Charles Campbell for integrating bufexplorer with GDBMGR.
-           http://mysite.verizon.net/astronaut/vim/index.html#GDBMGR
-7.2.7  - Fix:
-         * My 1st attempt to fix the "cache" issue where buffers information
-           has changed but the cache/display does not reflect those changes.
-           More work still needs to be done.
-7.2.6  - Fix:
-         * Thanks to Michael Henry for pointing out that I totally forgot to
-           update the inline help to reflect the previous change to the 'd'
-           and 'D' keys. Opps!
-7.2.5  - Fix:
-         * Philip Morant suggested switching the command (bwipe) associated
-           with the 'd' key with the command (bdelete) associated with the 'D'
-           key. This made sense since the 'd' key is more likely to be used
-           compared to the 'D' key.
-7.2.4  - Fix:
-         * I did not implement the patch provided by Godefroid Chapelle
-           correctly. I missed one line which happened to be the most
-           important one :)
-7.2.3  - Enhancements:
-         * Thanks to David Fishburn for helping me out with a much needed
-           code overhaul as well as some awesome performance enhancements.
-           He also reworked the handling of tabs.
-         * Thanks to Vladimir Dobriakov for making the suggestions on
-           enhancing the documentation to include a better explaination of
-           what is contained in the main bufexplorer window.
-         * Thanks to Yuriy Ershov for added code that when the bufexplorer
-           window is opened, the cursor is now positioned at the line with the
-           active buffer (useful in non-MRU sort modes).
-         * Yuriy also added the abiltiy to cycle through the sort fields in
-           reverse order.
-         Fixes:
-         * Thanks to Michael Henry for supplying a patch that allows
-           bufexplorer to be opened even when there is one buffer or less.
-         * Thanks to Godefroid Chapelle for supplying a patch that fixed
-           MRU sort order after loading a session.
-7.2.2  - Fixes:
-         * Thanks to David L. Dight for spotting and fixing an issue when
-           using ctrl^. bufexplorer would incorrectly handle the previous
-           buffer so that when ctrl^ was pressed the incorrect file was opened.
-7.2.1  - Fixes:
-         * Thanks to Dimitar for spotting and fixing a feature that was
-           inadvertently left out of the previous version. The feature was
-           when bufexplorer was used together with WinManager, you could use
-           the tab key to open a buffer in a split window.
-7.2.0  - Enhancements:
-         * For all those missing the \bs and \bv commands, these have now
-           returned. Thanks to Phil O'Connell for asking for the return of
-           these missing features and helping test out this version.
-         Fixes:
-         * Fixed problem with the bufExplorerFindActive code not working
-           correctly.
-         * Fixed an incompatibility between bufexplorer and netrw that caused
-           buffers to be incorrectly removed from the MRU list.
-7.1.7  - Fixes:
-         * TaCahiroy fixed several issues related to opening a buffer in a
-           tab.
-7.1.6  - Fixes:
-         * Removed ff=unix from modeline in bufexplorer.txt. Found by Bill
-           McCarthy.
-7.1.5  - Fixes:
-         * Could not open unnamed buffers. Fixed by TaCahiroy.
-7.1.4  - Fixes:
-         * Sometimes when a file's path has 'white space' in it, extra buffers
-           would be created containing each piece of the path. i.e:
-           opening c:\document and settings\test.txt would create a buffer
-           named "and" and a buffer named "Documents". This was reported and
-           fixed by TaCa Yoss.
-7.1.3  - Fixes:
-         * Added code to allow only one instance of the plugin to run at a
-           time. Thanks Dennis Hostetler.
-7.1.2  - Fixes:
-         * Fixed a jumplist issue spotted by JiangJun. I overlooked the
-           'jumplist' and with a couple calls to 'keepjumps', everything is
-           fine again.
-         * Went back to just having a plugin file, no autoload file. By having
-           the autoload, WinManager was no longer working and without really
-           digging into the cause, it was easier to go back to using just a
-           plugin file.
-7.1.1  - Fixes:
-         * A problem spotted by Thomas Arendsen Hein.
-           When running Vim (7.1.94), error E493 was being thrown.
-         Enhancements:
-         * Added 'D' for 'delete' buffer as the 'd' command was a 'wipe'
-           buffer.
-7.1.0  - Another 'major' update, some by Dave Larson, some by me.
-         * Making use of 'autoload' now to make the plugin load quicker.
-         * Removed '\bs' and '\bv'. These are now controlled by the user. The
-           user can issue a ':sp' or ':vs' to create a horizontal or vertical
-           split window and then issue a '\be'
-         * Added handling of tabs.
-7.0.17 - Fixed issue with 'drop' command.
-         Various enhancements and improvements.
-7.0.16 - Fixed issue reported by Liu Jiaping on non Windows systems, which was
-         ...
-         Open file1, open file2, modify file1, open bufexplorer, you get the
-         following error:
-
-         --------8<--------
-         Error detected while processing function
-         <SNR>14_StartBufExplorer..<SNR>14_SplitOpen:
-         line    4:
-         E37: No write since last change (add ! to override)
-
-         But the worse thing is, when I want to save the current buffer and
-         type ':w', I get another error message:
-         E382: Cannot write, 'buftype' option is set 
-         --------8<--------
-
-7.0.15 - Thanks to Mark Smithfield for suggesting bufexplorer needed to handle
-         the ':args' command.
-7.0.14 - Thanks to Randall Hansen for removing the requirement of terminal
-         versions to be recompiled with 'gui' support so the 'drop' command
-         would work. The 'drop' command is really not needed in terminal
-         versions.
-7.0.13 - Fixed integration with WinManager.
-         Thanks to Dave Eggum for another update.
-           - Fix: The detailed help didn't display the mapping for toggling
-                  the split type, even though the split type is displayed.
-           - Fixed incorrect description in the detailed help for toggling
-             relative or full paths.
-           - Deprecated s:ExtractBufferNbr(). Vim's str2nr() does the same
-             thing.
-           - Created a s:Set() function that sets a variable only if it hasn't
-             already been defined. It's useful for initializing all those
-             default settings.
-           - Removed checks for repetitive command definitions. They were
-             unnecessary.
-           - Made the help highlighting a little more fancy.
-           - Minor reverse compatibility issue: Changed ambiguous setting
-             names to be more descriptive of what they do (also makes the code
-             easier to follow):
-               Changed bufExplorerSortDirection to bufExplorerReverseSort
-               Changed bufExplorerSplitType to bufExplorerSplitVertical
-               Changed bufExplorerOpenMode to bufExplorerUseCurrentWindow
-           - When the BufExplorer window closes, all the file-local marks are
-             now deleted. This may have the benefit of cleaning up some of the
-             jumplist.
-           - Changed the name of the parameter for StartBufExplorer from
-             "split" to "open". The parameter is a string which specifies how
-             the buffer will be open, not if it is split or not.
-           - Deprecated DoAnyMoreBuffersExist() - it is a one line function
-             only used in one spot.
-           - Created four functions (SplitOpen(), RebuildBufferList(),
-             UpdateHelpStatus() and ReSortListing()) all with one purpose - to
-             reduce repeated code.
-           - Changed the name of AddHeader() to CreateHelp() to be more
-             descriptive of what it does. It now returns an array instead of
-             updating the window directly. This has the benefit of making the
-             code more efficient since the text the function returns is used a
-             little differently in the two places the function is called.
-         - Other minor simplifications.
-7.0.12 - MAJOR Update.
-         This version will ONLY run with Vim version 7.0 or greater.
-         Dave Eggum has made some 'significant' updates to this latest
-         version:
-           - Added BufExplorerGetAltBuf() global function to be used in the
-             user�s rulerformat.
-           - Added g:bufExplorerSplitRight option.
-           - Added g:bufExplorerShowRelativePath option with mapping.
-           - Added current line highlighting.
-           - The split type can now be changed whether bufexplorer is opened
-             in split mode or not.
-           - Various major and minor bug fixes and speed improvements.
-           - Sort by extension.
-         Other improvements/changes:
-           - Changed the help key from '?' to <F1> to be more 'standard'.
-           - Fixed splitting of vertical bufexplorer window.
-         Hopefully I have not forgot something :)
-7.0.11 - Fixed a couple of highlighting bugs, reported by David Eggum. He also
-         changed passive voice to active on a couple of warning messages.
-7.0.10 - Fixed bug report by Xiangjiang Ma. If the 'ssl' option is set,
-         the slash character used when displaying the path was incorrect.
-7.0.9  - Martin Grenfell found and eliminated an annoying bug in the
-         bufexplorer/winmanager integration. The bug was were an
-         annoying message would be displayed when a window was split or
-         a new file was opened in a new window. Thanks Martin!
-7.0.8  - Thanks to Mike Li for catching a bug in the WinManager integration.
-         The bug was related to the incorrect displaying of the buffer
-         explorer's window title.
-7.0.7  - Thanks to Jeremy Cowgar for adding a new enhancement. This
-         enhancement allows the user to press 'S', that is capital S, which
-         will open the buffer under the cursor in a newly created split
-         window.
-7.0.6  - Thanks to Larry Zhang for finding a bug in the "split" buffer code.
-         If you force set g:bufExplorerSplitType='v' in your vimrc, and if you
-         tried to do a \bs to split the bufexplorer window, it would always
-         split horizontal, not vertical. He also found that I had a typeo in
-         that the variable g:bufExplorerSplitVertSize was all lower case in
-         the documentation which was incorrect.
-7.0.5  - Thanks to Mun Johl for pointing out a bug that if a buffer was
-         modified, the '+' was not showing up correctly.
-7.0.4  - Fixed a problem discovered first by Xiangjiang Ma. Well since I've
-         been using vim 7.0 and not 6.3, I started using a function (getftype)
-         that is not in 6.3. So for backward compatibility, I conditionaly use
-         this function now.  Thus, the g:bufExplorerShowDirectories feature is
-         only available when using vim 7.0 and above.
-7.0.3  - Thanks to Erwin Waterlander for finding a problem when the last
-         buffer was deleted. This issue got me to rewrite the buffer display
-         logic (which I've wanted to do for sometime now).
-         Also great thanks to Dave Eggum for coming up with idea for
-         g:bufExplorerShowDirectories. Read the above information about this
-         feature.
-7.0.2  - Thanks to Thomas Arendsen Hein for finding a problem when a user
-         has the default help turned off and then brought up the explorer. An
-         E493 would be displayed.
-7.0.1  - Thanks to Erwin Waterlander for finding a couple problems.
-         The first problem allowed a modified buffer to be deleted.  Opps! The
-         second problem occurred when several files were opened, BufExplorer
-         was started, the current buffer was deleted using the 'd' option, and
-         then BufExplorer was exited. The deleted buffer was still visible
-         while it is not in the buffers list. Opps again!
-7.0.0  - Thanks to Shankar R. for suggesting to add the ability to set
-         the fixed width (g:bufExplorerSplitVertSize) of a new window
-         when opening bufexplorer vertically and fixed height
-         (g:bufExplorerSplitHorzSize) of a new window when opening
-         bufexplorer horizontally. By default, the windows are normally
-         split to use half the existing width or height.
-6.3.0  - Added keepjumps so that the jumps list would not get cluttered with
-         bufexplorer related stuff.
-6.2.3  - Thanks to Jay Logan for finding a bug in the vertical split position
-         of the code. When selecting that the window was to be split
-         vertically by doing a '\bv', from then on, all splits, i.e. '\bs',
-         were split vertically, even though g:bufExplorerSplitType was not set
-         to 'v'.
-6.2.2  - Thanks to Patrik Modesto for adding a small improvement. For some
-         reason his bufexplorer window was always showing up folded. He added
-         'setlocal nofoldenable' and it was fixed.
-6.2.1  - Thanks goes out to Takashi Matsuo for added the 'fullPath' sorting
-         logic and option.
-6.2.0  - Thanks goes out to Simon Johann-Ganter for spotting and fixing a
-         problem in that the last search pattern is overridden by the search
-         pattern for blank lines.
-6.1.6  - Thanks to Artem Chuprina for finding a pesky bug that has been around
-         for sometime now. The <esc> key mapping was causing the buffer
-         explored to close prematurely when vim was run in an xterm. The <esc>
-         key mapping is now removed.
-6.1.5  - Thanks to Khorev Sergey. Added option to show default help or not.
-6.1.4  - Thanks goes out to Valery Kondakoff for suggesting the addition of
-         setlocal nonumber and foldcolumn=0. This allows for line numbering
-         and folding to be turned off temporarily while in the explorer.
-6.1.3  - Added folding. Did some code cleanup. Added the ability to force the
-         newly split window to be temporarily vertical, which was suggested by
-         Thomas Glanzmann.
-6.1.2  - Now pressing the <esc> key will quit, just like 'q'.
-         Added folds to hide winmanager configuration.
-         If anyone had the 'C' option in their cpoptions they would receive
-         a E10 error on startup of BufExplorer. cpo is now saved, updated and
-         restored. Thanks to Charles E Campbell, Jr.
-         Attempted to make sure there can only be one BufExplorer window open
-         at a time.
-6.1.1  - Thanks to Brian D. Goodwin for adding toupper to FileNameCmp. This
-         way buffers sorted by name will be in the correct order regardless of
-         case.
-6.0.16 - Thanks to Andre Pang for the original patch/idea to get bufexplorer
-         to work in insertmode/modeless mode (evim). Added Initialize
-         and Cleanup autocommands to handle commands that need to be
-         performed when starting or leaving bufexplorer.
-6.0.15 - Srinath Avadhanulax added a patch for winmanager.vim.
-6.0.14 - Fix a few more bug that I thought I already had fixed. Thanks
-         to Eric Bloodworth for adding 'Open Mode/Edit in Place'. Added
-         vertical splitting.
-6.0.13 - Thanks to Charles E Campbell, Jr. for pointing out some embarrassing
-         typos that I had in the documentation. I guess I need to run
-         the spell checker more :o)
-6.0.12 - Thanks to Madoka Machitani, for the tip on adding the augroup command
-         around the MRUList autocommands.
-6.0.11 - Fixed bug report by Xiangjiang Ma. '"=' was being added to the
-         search history which messed up hlsearch.
-6.0.10 - Added the necessary hooks so that the Srinath Avadhanula's
-         winmanager.vim script could more easily integrate with this script.
-         Tried to improve performance.
-6.0.9  - Added MRU (Most Recently Used) sort ordering.
-6.0.8  - Was not resetting the showcmd command correctly.
-         Added nifty help file.
-6.0.7  - Thanks to Brett Carlane for some great enhancements. Some are added,
-         some are not, yet. Added highlighting of current and alternate
-         filenames. Added splitting of path/filename toggle. Reworked
-         ShowBuffers().
-         Changed my email address.
-6.0.6  - Copyright notice added. Needed this so that it could be distributed
-         with Debian Linux. Fixed problem with the SortListing() function
-         failing when there was only one buffer to display.
-6.0.5  - Fixed problems reported by David Pascoe, in that you where unable to
-         hit 'd' on a buffer that belonged to a files that no longer existed
-         and that the 'yank' buffer was being overridden by the help text when
-         the bufexplorer was opened.
-6.0.4  - Thanks to Charles Campbell, Jr. for making this plugin more plugin
-         *compliant*, adding default keymappings of <Leader>be and <Leader>bs
-         as well as fixing the 'w:sortDirLabel not being defined' bug.
-6.0.3  - Added sorting capabilities. Sort taken from explorer.vim.
-6.0.2  - Can't remember. (2001-07-25)
-6.0.1  - Initial release.
+7.3.3    January 14, 2012
+    * Major cleanup and reorganization of the change log.
+    * We welcome the return of g:bufExplorerSplitHorzSize and
+      g:bufExplorerSplitVertSize.  When setting these values, anything less
+      than or equal to 0 causes the split windows size to be determined by
+      Vim.  If for example you want your new horizontal split window 10 rows
+      high, set g:bufExplorerSplitHorzSize = 10 in your .vimrc.  Similar would
+      be done if wanting a vertical split except you would use the
+      g:bufExplorerSplitVertSize variable instead.
+7.3.2    December 24, 2012
+    * Thanks go out to Michael Henry for pointing out that I completely
+      missed yet another function, ReverseSortSelect(), during the
+      refactoring.  This function has now returned.
+7.3.1    December 06, 2012
+    * Thanks go out to Brett Rasmussen for pointing out that the feature
+      added way back in version 7.2.3 by Yuriy Ershov to automatically
+      reposition the cursor to the line containing the active buffer, was
+      no longer in the plugin.  That bit of code has been re-added and
+      all is well.
+7.3.0    October 09, 2012
+    * It has been quite a while since I published a new version and this
+      is the first version since Vim 7.3 was released.  I have put some
+      time into reworking and cleaning up the code as well as various bug
+      fixes.  Overall, I am hopeful that I not forgotten or lost a feature.
+    * Thanks to Tim Johnson for testing out this new version.
+    * I have hopefully allowed for better mapping of the main public
+      methods as is explained in the|bufexplorer-customization|section
+      of the documentation.
+    * Add new 'B', 'o', and 'S' key mappings.
+7.2.8    November 08, 2010
+    * Thanks to Charles Campbell for integrating bufexplorer with GDBMGR.
+      http://mysite.verizon.net/astronaut/vim/index.html#GDBMGR
+7.2.7    April 26, 2010
+    * My 1st attempt to fix the "cache" issue where buffers information
+      has changed but the cache/display does not reflect those changes.
+      More work still needs to be done.
+7.2.6    February 12, 2010
+    * Thanks to Michael Henry for pointing out that I totally forgot to
+      update the inline help to reflect the previous change to the 'd'
+      and 'D' keys. Opps!
+7.2.5    February 10, 2010
+    * Philip Morant suggested switching the command (bwipe) associated
+      with the 'd' key with the command (bdelete) associated with the 'D'
+      key. This made sense since the 'd' key is more likely to be used
+      compared to the 'D' key.
+7.2.4    January 14, 2010
+    * I did not implement the patch provided by Godefroid Chapelle
+      correctly. I missed one line which happened to be the most important
+      one :)
+7.2.3    December 15, 2009
+    * Hopefully I have not left anyone or anything out :)
+    * Thanks to David Fishburn for helping me out with a much needed
+      code overhaul as well as some awesome performance enhancements.
+    * David also reworked the handling of tabs.
+    * Thanks to Vladimir Dobriakov for making the suggestions on
+      enhancing the documentation to include a better explaination of
+      what is contained in the main bufexplorer window.
+    * Thanks to Yuriy Ershov for added code that when the bufexplorer
+      window is opened, the cursor is now positioned at the line with the
+      active buffer (useful in non-MRU sort modes).
+    * Yuriy also added the abiltiy to cycle through the sort fields in
+      reverse order.
+    * Thanks to Michael Henry for supplying a patch that allows
+      bufexplorer to be opened even when there is one buffer or less.
+    * Thanks to Godefroid Chapelle for supplying a patch that fixed
+      MRU sort order after loading a session.
+7.2.2    November 19, 2008
+    * Thanks to David L. Dight for spotting and fixing an issue when using
+      ctrl^. bufexplorer would incorrectly handle the previous buffer so
+      that when ctrl^ was pressed the incorrect file was opened.
+7.2.1    September 03, 2008
+    * Thanks to Dimitar for spotting and fixing a feature that was
+      inadvertently left out of the previous version. The feature was when
+      bufexplorer was used together with WinManager, you could use the tab
+      key to open a buffer in a split window.
+7.2.0    August 15, 2008
+    * For all those missing the \bs and \bv commands, these have now
+      returned. Thanks to Phil O'Connell for asking for the return of
+      these missing features and helping test out this version.
+    * Fixed problem with the bufExplorerFindActive code not working
+      correctly.
+    * Fixed an incompatibility between bufexplorer and netrw that caused
+      buffers to be incorrectly removed from the MRU list.
+7.1.7    December 21, 2007
+    * TaCahiroy fixed several issues related to opening a buffer in a tab.
+7.1.6    December 01, 2007
+    * Removed ff=unix from modeline in bufexplorer.txt. Found by Bill
+      McCarthy.
+7.1.5    November 30, 2007
+    * Could not open unnamed buffers. Fixed by TaCahiroy.
+7.1.4    November 16, 2007
+    * Sometimes when a file's path has 'white space' in it, extra buffers
+      would be created containing each piece of the path. i.e:
+      opening c:\document and settings\test.txt would create a buffer
+      named "and" and a buffer named "Documents". This was reported and
+      fixed by TaCa Yoss.
+7.1.3    November 15, 2007
+    * Added code to allow only one instance of the plugin to run at a time.
+      Thanks Dennis Hostetler.
+7.1.2    November 07, 2007
+    * Dave Larson added handling of tabs.
+    * Dave Larson removed \bs and \bv commands because these are easier for
+      the used to create horizontal and vertical windows.
+    * Fixed a jumplist issue spotted by JiangJun. I overlooked the
+      'jumplist' and with a couple calls to 'keepjumps', everything is fine
+      again.
+    * Went back to using just a plugin file, instead of both an autoload
+      and plugin file. The splitting of the file caused issues with other
+      plugins.  So if you have a prior version of bufexplorer that has an
+      autoload file, please remove autoload\bufexplorer and
+      plugin\bufexplorer before installing this new version.
+    * Fixed E493 error spotted by Thomas Arendsen Hein.
+    * Minor cosmetic changes.
+    * Minor help file changes.
+7.1.1    August 02, 2007
+    * A problem spotted by Thomas Arendsen Hein.  When running Vim
+      (7.1.94), error E493 was being thrown.
+    * Added 'D' for 'delete' buffer as the 'd' command was a 'wipe' buffer.
+7.1.0    August 01, 2007
+    * Another 'major' update, some by Dave Larson, some by me.
+    * Making use of 'autoload' now to make the plugin load quicker.
+    * Removed '\bs' and '\bv'. These are now controlled by the user. The
+      user can issue a ':sp' or ':vs' to create a horizontal or vertical
+      split window and then issue a '\be'
+    * Added handling of tabs.
+7.0.17   July 24, 2007
+    * Fixed issue with 'drop' command.
+    * Various enhancements and improvements.
+7.0.16   May 15, 2007
+    * Fixed issue reported by Liu Jiaping on non Windows systems, which was
+      ...
+      Open file1, open file2, modify file1, open bufexplorer, you get the
+      following error:
+
+      --------8<--------
+      Error detected while processing function
+      <SNR>14_StartBufExplorer..<SNR>14_SplitOpen:
+      line    4:
+      E37: No write since last change (add ! to override)
+
+      But the worse thing is, when I want to save the current buffer and
+      type ':w', I get another error message:
+      E382: Cannot write, 'buftype' option is set 
+      --------8<--------
+
+7.0.15   April 27, 2007
+    * Thanks to Mark Smithfield for suggesting bufexplorer needed to handle
+      the ':args' command.
+7.0.14   March 23, 2007
+    * Thanks to Randall Hansen for removing the requirement of terminal
+      versions to be recompiled with 'gui' support so the 'drop' command
+      would work. The 'drop' command is really not needed in terminal
+      versions.
+7.0.13   February 23, 2007
+    * Fixed integration with WinManager.
+    * Thanks to Dave Eggum for another update.
+      - Fix: The detailed help didn't display the mapping for toggling
+        the split type, even though the split type is displayed.
+      - Fixed incorrect description in the detailed help for toggling
+        relative or full paths.
+      - Deprecated s:ExtractBufferNbr(). Vim's str2nr() does the same
+        thing.
+      - Created a s:Set() function that sets a variable only if it hasn't
+        already been defined. It's useful for initializing all those
+        default settings.
+      - Removed checks for repetitive command definitions. They were
+        unnecessary.
+      - Made the help highlighting a little more fancy.
+      - Minor reverse compatibility issue: Changed ambiguous setting
+        names to be more descriptive of what they do (also makes the code
+        easier to follow):
+            Changed bufExplorerSortDirection to bufExplorerReverseSort
+            Changed bufExplorerSplitType to bufExplorerSplitVertical
+            Changed bufExplorerOpenMode to bufExplorerUseCurrentWindow
+      - When the BufExplorer window closes, all the file-local marks are
+        now deleted. This may have the benefit of cleaning up some of the
+        jumplist.
+      - Changed the name of the parameter for StartBufExplorer from
+        "split" to "open". The parameter is a string which specifies how
+        the buffer will be open, not if it is split or not.
+      - Deprecated DoAnyMoreBuffersExist() - it is a one line function
+        only used in one spot.
+      - Created four functions (SplitOpen(), RebuildBufferList(),
+        UpdateHelpStatus() and ReSortListing()) all with one purpose - to
+        reduce repeated code.
+      - Changed the name of AddHeader() to CreateHelp() to be more
+        descriptive of what it does. It now returns an array instead of
+        updating the window directly. This has the benefit of making the
+        code more efficient since the text the function returns is used a
+        little differently in the two places the function is called.
+      - Other minor simplifications.
+7.0.12   November 30, 2006
+    * MAJOR Update.  This version will ONLY run with Vim version 7.0 or
+      greater.
+    * Dave Eggum has made some 'significant' updates to this latest
+      version:
+      - Added BufExplorerGetAltBuf() global function to be used in the
+        user�s rulerformat.
+      - Added g:bufExplorerSplitRight option.
+      - Added g:bufExplorerShowRelativePath option with mapping.
+      - Added current line highlighting.
+      - The split type can now be changed whether bufexplorer is opened
+        in split mode or not.
+      - Various major and minor bug fixes and speed improvements.
+      - Sort by extension.
+    * Other improvements/changes:
+      - Changed the help key from '?' to <F1> to be more 'standard'.
+      - Fixed splitting of vertical bufexplorer window.
+    * Hopefully I have not forgot something :)
+7.0.11   March 10, 2006
+    * Fixed a couple of highlighting bugs, reported by David Eggum.
+    * Dave Eggum also changed passive voice to active on a couple of
+      warning messages.
+7.0.10   March 02, 2006
+    * Fixed bug report by Xiangjiang Ma. If the 'ssl' option is set,
+      the slash character used when displaying the path was incorrect.
+7.0.9    February 28, 2006
+    * Martin Grenfell found and eliminated an annoying bug in the
+      bufexplorer/winmanager integration. The bug was were an
+      annoying message would be displayed when a window was split or
+      a new file was opened in a new window. Thanks Martin!
+7.0.8    January 18, 2006
+    * Thanks to Mike Li for catching a bug in the WinManager integration.
+      The bug was related to the incorrect displaying of the buffer
+      explorer's window title.
+7.0.7    December 19, 2005
+    * Thanks to Jeremy Cowgar for adding a new enhancement. This
+      enhancement allows the user to press 'S', that is capital S, which
+      will open the buffer under the cursor in a newly created split
+      window.
+7.0.6    November 18, 2005
+    * Thanks to Larry Zhang for finding a bug in the "split" buffer code.
+      If you force set g:bufExplorerSplitType='v' in your vimrc, and if you
+      tried to do a \bs to split the bufexplorer window, it would always
+      split horizontal, not vertical.
+    * Larry Zhang also found that I had a typeo in that the variable
+      g:bufExplorerSplitVertSize was all lower case in the documentation
+      which was incorrect.
+7.0.5    October 18, 2005
+    * Thanks to Mun Johl for pointing out a bug that if a buffer was
+      modified, the '+' was not showing up correctly.
+7.0.4    October 03, 2005
+    * Fixed a problem discovered first by Xiangjiang Ma. Well since I've
+      been using vim 7.0 and not 6.3, I started using a function (getftype)
+      that is not in 6.3. So for backward compatibility, I conditionaly use
+      this function now.  Thus, the g:bufExplorerShowDirectories feature is
+      only available when using vim 7.0 and above.
+7.0.3    September 30, 2005
+    * Thanks to Erwin Waterlander for finding a problem when the last
+      buffer was deleted. This issue got me to rewrite the buffer display
+      logic (which I've wanted to do for sometime now).
+    * Also great thanks to Dave Eggum for coming up with idea for
+      g:bufExplorerShowDirectories. Read the above information about this
+      feature.
+7.0.2    March 25, 2005
+    * Thanks to Thomas Arendsen Hein for finding a problem when a user
+      has the default help turned off and then brought up the explorer. An
+      E493 would be displayed.
+7.0.1    March 10, 2005
+    * Thanks to Erwin Waterlander for finding a couple problems.
+      The first problem allowed a modified buffer to be deleted.  Opps! The
+      second problem occurred when several files were opened, BufExplorer
+      was started, the current buffer was deleted using the 'd' option, and
+      then BufExplorer was exited. The deleted buffer was still visible
+      while it is not in the buffers list. Opps again!
+7.0.0    March 10, 205
+    * Thanks to Shankar R. for suggesting to add the ability to set
+      the fixed width (g:bufExplorerSplitVertSize) of a new window
+      when opening bufexplorer vertically and fixed height
+      (g:bufExplorerSplitHorzSize) of a new window when opening
+      bufexplorer horizontally. By default, the windows are normally
+      split to use half the existing width or height.
+6.3.0    July 23, 2004
+    * Added keepjumps so that the jumps list would not get cluttered with
+      bufexplorer related stuff.
+6.2.3    April 15, 2004
+    * Thanks to Jay Logan for finding a bug in the vertical split position
+      of the code. When selecting that the window was to be split
+      vertically by doing a '\bv', from then on, all splits, i.e. '\bs',
+      were split vertically, even though g:bufExplorerSplitType was not set
+      to 'v'.
+6.2.2    January 09, 2004
+    * Thanks to Patrik Modesto for adding a small improvement. For some
+      reason his bufexplorer window was always showing up folded. He added
+      'setlocal nofoldenable' and it was fixed.
+6.2.1    October 09, 2003
+    * Thanks goes out to Takashi Matsuo for added the 'fullPath' sorting
+      logic and option.
+6.2.0    June 13, 2003
+    * Thanks goes out to Simon Johann-Ganter for spotting and fixing a
+      problem in that the last search pattern is overridden by the search
+      pattern for blank lines.
+6.1.6    May 05, 2003
+    * Thanks to Artem Chuprina for finding a pesky bug that has been around
+      for sometime now. The <esc> key mapping was causing the buffer
+      explored to close prematurely when vim was run in an xterm. The <esc>
+      key mapping is now removed.
+6.1.5    April 28, 2003
+    * Thanks to Khorev Sergey. Added option to show default help or not.
+6.1.4    March 18, 2003
+    * Thanks goes out to Valery Kondakoff for suggesting the addition of
+      setlocal nonumber and foldcolumn=0. This allows for line numbering
+      and folding to be turned off temporarily while in the explorer.
+6.1.3    March 11, 2003
+    * Added folding.
+    * Did some code cleanup.
+    * Added the ability to force the newly split window to be temporarily
+      vertical, which was suggested by Thomas Glanzmann.
+6.1.2    November 05, 2002
+    * Now pressing the <esc> key will quit, just like 'q'.
+    * Added folds to hide winmanager configuration.
+    * If anyone had the 'C' option in their cpoptions they would receive
+      a E10 error on startup of BufExplorer. cpo is now saved, updated and
+      restored. Thanks to Charles E Campbell, Jr.
+    * Attempted to make sure there can only be one BufExplorer window open
+      at a time.
+6.1.1    March 28, 2002
+    * Thanks to Brian D. Goodwin for adding toupper to FileNameCmp. This
+      way buffers sorted by name will be in the correct order regardless of
+      case.
+6.0.16   March 14, 2002
+    * Thanks to Andre Pang for the original patch/idea to get bufexplorer
+      to work in insertmode/modeless mode (evim).
+    * Added Initialize and Cleanup autocommands to handle commands that
+         need to be performed when starting or leaving bufexplorer.
+6.0.15   February 20, 2002
+    * Srinath Avadhanulax added a patch for winmanager.vim.
+6.0.14   February 19, 2002
+    * Fix a few more bug that I thought I already had fixed.
+    * Thanks to Eric Bloodworth for adding 'Open Mode/Edit in Place'.
+    * Added vertical splitting.
+6.0.13   February 05, 2002
+    * Thanks to Charles E Campbell, Jr. for pointing out some embarrassing
+      typos that I had in the documentation. I guess I need to run the
+      spell checker more :o)
+6.0.12   February 04, 2002
+    * Thanks to Madoka Machitani, for the tip on adding the augroup command
+      around the MRUList autocommands.
+6.0.11   January 26, 2002
+    * Fixed bug report by Xiangjiang Ma. '"=' was being added to the search
+      history which messed up hlsearch.
+6.0.10   January 14, 2002
+    * Added the necessary hooks so that the Srinath Avadhanula's
+      winmanager.vim script could more easily integrate with this script.
+    * Tried to improve performance.
+6.0.9    December 17, 2001
+    * Added MRU (Most Recently Used) sort ordering.
+6.0.8    December 03, 2001
+    * Was not resetting the showcmd command correctly.
+    * Added nifty help file.
+6.0.7    November 19, 2001
+    * Thanks to Brett Carlane for some great enhancements. Some are added,
+      some are not, yet. Added highlighting of current and alternate
+      filenames. Added splitting of path/filename toggle. Reworked
+      ShowBuffers().
+    * Changed my email address.
+6.0.6    September 05, 2001
+    * Copyright notice added. Needed this so that it could be distributed
+      with Debian Linux. Fixed problem with the SortListing() function
+      failing when there was only one buffer to display.
+6.0.5    August 10, 2001
+    * Fixed problems reported by David Pascoe, in that you where unable to
+      hit 'd' on a buffer that belonged to a files that no longer existed
+      and that the 'yank' buffer was being overridden by the help text when
+      the bufexplorer was opened.
+6.0.4    July, 31, 2001 
+    * Thanks to Charles Campbell, Jr. for making this plugin more plugin
+      *compliant*, adding default keymappings of <Leader>be and <Leader>bs
+      as well as fixing the 'w:sortDirLabel not being defined' bug.
+6.0.3    July 30, 2001
+    * Added sorting capabilities. Sort taken from explorer.vim.
+6.0.2    July 25, 2001
+    * Can't remember.
+6.0.1    Sometime before July 25, 2001
+    * Initial release.
 
 ===============================================================================
 TODO                                                         *bufexplorer-todo*
@@ -510,4 +618,4 @@ helped and gave me suggestions. I wouldn't want to leave anyone out so I
 won't list names.
 
 ===============================================================================
-vim:tw=78:noet:wrap:ts=8:ft=help:norl:
+vim:tw=78:noet:wrap:ts=4:ft=help:norl:
diff --git a/html/index.html b/html/index.html
index 42b61b9..f18d8db 100644
--- a/html/index.html
+++ b/html/index.html
@@ -49,7 +49,7 @@
    <li><a href="syntax_CVSAnnotate.vim.html">syntax/CVSAnnotate.vim.html</a></li>
   </ul>
   <p>
-  Page generated on Thu, 17 Jan 2013 21:52:50 -0500
+  Page generated on Thu, 17 Jan 2013 22:05:39 -0500
 .
   </p>
  </body>
diff --git a/html/plugin_bufexplorer.vim.html b/html/plugin_bufexplorer.vim.html
index f4220f4..d2ba0c8 100644
--- a/html/plugin_bufexplorer.vim.html
+++ b/html/plugin_bufexplorer.vim.html
@@ -102,7 +102,7 @@
             <td class="sidebarheader"><a href="/docs.php">Documentation</a></td>
         </tr>
         <tr>
-            <td class="sidebarheader"><a href="/download.php">Download</a></td>
+            <td class="sidebarheader download"><a href="/download.php">Download</a></td>
         </tr>
     <tr>
         <td><img src="/images/spacer.gif" alt="" border="0" width="1" height="7"></td>
@@ -135,6 +135,8 @@
             <td class="sidebarheader"><a href="/huh.php">Site Help</a></td>
         </tr>
 </table>
+<br>
+<g:plusone></g:plusone>
 
             <table width="172" cellpadding="0" cellspacing="0" border="0">
               <tr><td><img src="/images/spacer.gif" alt="" border="0" width="1" height="8"></td></tr>
@@ -166,8 +168,10 @@
 <tr>
   <td class="lightbg"><b> script karma </b></td>
   <td>
-    Rating <b>2601/861</b>,
-    Downloaded by 68282  </td>
+    Rating <b>2996/990</b>,
+    Downloaded by 89296     
+    <g:plusone></g:plusone>
+  </td>
   <td class="lightbg">
   <b> Comments, bugs, improvements </b>
   </td>
@@ -193,21 +197,6 @@
 <tr><td> </td></tr>
 </table>
 
-<!-- rating table -->
-<form name="rating">
-<input type="hidden" name="script_id" value="42">
-<table cellpadding="4" cellspacing="0" border="1" bordercolor="#000066">
-<tr>
-  <td class="lightbg"><b>rate this script</b></td>
-  <td valign="middle">
-    <input type="radio" name="rating" value="life_changing">Life Changing
-    <input type="radio" name="rating" value="helpful">Helpful
-    <input type="radio" name="rating" value="unfulfilling">Unfulfilling 
-    <input type="submit" value="rate">
-  </td>
-</tr>
-</table>
-</form>
 <span class="txth2">script versions</span> (<a href="add_script_version.php?script_id=42">upload new version</a>)
 <p>
 Click on the package to download.
@@ -223,6 +212,38 @@ Click on the package to download.
     <th valign="top">release notes</th>
 </tr>
 <tr>
+        <td class="rowodd" valign="top" nowrap><a href="download_script.php?src_id=19370">bufexplorer-7.3.3.zip</a></td>
+    <td class="rowodd" valign="top" nowrap><b>7.3.3</b></td>
+    <td class="rowodd" valign="top" nowrap><i>2013-01-14</i></td>
+    <td class="rowodd" valign="top" nowrap>7.0</td>
+    <td class="rowodd" valign="top"><i><a href="/account/profile.php?user_id=97">jeff lanzarotta</a></i></td>
+    <td class="rowodd" valign="top" width="2000">* Major cleanup and reorganization of the change log.
<br>* We welcome the return of g:bufExplorerSplitHorzSize and g:bufExplorerSplitVertSize.  When setting these values, anything less than or equal to 0 causes the split windows size to be determined by Vim.  If for example you want your new horizontal split window 10 rows high, set g:bufExplorerSplitHorzSize = 10 in your .vimrc.  Similar would be done if wanting a vertical split except you would use the g:bufExplorerSplitVertSize variable instead.</td>
+</tr>
+<tr>
+        <td class="roweven" valign="top" nowrap><a href="download_script.php?src_id=19234">bufexplorer-7.3.2.zip</a></td>
+    <td class="roweven" valign="top" nowrap><b>7.2.3</b></td>
+    <td class="roweven" valign="top" nowrap><i>2012-12-24</i></td>
+    <td class="roweven" valign="top" nowrap>7.0</td>
+    <td class="roweven" valign="top"><i><a href="/account/profile.php?user_id=97">jeff lanzarotta</a></i></td>
+    <td class="roweven" valign="top" width="2000">Thanks go out to Michael Henry for pointing out that I completely missed yet another function, ReverseSortSelect(), during the refactoring.  This function has now returned.
<br></td>
+</tr>
+<tr>
+        <td class="rowodd" valign="top" nowrap><a href="download_script.php?src_id=19122">bufexplorer-7.3.1.zip</a></td>
+    <td class="rowodd" valign="top" nowrap><b>7.3.1</b></td>
+    <td class="rowodd" valign="top" nowrap><i>2012-12-06</i></td>
+    <td class="rowodd" valign="top" nowrap>7.0</td>
+    <td class="rowodd" valign="top"><i><a href="/account/profile.php?user_id=97">jeff lanzarotta</a></i></td>
+    <td class="rowodd" valign="top" width="2000">Thanks go out to Brett Rasmussen for pointing out that the feature added way back in version 7.2.3 by Yuriy Ershov to automatically reposition the cursor to the line containing the active buffer, was no longer in the plugin.  That bit of code has been re-added and all is well.
<br></td>
+</tr>
+<tr>
+        <td class="roweven" valign="top" nowrap><a href="download_script.php?src_id=18766">bufexplorer-7.3.0.zip</a></td>
+    <td class="roweven" valign="top" nowrap><b>7.3.0</b></td>
+    <td class="roweven" valign="top" nowrap><i>2012-10-09</i></td>
+    <td class="roweven" valign="top" nowrap>7.0</td>
+    <td class="roweven" valign="top"><i><a href="/account/profile.php?user_id=97">jeff lanzarotta</a></i></td>
+    <td class="roweven" valign="top" width="2000">It has been quite a while since I published a new version and this is the first version since Vim 7.3 was released.
<br>    * Thanks to Tim Johnson for testing out this new version.
<br>    * I have put some time into reworking and cleaning up the code as
<br>    * well as various bug fixes.
<br>    * I have hopefully allowed for better mapping of the main public methods as is explained in the 
<br>      bufexplorer-  customization section of the documentation.
<br>    * Add new 'B', 'o', and 'S' key mappings.
<br>    * Overall, I am hopeful that I not forgotten or lost a feature :)</td>
+</tr>
+<tr>
         <td class="rowodd" valign="top" nowrap><a href="download_script.php?src_id=14208">bufexplorer.zip</a></td>
     <td class="rowodd" valign="top" nowrap><b>7.2.8</b></td>
     <td class="rowodd" valign="top" nowrap><i>2010-11-08</i></td>
@@ -743,6 +764,15 @@ Click on the package to download.
   </tr>
 </table>
 
+<!-- for Google +1 button -->
+<script type="text/javascript">
+  (function() {
+    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
+    po.src = 'https://apis.google.com/js/plusone.js';
+    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
+  })();
+</script>
+
 </body>
 </html>
 
diff --git a/plugin/bufexplorer.vim b/plugin/bufexplorer.vim
index 8791363..ce64c4e 100644
--- a/plugin/bufexplorer.vim
+++ b/plugin/bufexplorer.vim
@@ -1,5 +1,5 @@
-"==============================================================================
-"    Copyright: Copyright (C) 2001-2010 Jeff Lanzarotta
+"=============================================================================
+"    Copyright: Copyright (C) 2001-2013 Jeff Lanzarotta
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
 "               notice is copied with it. Like anything else that's free,
@@ -10,640 +10,644 @@
 " Name Of File: bufexplorer.vim
 "  Description: Buffer Explorer Vim Plugin
 "   Maintainer: Jeff Lanzarotta (delux256-vim at yahoo dot com)
-" Last Changed: Friday, 22 October 2010
+" Last Changed: Monday, 14 Jan 2013
 "      Version: See g:bufexplorer_version for version number.
 "        Usage: This file should reside in the plugin directory and be
 "               automatically sourced.
 "
 "               You may use the default keymappings of
 "
-"                 <Leader>be  - Opens BE.
-"                 <Leader>bs  - Opens horizontally window BE.
-"                 <Leader>bv  - Opens vertically window BE.
+"                 <Leader>be  - Opens BufExplorer
+"                 <Leader>bs  - Opens horizontally split window BufExplorer
+"                 <Leader>bv  - Opens vertically split window BufExplorer
+"
+"               Or you can override the defaults and define your own mapping
+"               in your vimrc file, for example:
+"
+"                   noremap <silent> <F11> :BufExplorer<CR>
+"                   noremap <silent> <m-F11> :BufExplorerHorizontalSplit<CR>
+"                   noremap <silent> <c-F11> :BufExplorerVerticalSplit<CR>
 "
 "               Or you can use
 "
-"                 ":BufExplorer"                - Opens BE.
-"                 ":BufExplorerHorizontalSplit" - Opens horizontally window BE.
-"                 ":BufExplorerVerticalSplit"   - Opens vertically window BE.
+"                 ":BufExplorer"                - Opens BufExplorer
+"                 ":BufExplorerHorizontalSplit" - Opens horizontally window BufExplorer
+"                 ":BufExplorerVerticalSplit"   - Opens vertically split window BufExplorer
 "
 "               For more help see supplied documentation.
 "      History: See supplied documentation.
-"==============================================================================
+"      Issues: 'D' and 'd' remove the buffer from the list but the list is not
+"              displayed correctly.
+"              - Add ability to open a buffer in a new split when \be is used.
+"=============================================================================
 
-" Exit quickly if already running or when 'compatible' is set. {{{1
+" Plugin Code {{{1
+" Exit quickly if already running or when 'compatible' is set. {{{2
 if exists("g:bufexplorer_version") || &cp
-  finish
+    finish
 endif
-"1}}}
+"2}}}
 
 " Version number
-let g:bufexplorer_version = "7.2.8"
+let g:bufexplorer_version = "7.3.3"
 
-" Check for Vim version 700 or greater {{{1
+" Check for Vim version {{{2
 if v:version < 700
-  echo "Sorry, bufexplorer ".g:bufexplorer_version."\nONLY runs with Vim 7.0 and greater."
-  finish
+    echohl WarningMsg
+    echo "Sorry, bufexplorer ".g:bufexplorer_version." required Vim 7.0 and greater."
+    echohl None
+    finish
 endif
 
-" Public Interface {{{1
-if maparg("<Leader>be") =~ 'BufExplorer'
-  nunmap <Leader>be
-endif
+" Create commands {{{2
+command! BufExplorer :call BufExplorer(has ("gui") ? "drop" : "hide edit")
+command! BufExplorerHorizontalSplit :call BufExplorerHorizontalSplit()
+command! BufExplorerVerticalSplit :call BufExplorerVerticalSplit()
 
-if maparg("<Leader>bs") =~ 'BufExplorerHorizontalSplit'
-  nunmap <Leader>bs
-endif
+" Set {{{2
+function! s:Set(var, default)
+    if !exists(a:var)
+        if type(a:default)
+            exec "let" a:var "=" string(a:default)
+        else
+            exec "let" a:var "=" a:default
+        endif
 
-if maparg("<Leader>bv") =~ 'BufExplorerVerticalSplit'
-  nunmap <Leader>bv
-endif
+        return 1
+    endif
 
-nmap <script> <silent> <unique> <Leader>be :BufExplorer<CR>
-nmap <script> <silent> <unique> <Leader>bs :BufExplorerHorizontalSplit<CR>
-nmap <script> <silent> <unique> <Leader>bv :BufExplorerVerticalSplit<CR>
+    return 0
+endfunction
 
-" Create commands {{{1
-command! BufExplorer :call StartBufExplorer(has ("gui") ? "drop" : "hide edit")
-command! BufExplorerHorizontalSplit :call BufExplorerHorizontalSplit()
-command! BufExplorerVerticalSplit :call BufExplorerVerticalSplit()
+" Script variables {{{2
+let s:MRU_Exclude_List = ["[BufExplorer]","__MRU_Files__"]
+let s:MRUList = []
+let s:name = '[BufExplorer]'
+let s:originBuffer = 0
+let s:running = 0
+let s:sort_by = ["number", "name", "fullpath", "mru", "extension"]
+let s:splitMode = ""
+let s:tabSpace = []
+let s:types = {"fullname": ':p', "path": ':p:h', "relativename": ':~:.', "relativepath": ':~:.:h', "shortname": ':t'}
 
-" BESet {{{1
-function! s:BESet(var, default)
-  if !exists(a:var)
-    if type(a:default)
-      exec "let" a:var "=" string(a:default)
-    else
-      exec "let" a:var "=" a:default
-    endif
+" Setup the autocommands that handle the MRUList and other stuff. {{{2
+autocmd VimEnter * call s:Setup()
 
-    return 1
-  endif
+" Setup {{{2
+function! s:Setup()
+    call s:Reset()
 
-  return 0
-endfunction
+    " Now that the MRUList is created, add the other autocmds.
+    augroup BufExplorer
+        autocmd!
+        autocmd BufEnter,BufNew * call s:ActivateBuffer()
+        autocmd BufWipeOut * call s:DeactivateBuffer(1)
+        autocmd BufDelete * call s:DeactivateBuffer(0)
 
-" BEReset {{{1
-function! s:BEReset()
-  " Build initial MRUList. This makes sure all the files specified on the
-  " command line are picked up correctly.
-  let s:MRUList = range(1, bufnr('$'))
-
-  " Initialize one tab space array, ignore zero-based tabpagenr
-  " since all tabpagenr's start at 1.
-  " -1 signifies this is the first time we are referencing this
-  " tabpagenr.
-  let s:tabSpace = [ [-1], [-1] ]
-endfunction
+        autocmd BufWinEnter \[BufExplorer\] call s:Initialize()
+        autocmd BufWinLeave \[BufExplorer\] call s:Cleanup()
+
+        autocmd TabEnter * call s:TabEnter()
 
-" Setup the autocommands that handle the MRUList and other stuff. {{{1
-" This is only done once when Vim starts up.
-augroup BufExplorerVimEnter
-  autocmd!
-  autocmd VimEnter * call s:BESetup()
-augroup END
-
-" BESetup {{{1
-function! s:BESetup()
-  call s:BEReset()
-
-  " Now that the MRUList is created, add the other autocmds.
-  augroup BufExplorer
-    " Deleting autocommands in case the script is reloaded
-    autocmd!
-    autocmd TabEnter * call s:BETabEnter()
-    autocmd BufNew * call s:BEAddBuffer()
-    autocmd BufEnter * call s:BEActivateBuffer()
-
-    autocmd BufWipeOut * call s:BEDeactivateBuffer(1)
-    autocmd BufDelete * call s:BEDeactivateBuffer(0)
-
-    autocmd BufWinEnter \[BufExplorer\] call s:BEInitialize()
-    autocmd BufWinLeave \[BufExplorer\] call s:BECleanup()
-    autocmd SessionLoadPost * call s:BEReset()
-  augroup END
-
-  " Remove the VimEnter event as it is no longer needed
-  augroup SelectBufVimEnter
-    autocmd!
-  augroup END
+        autocmd SessionLoadPost * call s:Reset()
+    augroup END
 endfunction
 
-" BETabEnter {{{1
-function! s:BETabEnter()
-  " Make s:tabSpace 1-based
-  if empty(s:tabSpace) || len(s:tabSpace) < (tabpagenr() + 1)
-    call add(s:tabSpace, [-1])
-  endif
+" Reset {{{2
+function! s:Reset()
+    " Build initial MRUList. This makes sure all the files specified on the
+    " command line are picked up correctly.
+    let s:MRUList = range(1, bufnr('$'))
+
+    " Initialize one tab space array, ignore zero-based tabpagenr
+    " since all tabpagenr's start at 1.
+    " -1 signifies this is the first time we are referencing this
+    " tabpagenr.
+    " If Vim has been loaded with mksession, then it is possible for
+    " more tabs to exist.  So use tabpagenr() to determine how large
+    " to make the array. If there are 4 tabs, there should be 5
+    " elements in this array.
+    " Each element will hold a CSV list of buffers viewed in
+    " that tab.  So on the 3rd tab, if there user has viewed
+    " 4 different buffers in that tab, the value would be:
+    "    echo s:tabSpace[3]
+    "    [4, 9, 1, 10]
+    "    echo s:tabSpace
+    "    [[-1], [-1], [-1], [4, 9, 1, 10], [-1]]
+    let s:tabSpace = []
+    let i = 0
+
+    while( tabpagenr('$') > 0 && i <= tabpagenr('$') )
+        call add(s:tabSpace, [-1])
+        let i = i + 1
+    endwhile
 endfunction
 
-" BEAddBuffer {{{1
-function! s:BEAddBuffer()
-  if !exists('s:raw_buffer_listing') || empty(s:raw_buffer_listing)
-    silent let s:raw_buffer_listing = s:BEGetBufferInfo(0)
-  else
-    " We cannot use :buffers! or :ls! to gather information 
-    " about this buffer since it was only just added.
-    " Any changes to the buffer (setlocal buftype, ...) 
-    " happens after this event fires.
-    "
-    " So we will indicate the :buffers! command must be re-run.
-    " This should help with the performance of the plugin.
-
-    " There are some checks which can be performed 
-    " before deciding to refresh the buffer list.
-    let bufnr = expand('<abuf>') + 0
-
-    if s:BEIgnoreBuffer(bufnr) == 1
-      return 
-    else
-      let s:refreshBufferList = 1
+" ActivateBuffer {{{2
+function! s:ActivateBuffer()
+    " Verify the current tabpage exists in the
+    " current s:tabSpace array.  This can be missing
+    " entries when restoring sessions.
+    let i = 0
+    while( tabpagenr('$') > 0 && i <= tabpagenr() )
+        " Number:     0
+        " String:     1
+        " Funcref:    2
+        " List:       3
+        " Dictionary: 4
+        " Float:      5
+        if type(get(s:tabSpace, i)) == 0
+            call add(s:tabSpace, [-1])
+        endif
+
+        let i = i + 1
+    endwhile
+
+    let _bufnr = bufnr("%")
+    let list = get(s:tabSpace, tabpagenr(), [-1])
+
+    if !empty(list) && list[0] == '-1'
+        " The first time we add a tab, Vim uses the current buffer
+        " as it's starting page.  Even though we are about to
+        " edit a new page (BufEnter is triggered after), so
+        " remove the -1 entry indicating we have covered this case.
+        let list = []
+        call add(list, _bufnr)
+        let s:tabSpace[tabpagenr()] = list
+    elseif empty(list) || index(list, _bufnr) == -1
+        " Add new buffer to this tab's buffer list.
+        call add(list, _bufnr)
+        let s:tabSpace[tabpagenr()] = list
+
+        if g:bufExplorerOnlyOneTab == 1
+            " If a buffer can only be available in 1 tab page ensure this
+            " buffer is not present in any other tabs
+            let tabidx = 1
+            while tabidx < len(s:tabSpace)
+                if tabidx != tabpagenr()
+                    let bufidx = index(s:tabSpace[tabidx], _bufnr)
+                    if bufidx != -1
+                        call remove(s:tabSpace[tabidx], bufidx)
+                    endif
+                endif
+                let tabidx = tabidx + 1
+            endwhile
+        endif
     endif
-  endif
 
-  call s:BEActivateBuffer()
+    call s:MRUPush(_bufnr)
 endfunction
 
-" ActivateBuffer {{{1
-function! s:BEActivateBuffer()
-  let b = bufnr("%")
-  let l = get(s:tabSpace, tabpagenr(), [])
-
-  if s:BEIgnoreBuffer(b) == 1
-    return
-  endif
-
-  if !empty(l) && l[0] == '-1'
-    " The first time we add a tab Vim uses the current 
-    " buffer as it's starting page, even though we are about
-    " to edit a new page (BufEnter triggers after), so
-    " remove the -1 entry indicating we have covered this case.
-    let l = []
-    let s:tabSpace[tabpagenr()] = l
-  elseif empty(l) || index(l, b) == -1
-    " Add new buffer to this tab buffer list
-    let l = add(l, b)
-    let s:tabSpace[tabpagenr()] = l
-
-    if g:bufExplorerOnlyOneTab == 1
-      " If a buffer can only be available in 1 tab page
-      " ensure this buffer is not present in any other tabs
-      let tabidx = 1
-      while tabidx < len(s:tabSpace)
-        if tabidx != tabpagenr()
-          let bufidx = index(s:tabSpace[tabidx], b)
-          if bufidx != -1
-            call remove(s:tabSpace[tabidx], bufidx)
-          endif
-        endif
-        let tabidx = tabidx + 1
-      endwhile
-    endif
-  endif
-
-  call s:BEMRUPush(b)
-
-  if exists('s:raw_buffer_listing') && !empty(s:raw_buffer_listing)
-    " Check if the buffer exists, but was deleted previously
-    " Careful use of ' and " so we do not have to escape all the \'s
-    " Regex: ^\s*bu\>
-    "        ^ - Starting at the beginning of the string
-    "        \s* - optional whitespace
-    "        b - Vim's buffer number
-    "        u\> - the buffer must be unlisted
-    let shortlist = filter(copy(s:raw_buffer_listing), "v:val.attributes =~ '".'^\s*'.b.'u\>'."'")
-
-    if !empty(shortlist)
-      " If it is unlisted (ie deleted), but now we editing it again 
-      " rebuild the buffer list.
-      let s:refreshBufferList = 1
+" DeactivateBuffer {{{2
+function! s:DeactivateBuffer(remove)
+    let _bufnr = str2nr(expand("<abuf>"))
+    call s:MRUPop(_bufnr)
+endfunction
+
+" TabEnter {{{2
+function! s:TabEnter()
+    " Make s:tabSpace 1-based
+    if empty(s:tabSpace) || len(s:tabSpace) < (tabpagenr() + 1)
+        call add(s:tabSpace, [-1])
     endif
-  endif
 endfunction
 
-" BEDeactivateBuffer {{{1
-function! s:BEDeactivateBuffer(remove)
-  let _bufnr = str2nr(expand("<abuf>"))
+" MRUPop {{{2
+function! s:MRUPop(bufnr)
+    call filter(s:MRUList, 'v:val != '.a:bufnr)
+endfunction
+
+" MRUPush {{{2
+function! s:MRUPush(buf)
+    " Skip temporary buffer with buftype set. Don't add the BufExplorer window to the
+    " list.
+    if s:ShouldIgnore(a:buf) == 1
+        return
+    endif
 
-  call s:BEMRUPop(_bufnr)
+    " Remove the buffer number from the list if it already exists.
+    call s:MRUPop(a:buf)
 
-  if a:remove
-    call s:BEDeleteBufferListing(_bufnr)
-  else
-    let s:refreshBufferList = 1
-  endif
+    " Add the buffer number to the head of the list.
+    call insert(s:MRUList, a:buf)
 endfunction
 
-" BEMRUPop {{{1
-function! s:BEMRUPop(buf)
-  call filter(s:MRUList, 'v:val != '.a:buf)
-endfunction
+" ShouldIgnore {{{2
+function! s:ShouldIgnore(buf)
+    " Ignore temporary buffers with buftype set.
+    if empty(getbufvar(a:buf, "&buftype") == 0)
+        return 1
+    endif
 
-" BEMRUPush {{{1
-function! s:BEMRUPush(buf)
-  if s:BEIgnoreBuffer(a:buf) == 1
-    return
-  endif
+    " Ignore unlisted buffers.
+    if buflisted(a:buf) == 0
+        return 1
+    endif
+
+    " Ignore buffers with no name.
+    if empty(bufname(a:buf)) == 1
+        return 1
+    endif
 
-  " Remove the buffer number from the list if it already exists.
-  call s:BEMRUPop(a:buf)
+    " Ignore the BufExplorer buffer.
+    if fnamemodify(bufname(a:buf), ":t") == s:name
+        return 1
+    endif
+
+    " Ignore any buffers in the exclude list.
+    if index(s:MRU_Exclude_List, bufname(a:buf)) >= 0
+        return 1
+    endif
 
-  " Add the buffer number to the head of the list.
-  call insert(s:MRUList,a:buf)
+    " Else return 0 to indicate that the buffer was not ignored.
+    return 0
 endfunction
 
-" BEInitialize {{{1
-function! s:BEInitialize()
-  let s:_insertmode = &insertmode
-  set noinsertmode
+" Initialize {{{2
+function! s:Initialize()
+    let s:_insertmode = &insertmode
+    set noinsertmode
 
-  let s:_showcmd = &showcmd
-  set noshowcmd
+    let s:_showcmd = &showcmd
+    set noshowcmd
 
-  let s:_cpo = &cpo
-  set cpo&vim
+    let s:_cpo = &cpo
+    set cpo&vim
 
-  let s:_report = &report
-  let &report = 10000
+    let s:_report = &report
+    let &report = 10000
 
-  let s:_list = &list
-  set nolist
+    let s:_list = &list
+    set nolist
 
-  setlocal nonumber
-  setlocal foldcolumn=0
-  setlocal nofoldenable
-  setlocal cursorline
-  setlocal nospell
-  setlocal nobuflisted
+    setlocal nonumber
+    setlocal foldcolumn=0
+    setlocal nofoldenable
+    setlocal cursorline
+    setlocal nospell
 
-  let s:running = 1
-endfunction
+    setlocal nobuflisted
 
-" BEIgnoreBuffer 
-function! s:BEIgnoreBuffer(buf)
-  " Check to see if this buffer should be ignore by BufExplorer.
+    let s:running = 1
+endfunction
 
-  " Skip temporary buffers with buftype set.
-  if empty(getbufvar(a:buf, "&buftype") == 0)
-    return 1
-  endif
+" Cleanup {{{2
+function! s:Cleanup()
+    if exists("s:_insertmode")
+        let &insertmode = s:_insertmode
+    endif
 
-  " Skip unlisted buffers.
-  if buflisted(a:buf) == 0
-    return 1
-  endif
+    if exists("s:_showcmd")
+        let &showcmd = s:_showcmd
+    endif
 
-  " Skip buffers with no name.
-  if empty(bufname(a:buf)) == 1
-    return 1
-  endif
+    if exists("s:_cpo")
+        let &cpo = s:_cpo
+    endif
 
-  " Do not add the BufExplorer window to the list.
-  if fnamemodify(bufname(a:buf), ":t") == s:name
-    call s:BEError("The buffer name was [".s:name."] so it was skipped.")
-    return 1
-  endif
+    if exists("s:_report")
+        let &report = s:_report
+    endif
 
-  if index(s:MRU_Exclude_List, bufname(a:buf)) >= 0
-    return 1
-  end
+    if exists("s:_list")
+        let &list = s:_list
+    endif
 
-  return 0 
-endfunction
+    let s:running = 0
+    let s:splitMode = ""
 
-" BECleanup {{{1
-function! s:BECleanup()
-  if exists("s:_insertmode")|let &insertmode = s:_insertmode|endif
-  if exists("s:_showcmd")   |let &showcmd    = s:_showcmd   |endif
-  if exists("s:_cpo")       |let &cpo        = s:_cpo       |endif
-  if exists("s:_report")    |let &report     = s:_report    |endif
-  if exists("s:_list")      |let &list       = s:_list      |endif
-  let s:running   = 0
-  let s:splitMode = ""
-
-  delmarks!
+    delmarks!
 endfunction
 
-" BufExplorerHorizontalSplit {{{1
+" BufExplorerHorizontalSplit {{{2
 function! BufExplorerHorizontalSplit()
-  let s:splitMode = "sp"
-  exec "BufExplorer"
+    let s:splitMode = "sp"
+    exec "BufExplorer"
 endfunction
 
-" BufExplorerVerticalSplit {{{1
+" BufExplorerVerticalSplit {{{2
 function! BufExplorerVerticalSplit()
-  let s:splitMode = "vsp"
-  exec "BufExplorer"
+    let s:splitMode = "vsp"
+    exec "BufExplorer"
 endfunction
 
-" StartBufExplorer {{{1
-function! StartBufExplorer(open)
+" BufExplorer {{{2
+function! BufExplorer(open)
     let name = s:name
 
     if !has("win32")
         " On non-Windows boxes, escape the name so that is shows up correctly.
         let name = escape(name, "[]")
-        call s:BEError("Escaped")
     endif
 
     " Make sure there is only one explorer open at a time.
     if s:running == 1
-        call s:BEError("WHAT THE 1")
         " Go to the open buffer.
         if has("gui")
-            call s:BEError("WHAT THE 2")
-            call s:BEError(name)
             exec "drop" name
         endif
 
         return
     endif
 
-    " Add zero to ensure the variable is treated as a Number.
+    " Add zero to ensure the variable is treated as a number.
     let s:originBuffer = bufnr("%") + 0
 
-    " Create or rebuild the raw buffer list if necessary.
-    if !exists('s:raw_buffer_listing') || 
-            \ empty(s:raw_buffer_listing) ||
-            \ s:refreshBufferList == 1
-        silent let s:raw_buffer_listing = s:BEGetBufferInfo(0)
-    endif
+    silent let s:raw_buffer_listing = s:GetBufferInfo(0)
 
-    let copy = copy(s:raw_buffer_listing)
+    let buffer_listing_copy = copy(s:raw_buffer_listing)
 
     if (g:bufExplorerShowUnlisted == 0)
-        call filter(copy, 'v:val.attributes !~ "u"')
+        call filter(buffer_listing_copy, 'v:val.attributes !~ "u"')
     endif
 
-  " We may have to split the current window.
-  if (s:splitMode != "")
-    " Save off the original settings.
-    let [_splitbelow, _splitright] = [&splitbelow, &splitright]
+    if (!empty(buffer_listing_copy))
+        call filter(buffer_listing_copy, 'v:val.shortname !~ "\\\[No Name\\\]"')
+    endif
 
-    " Set the setting to ours.
-    let [&splitbelow, &splitright] = [g:bufExplorerSplitBelow, g:bufExplorerSplitRight]
+"   if len(buffer_listing_copy) <= 1
+"       call s:Warning("Sorry, there are no more buffers to explore")
+"       return
+"   endif
 
-    " Do it.
-    exe 'keepalt '.s:splitMode
+    " We may have to split the current window.
+    if (s:splitMode != "")
+        " Save off the original settings.
+        let [_splitbelow, _splitright] = [&splitbelow, &splitright]
 
-    " Restore the original settings.
-    let [&splitbelow, &splitright] = [_splitbelow, _splitright]
-  endif
+        " Set the setting to ours.
+        let [&splitbelow, &splitright] = [g:bufExplorerSplitBelow, g:bufExplorerSplitRight]
 
-  if !exists("b:displayMode") || b:displayMode != "winmanager"
-    " Do not use keepalt when opening bufexplorer to allow the buffer that we are
-    " leaving to become the new alternate buffer
-    exec "silent keepjumps ".a:open." ".name
-  endif
+        let _size = (s:splitMode == "sp") ? g:bufExplorerSplitHorzSize : g:bufExplorerSplitVertSize
 
-  call s:BEDisplayBufferList()
-endfunction
+        " Split the window either horizontally or vertically.
+        if _size <= 0
+            execute 'keepalt ' . s:splitMode
+        else
+            execute 'keepalt ' . _size . s:splitMode
+        endif
+
+        " Restore the original settings.
+        let [&splitbelow, &splitright] = [_splitbelow, _splitright]
+    endif
+
+    if !exists("b:displayMode") || b:displayMode != "winmanager"
+        " Do not use keepalt when opening bufexplorer to allow the buffer that
+        " we are leaving to become the new alternate buffer
+        exec "silent keepjumps ".a:open." ".name
+    endif
 
-" BEDisplayBufferList {{{1
-function! s:BEDisplayBufferList()
-  " Do not set bufhidden since it wipes out 
-  " the data if we switch away from the buffer 
-  " using CTRL-^
-  setlocal buftype=nofile
-  setlocal modifiable
-  setlocal noswapfile
-  setlocal nowrap
-
-  " Delete all previous lines to the black hole register
-  call cursor(1,1)
-  exec 'silent! normal! "_dG'
-
-  call s:BESetupSyntax()
-  call s:BEMapKeys()
-  call setline(1, s:BECreateHelp())
-  call s:BEBuildBufferList()
-  call cursor(s:firstBufferLine, 1)
-
-  if !g:bufExplorerResize
-    normal! zz
-  endif
-
-  setlocal nomodifiable
+    call s:DisplayBufferList()
+
+    " Position the cursor in the newly displayed list on the line representing
+    " the active buffer.  The active buffer is the line with the '%' character
+    " in it.
+    execute search("%")
 endfunction
 
-" BEMapKeys {{{1
-function! s:BEMapKeys()
-  if exists("b:displayMode") && b:displayMode == "winmanager"
-    nnoremap <buffer> <silent> <tab> :call <SID>BESelectBuffer("tab")<cr>
-  endif
-
-  nnoremap <buffer> <silent> <F1>          :call <SID>BEToggleHelp()<cr>
-  nnoremap <buffer> <silent> <2-leftmouse> :call <SID>BESelectBuffer()<cr>
-  nnoremap <buffer> <silent> <cr>          :call <SID>BESelectBuffer()<cr>
-  nnoremap <buffer> <silent> o             :call <SID>BESelectBuffer()<cr>
-  nnoremap <buffer> <silent> t             :call <SID>BESelectBuffer("tab")<cr>
-  nnoremap <buffer> <silent> <s-cr>        :call <SID>BESelectBuffer("tab")<cr>
-
-  nnoremap <buffer> <silent> d             :call <SID>BERemoveBuffer("delete", "n")<cr>
-  xnoremap <buffer> <silent> d             :call <SID>BERemoveBuffer("delete", "v")<cr>
-  nnoremap <buffer> <silent> D             :call <SID>BERemoveBuffer("wipe", "n")<cr>
-  xnoremap <buffer> <silent> D             :call <SID>BERemoveBuffer("wipe", "v")<cr>
-
-  nnoremap <buffer> <silent> m             :call <SID>BEMRUListShow()<cr>
-  nnoremap <buffer> <silent> p             :call <SID>BEToggleSplitOutPathName()<cr>
-  nnoremap <buffer> <silent> q             :call <SID>BEClose("quit")<cr>
-  nnoremap <buffer> <silent> r             :call <SID>BESortReverse()<cr>
-  nnoremap <buffer> <silent> R             :call <SID>BEToggleShowRelativePath()<cr>
-  nnoremap <buffer> <silent> s             :call <SID>BESortSelect()<cr>
-  nnoremap <buffer> <silent> S             :call <SID>BEReverseSortSelect()<cr>
-  nnoremap <buffer> <silent> u             :call <SID>BEToggleShowUnlisted()<cr>
-  nnoremap <buffer> <silent> f             :call <SID>BEToggleFindActive()<cr>
-  nnoremap <buffer> <silent> T             :call <SID>BEToggleShowTabBuffer()<cr>
-  nnoremap <buffer> <silent> B             :call <SID>BEToggleOnlyOneTab()<cr>
-
-  for k in ["G", "n", "N", "L", "M", "H"]
-    exec "nnoremap <buffer> <silent>" k ":keepjumps normal!" k."<cr>"
-  endfor
+" DisplayBufferList {{{2
+function! s:DisplayBufferList()
+    " Do not set bufhidden since it wipes out the data if we switch away from
+    " the buffer using CTRL-^.
+    setlocal buftype=nofile
+    setlocal modifiable
+    setlocal noswapfile
+    setlocal nowrap
+
+    call s:SetupSyntax()
+    call s:MapKeys()
+    call setline(1, s:CreateHelp())
+    call s:BuildBufferList()
+    call cursor(s:firstBufferLine, 1)
+
+    if !g:bufExplorerResize
+        normal! zz
+    endif
+
+    setlocal nomodifiable
 endfunction
 
-" BESetupSyntax {{{1
-function! s:BESetupSyntax()
-  if has("syntax")
-    syn match bufExplorerHelp         "^\".*" contains=bufExplorerSortBy,bufExplorerMapping,bufExplorerTitle,bufExplorerSortType,bufExplorerToggleSplit,bufExplorerToggleOpen
-    syn match bufExplorerOpenIn       "Open in \w\+ window" contained
-    syn match bufExplorerSplit        "\w\+ split" contained
-    syn match bufExplorerSortBy       "Sorted by .*" contained contains=bufExplorerOpenIn,bufExplorerSplit
-    syn match bufExplorerMapping      "\" \zs.\+\ze :" contained
-    syn match bufExplorerTitle        "Buffer Explorer.*" contained
-    syn match bufExplorerSortType     "'\w\{-}'" contained
-    syn match bufExplorerBufNbr       /^\s*\d\+/
-    syn match bufExplorerToggleSplit  "toggle split type" contained
-    syn match bufExplorerToggleOpen   "toggle open mode" contained
-    syn match bufExplorerModBuf       /^\s*\d\+.\{4}+.*/
-    syn match bufExplorerLockedBuf    /^\s*\d\+.\{3}[\-=].*/
-    syn match bufExplorerHidBuf       /^\s*\d\+.\{2}h.*/
-    syn match bufExplorerActBuf       /^\s*\d\+.\{2}a.*/
-    syn match bufExplorerCurBuf       /^\s*\d\+.%.*/
-    syn match bufExplorerAltBuf       /^\s*\d\+.#.*/
-    syn match bufExplorerUnlBuf       /^\s*\d\+u.*/
-
-    hi def link bufExplorerBufNbr Number
-    hi def link bufExplorerMapping NonText
-    hi def link bufExplorerHelp Special
-    hi def link bufExplorerOpenIn Identifier
-    hi def link bufExplorerSortBy String
-    hi def link bufExplorerSplit NonText
-    hi def link bufExplorerTitle NonText
-    hi def link bufExplorerSortType bufExplorerSortBy
-    hi def link bufExplorerToggleSplit bufExplorerSplit
-    hi def link bufExplorerToggleOpen bufExplorerOpenIn
-
-    hi def link bufExplorerActBuf Identifier
-    hi def link bufExplorerAltBuf String
-    hi def link bufExplorerCurBuf Type
-    hi def link bufExplorerHidBuf Constant
-    hi def link bufExplorerLockedBuf Special
-    hi def link bufExplorerModBuf Exception
-    hi def link bufExplorerUnlBuf Comment
-  endif
+" MapKeys {{{2
+function! s:MapKeys()
+    if exists("b:displayMode") && b:displayMode == "winmanager"
+        nnoremap <buffer> <silent> <tab> :call <SID>SelectBuffer()<CR>
+    endif
+
+    nnoremap <script> <silent> <buffer> <2-leftmouse> :call <SID>SelectBuffer()<CR>
+    nnoremap <script> <silent> <buffer> <CR>          :call <SID>SelectBuffer()<CR>
+    nnoremap <script> <silent> <buffer> <F1>          :call <SID>ToggleHelp()<CR>
+    nnoremap <script> <silent> <buffer> <s-cr>        :call <SID>SelectBuffer("tab")<CR>
+    nnoremap <script> <silent> <buffer> B             :call <SID>ToggleOnlyOneTab()<CR>
+    nnoremap <script> <silent> <buffer> d             :call <SID>RemoveBuffer("delete")<CR>
+    nnoremap <script> <silent> <buffer> D             :call <SID>RemoveBuffer("wipe")<CR>
+    nnoremap <script> <silent> <buffer> f             :call <SID>ToggleFindActive()<CR>
+    nnoremap <script> <silent> <buffer> m             :call <SID>MRUListShow()<CR>
+    nnoremap <script> <silent> <buffer> o             :call <SID>SelectBuffer()<CR>
+    nnoremap <script> <silent> <buffer> p             :call <SID>ToggleSplitOutPathName()<CR>
+    nnoremap <script> <silent> <buffer> q             :call <SID>Close()<CR>
+    nnoremap <script> <silent> <buffer> r             :call <SID>SortReverse()<CR>
+    nnoremap <script> <silent> <buffer> R             :call <SID>ToggleShowRelativePath()<CR>
+    nnoremap <script> <silent> <buffer> s             :call <SID>SortSelect()<CR>
+    nnoremap <script> <silent> <buffer> S             :call <SID>ReverseSortSelect()<CR>
+    nnoremap <script> <silent> <buffer> t             :call <SID>SelectBuffer("tab")<CR>
+    nnoremap <script> <silent> <buffer> T             :call <SID>ToggleShowTabBuffer()<CR>
+    nnoremap <script> <silent> <buffer> u             :call <SID>ToggleShowUnlisted()<CR>
+
+    for k in ["G", "n", "N", "L", "M", "H"]
+        exec "nnoremap <buffer> <silent>" k ":keepjumps normal!" k."<CR>"
+    endfor
 endfunction
 
-" BEToggleHelp {{{1
-function! s:BEToggleHelp()
-  let g:bufExplorerDetailedHelp = !g:bufExplorerDetailedHelp
+" SetupSyntax {{{2
+function! s:SetupSyntax()
+    if has("syntax")
+        syn match bufExplorerHelp     "^\".*" contains=bufExplorerSortBy,bufExplorerMapping,bufExplorerTitle,bufExplorerSortType,bufExplorerToggleSplit,bufExplorerToggleOpen
+        syn match bufExplorerOpenIn   "Open in \w\+ window" contained
+        syn match bufExplorerSplit    "\w\+ split" contained
+        syn match bufExplorerSortBy   "Sorted by .*" contained contains=bufExplorerOpenIn,bufExplorerSplit
+        syn match bufExplorerMapping  "\" \zs.\+\ze :" contained
+        syn match bufExplorerTitle    "Buffer Explorer.*" contained
+        syn match bufExplorerSortType "'\w\{-}'" contained
+        syn match bufExplorerBufNbr   /^\s*\d\+/
+        syn match bufExplorerToggleSplit  "toggle split type" contained
+        syn match bufExplorerToggleOpen   "toggle open mode" contained
+
+        syn match bufExplorerModBuf    /^\s*\d\+.\{4}+.*/
+        syn match bufExplorerLockedBuf /^\s*\d\+.\{3}[\-=].*/
+        syn match bufExplorerHidBuf    /^\s*\d\+.\{2}h.*/
+        syn match bufExplorerActBuf    /^\s*\d\+.\{2}a.*/
+        syn match bufExplorerCurBuf    /^\s*\d\+.%.*/
+        syn match bufExplorerAltBuf    /^\s*\d\+.#.*/
+        syn match bufExplorerUnlBuf    /^\s*\d\+u.*/
+
+        hi def link bufExplorerBufNbr Number
+        hi def link bufExplorerMapping NonText
+        hi def link bufExplorerHelp Special
+        hi def link bufExplorerOpenIn Identifier
+        hi def link bufExplorerSortBy String
+        hi def link bufExplorerSplit NonText
+        hi def link bufExplorerTitle NonText
+        hi def link bufExplorerSortType bufExplorerSortBy
+        hi def link bufExplorerToggleSplit bufExplorerSplit
+        hi def link bufExplorerToggleOpen bufExplorerOpenIn
+
+        hi def link bufExplorerActBuf Identifier
+        hi def link bufExplorerAltBuf String
+        hi def link bufExplorerCurBuf Type
+        hi def link bufExplorerHidBuf Constant
+        hi def link bufExplorerLockedBuf Special
+        hi def link bufExplorerModBuf Exception
+        hi def link bufExplorerUnlBuf Comment
+    endif
+endfunction
 
-  setlocal modifiable
+" ToggleHelp {{{2
+function! s:ToggleHelp()
+    let g:bufExplorerDetailedHelp = !g:bufExplorerDetailedHelp
 
-  " Save position.
-  normal! ma
+    setlocal modifiable
 
-  " Remove old header.
-  if (s:firstBufferLine > 1)
-    exec "keepjumps 1,".(s:firstBufferLine - 1) "d _"
-  endif
+    " Save position.
+    normal! ma
 
-  call append(0, s:BECreateHelp())
+    " Remove old header.
+    if (s:firstBufferLine > 1)
+        exec "keepjumps 1,".(s:firstBufferLine - 1) "d _"
+    endif
 
-  silent! normal! g`a
-  delmarks a
+    call append(0, s:CreateHelp())
 
-  setlocal nomodifiable
+    silent! normal! g`a
+    delmarks a
 
-  if exists("b:displayMode") && b:displayMode == "winmanager"
-    call WinManagerForceReSize("BufExplorer")
-  endif
-endfunction
+    setlocal nomodifiable
 
-" BEGetHelpStatus {{{1
-function! s:BEGetHelpStatus()
-  let ret = '" Sorted by '.((g:bufExplorerReverseSort == 1) ? "reverse " : "").g:bufExplorerSortBy
-  let ret .= ' | '.((g:bufExplorerFindActive == 0) ? "Don't " : "")."Locate buffer"
-  let ret .= ((g:bufExplorerShowUnlisted == 0) ? "" : " | Show unlisted")
-  let ret .= ((g:bufExplorerShowTabBuffer == 0) ? "" : " | Show buffers/tab")
-  let ret .= ((g:bufExplorerOnlyOneTab == 1) ? "" : " | One tab / buffer")
-  let ret .= ' | '.((g:bufExplorerShowRelativePath == 0) ? "Absolute" : "Relative")
-  let ret .= ' '.((g:bufExplorerSplitOutPathName == 0) ? "Full" : "Split")." path"
-
-  return ret
+    if exists("b:displayMode") && b:displayMode == "winmanager"
+        call WinManagerForceReSize("BufExplorer")
+    endif
 endfunction
 
-" BECreateHelp {{{1
-function! s:BECreateHelp()
-  if g:bufExplorerDefaultHelp == 0 && g:bufExplorerDetailedHelp == 0
-    let s:firstBufferLine = 1
-    return []
-  endif
-
-  let header = []
-
-  if g:bufExplorerDetailedHelp == 1
-    call add(header, '" Buffer Explorer ('.g:bufexplorer_version.')')
-    call add(header, '" --------------------------')
-    call add(header, '" <F1> : toggle this help')
-    call add(header, '" <enter> or o or Mouse-Double-Click : open buffer under cursor')
-    call add(header, '" <shift-enter> or t : open buffer in another tab')
-    call add(header, '" d : delete buffer')
-    call add(header, '" D : wipe buffer')
-    call add(header, '" f : toggle find active buffer')
-    call add(header, '" p : toggle spliting of file and path name')
-    call add(header, '" q : quit')
-    call add(header, '" r : reverse sort')
-    call add(header, '" R : toggle showing relative or full paths')
-    call add(header, '" s : cycle thru "sort by" fields '.string(s:sort_by).'')
-    call add(header, '" S : reverse cycle thru "sort by" fields')
-    call add(header, '" T : toggle if to show only buffers for this tab or not')
-    call add(header, '" u : toggle showing unlisted buffers')
-  else
-    call add(header, '" Press <F1> for Help')
-  endif
-
-  if (!exists("b:displayMode") || b:displayMode != "winmanager") || (b:displayMode == "winmanager" && g:bufExplorerDetailedHelp == 1)
-    call add(header, s:BEGetHelpStatus())
-    call add(header, '"=')
-  endif
-
-  let s:firstBufferLine = len(header) + 1
-
-  return header
+" GetHelpStatus {{{2
+function! s:GetHelpStatus()
+    let ret = '" Sorted by '.((g:bufExplorerReverseSort == 1) ? "reverse " : "").g:bufExplorerSortBy
+    let ret .= ' | '.((g:bufExplorerFindActive == 0) ? "Don't " : "")."Locate buffer"
+    let ret .= ((g:bufExplorerShowUnlisted == 0) ? "" : " | Show unlisted")
+    let ret .= ((g:bufExplorerShowTabBuffer == 0) ? "" : " | Show buffers/tab")
+    let ret .= ((g:bufExplorerOnlyOneTab == 1) ? "" : " | One tab/buffer")
+    let ret .= ' | '.((g:bufExplorerShowRelativePath == 0) ? "Absolute" : "Relative")
+    let ret .= ' '.((g:bufExplorerSplitOutPathName == 0) ? "Full" : "Split")." path"
+
+    return ret
 endfunction
 
-" BEGetBufferInfo {{{1
-function! s:BEGetBufferInfo(bufnr)
-  redir => bufoutput
-  buffers!
-  redir END
+" CreateHelp {{{2
+function! s:CreateHelp()
+    if g:bufExplorerDefaultHelp == 0 && g:bufExplorerDetailedHelp == 0
+        let s:firstBufferLine = 1
+        return []
+    endif
 
-  if (a:bufnr > 0)
-    " Since we are only interested in this specified buffer 
-    " remove the other buffers listed
-    let bufoutput = substitute(bufoutput."\n", '^.*\n\(\s*'.a:bufnr.'\>.\{-}\)\n.*', '\1', '')
-  endif
+    let header = []
+
+    if g:bufExplorerDetailedHelp == 1
+        call add(header, '" Buffer Explorer ('.g:bufexplorer_version.')')
+        call add(header, '" --------------------------')
+        call add(header, '" <F1> : toggle this help')
+        call add(header, '" <enter> or o or Mouse-Double-Click : open buffer under cursor')
+        call add(header, '" <shift-enter> or t : open buffer in another tab')
+        call add(header, '" B : toggle if to save/use recent tab or not')
+        call add(header, '" d : delete buffer')
+        call add(header, '" D : wipe buffer')
+        call add(header, '" f : toggle find active buffer')
+        call add(header, '" p : toggle spliting of file and path name')
+        call add(header, '" q : quit')
+        call add(header, '" r : reverse sort')
+        call add(header, '" R : toggle showing relative or full paths')
+        call add(header, '" s : cycle thru "sort by" fields '.string(s:sort_by).'')
+        call add(header, '" S : reverse cycle thru "sort by" fields')
+        call add(header, '" T : toggle if to show only buffers for this tab or not')
+        call add(header, '" u : toggle showing unlisted buffers')
+    else
+        call add(header, '" Press <F1> for Help')
+    endif
 
-  let [all, allwidths, listedwidths] = [[], {}, {}]
+    if (!exists("b:displayMode") || b:displayMode != "winmanager") || (b:displayMode == "winmanager" && g:bufExplorerDetailedHelp == 1)
+        call add(header, s:GetHelpStatus())
+        call add(header, '"=')
+    endif
 
-  for n in keys(s:types)
-    let allwidths[n] = []
-    let listedwidths[n] = []
-  endfor
+    let s:firstBufferLine = len(header) + 1
 
-  for buf in split(bufoutput, '\n')
-    let bits = split(buf, '"')
-    let b = {"attributes": bits[0], "line": substitute(bits[2], '\s*', '', '')}
+    return header
+endfunction
 
-    for [key, val] in items(s:types)
-      let b[key] = fnamemodify(bits[1], val)
-    endfor
+" GetBufferInfo {{{2
+function! s:GetBufferInfo(bufnr)
+    redir => bufoutput
+    buffers!
+    redir END
 
-    if getftype(b.fullname) == "dir" && g:bufExplorerShowDirectories == 1
-      let b.shortname = "<DIRECTORY>"
+    if (a:bufnr > 0)
+        " Since we are only interested in this specified buffer
+        " remove the other buffers listed
+        let bufoutput = substitute(bufoutput."\n", '^.*\n\(\s*'.a:bufnr.'\>.\{-}\)\n.*', '\1', '')
     endif
 
-    call add(all, b)
+    let [all, allwidths, listedwidths] = [[], {}, {}]
 
     for n in keys(s:types)
-      call add(allwidths[n], len(b[n]))
-
-      if b.attributes !~ "u"
-        call add(listedwidths[n], len(b[n]))
-      endif
+        let allwidths[n] = []
+        let listedwidths[n] = []
     endfor
-  endfor
 
-  let [s:allpads, s:listedpads] = [{}, {}]
+    " Loop over each line in the buffer.
+    for buf in split(bufoutput, '\n')
+        let bits = split(buf, '"')
+        let b = {"attributes": bits[0], "line": substitute(bits[2], '\s*', '', '')}
 
-  for n in keys(s:types)
-    let s:allpads[n] = repeat(' ', max(allwidths[n]))
-    let s:listedpads[n] = repeat(' ', max(listedwidths[n]))
-  endfor
+        for [key, val] in items(s:types)
+            let b[key] = fnamemodify(bits[1], val)
+        endfor
 
-  let s:refreshBufferList = 1
+        if getftype(b.fullname) == "dir" && g:bufExplorerShowDirectories == 1
+            let b.shortname = "<DIRECTORY>"
+        endif
 
-  return all
+        call add(all, b)
+
+        for n in keys(s:types)
+            call add(allwidths[n], len(b[n]))
+
+            if b.attributes !~ "u"
+                call add(listedwidths[n], len(b[n]))
+            endif
+        endfor
+    endfor
+
+    let [s:allpads, s:listedpads] = [{}, {}]
+
+    for n in keys(s:types)
+        let s:allpads[n] = repeat(' ', max(allwidths[n]))
+        let s:listedpads[n] = repeat(' ', max(listedwidths[n]))
+    endfor
+
+    return all
 endfunction
 
-" BEBuildBufferList {{{1
-function! s:BEBuildBufferList()
+" BuildBufferList {{{2
+function! s:BuildBufferList()
     let lines = []
 
     " Loop through every buffer.
     for buf in s:raw_buffer_listing
         " Skip unlisted buffers if we are not to show them.
         if (!g:bufExplorerShowUnlisted && buf.attributes =~ "u")
+            " Skip unlisted buffers if we are not to show them.
+            continue
+        endif
+
+        " Ignore buffers with no name.
+        if empty(bufname(str2nr(buf.attributes))) == 1
             continue
         endif
 
@@ -658,7 +662,7 @@ function! s:BEBuildBufferList()
                 endif
             endfor
 
-            if show_buffer == 0 
+            if show_buffer == 0
                 continue
             endif
         endif
@@ -689,265 +693,243 @@ function! s:BEBuildBufferList()
 
     call setline(s:firstBufferLine, lines)
 
-    call s:BESortListing()
+    call s:SortListing()
 endfunction
 
-" BESelectBuffer {{{1
-function! s:BESelectBuffer(...)
-  " Sometimes messages are not cleared when we get here so it looks like an error has
-  " occurred when it really has not.
-  echo ""
+" SelectBuffer {{{2
+function! s:SelectBuffer(...)
+    " Sometimes messages are not cleared when we get here so it looks like an
+    " error has occurred when it really has not.
+" 3/25/2012    echo ""
 
-  " Are we on a line with a file name?
-  if line('.') < s:firstBufferLine
-    exec "normal! \<cr>"
-    return
-  endif
+    " Are we on a line with a file name?
+    if line('.') < s:firstBufferLine
+        exec "normal! \<CR>"
+        return
+    endif
 
-  let _bufNbr = str2nr(getline('.'))
+    let _bufNbr = str2nr(getline('.'))
 
-  " Check and see if we are running BE via WinManager.
-  if exists("b:displayMode") && b:displayMode == "winmanager"
-    let bufname = expand("#"._bufNbr.":p")
+    " Check and see if we are running BufferExplorer via WinManager.
+    if exists("b:displayMode") && b:displayMode == "winmanager"
+        let _bufName = expand("#"._bufNbr.":p")
 
-    if (a:0 == 1) && (a:1 == "tab")
-      call WinManagerFileEdit(bufname, 1)
-    else
-      call WinManagerFileEdit(bufname, 0)
-    endif
- 
-    return
-  endif
+        if (a:0 == 1) && (a:1 == "tab")
+            call WinManagerFileEdit(_bufName, 1)
+        else
+            call WinManagerFileEdit(_bufName, 0)
+        endif
 
-  if bufexists(_bufNbr)
-    if bufnr("#") == _bufNbr && !exists("g:bufExplorerChgWin")
-      return s:BEClose("")
+        return
     endif
 
-    " Are we suppose to open the selected buffer in a tab?
-    if (a:0 == 1) && (a:1 == "tab")
-      " Yes, we are to open the selected buffer in a tab.
+    if bufexists(_bufNbr)
+        if bufnr("#") == _bufNbr && !exists("g:bufExplorerChgWin")
+            return s:Close()
+        endif
 
-      " Restore [BufExplorer] buffer.
-      exec "keepjumps silent buffer!".s:originBuffer
+        " Are we suppose to open the selected buffer in a tab?
+        if (a:0 == 1) && (a:1 == "tab")
+            " Yes, we are to open the selected buffer in a tab.
 
-      " Get the tab number where this buffer is located at.
-      let tabNbr = s:BEGetTabNbr(_bufNbr)
+            " Restore [BufExplorer] buffer.
+            exec "keepjumps silent buffer!".s:originBuffer
 
-      " Was the tab found?
-      if tabNbr == 0
-        " _bufNbr is not opened in any tabs. Open a new tab with the selected buffer in it.
-        exec "999tab split +buffer" . _bufNbr
-      else
-        " The _bufNbr is already opened in tab, go to that tab.
-        exec tabNbr . "tabnext"
+            " Get the tab nmber where this bufer is located in.
+            let tabNbr = s:GetTabNbr(_bufNbr)
 
-        " Focus window.
-        exec s:BEGetWinNbr(tabNbr, _bufNbr) . "wincmd w"
-      endif
-    else
-        "No, the use did not ask to open the selected buffer in a tab.
-
-        " Are we suppose to move to the tab where this active buffer is?
-        if exists("g:bufExplorerChgWin")
- 	        exe g:bufExplorerChgWin."wincmd w"
- 	    elseif bufloaded(_bufNbr) && g:bufExplorerFindActive
-            " Close the BE window.
-            call s:BEClose("")
-
-        " Get the tab number where this buffer is located at.
-        let tabNbr = s:BEGetTabNbr(_bufNbr)
-
-        " Was the tab found?
-        if tabNbr != 0
-          " The buffer is located in a tab. Go to that tab number.
-          exec tabNbr . "tabnext"
-        else
-          " Nope, the buffer is not in a tab, simple switch to that buffer.
-          let bufname = expand("#"._bufNbr.":p")
-          exec bufname ? "drop ".escape(bufname, " ") : "buffer "._bufNbr
-        endif
-      endif
+            " Was the tab found?
+            if tabNbr == 0
+                " _bufNbr is not opened in any tabs. Open a new tab with the selected buffer in it.
+                exec "999tab split +buffer" . _bufNbr
+            else
+                " The _bufNbr is already opened in a tab, go to that tab.
+                exec tabNbr . "tabnext"
 
-      " Switch to the buffer.
-      exec "keepalt keepjumps silent b!" _bufNbr
-    endif
+                " Focus window.
+                exec s:GetWinNbr(tabNbr, _bufNbr) . "wincmd w"
+            endif
+        else
+            " No, the user did not ask to open the selected buffer in a tab.
+
+            " Are we suppose to move to the tab where the active buffer is?
+            if exists("g:bufExplorerChgWin")
+                exe g:bufExplorerChgWin."wincmd w"
+            elseif bufloaded(_bufNbr) && g:bufExplorerFindActive
+                call s:Close()
+
+                " Get the tab number where this buffer is located in.
+                let tabNbr = s:GetTabNbr(_bufNbr)
+
+                " Was the tab found?
+                if tabNbr != 0
+                    " Yes, the buffer is located in a tab. Go to that tab number.
+                    exec tabNbr . "tabnext"
+                else
+                    "Nope, the buffer is not in a tab. Simply switch to that
+                    "buffer.
+                    let _bufName = expand("#"._bufNbr.":p")
+                    exec _bufName ? "drop ".escape(_bufName, " ") : "buffer "._bufNbr
+                endif
+            endif
 
-    " Make the buffer 'listed' again.
-    call setbufvar(_bufNbr, "&buflisted", "1")
- 
- 	" call any associated function references
- 	" g:bufExplorerFuncRef may be an individual function reference
- 	"                or it may be a list containing function references.
- 	" It will ignore anything that's not a function reference.
- 	" See  :help FuncRef  for more on function references.
- 	if exists("g:BufExplorerFuncRef")
- 	  if type(g:BufExplorerFuncRef) == 2
- 	    keepj call g:BufExplorerFuncRef()
- 	  elseif type(g:BufExplorerFuncRef) == 3
- 	    for FncRef in g:BufExplorerFuncRef
- 	      if type(FncRef) == 2
- 		    keepj call FncRef()
- 	      endif
- 	    endfor
- 	  endif
-    endif
-  else
-    call s:BEError("Sorry, that buffer no longer exists, please select another")
-    call s:BEDeleteBuffer(_bufNbr, "wipe")
-  endif
-endfunction
+            " Switch to the buffer.
+            exec "keepalt keepjumps silent b!" _bufNbr
+        endif
 
-" BEDeleteBufferListing {{{1
-function! s:BEDeleteBufferListing(buf)
-    if exists('s:raw_buffer_listing') && !empty(s:raw_buffer_listing)
-        " Delete the buffer from the raw buffer list.
-        " Careful use of ' and " so we do not have to escape all the \'s
-        " Regex: ^\s*\(10\|20\)\>
-        "        ^ - Starting at the beginning of the string
-        "        \s* - optional whitespace
-        "        \(10\|20\) - either a 10 or a 20
-        "        \> - end of word (so it can't make 100 or 201)
-        call filter(s:raw_buffer_listing, "v:val.attributes !~ '".'^\s*\('.substitute(a:buf, ' ', '\\|', 'g').'\)\>'."'")
+        " Make the buffer 'listed' again.
+        call setbufvar(_bufNbr, "&buflisted", "1")
+
+        " Call any associated function references. g:bufExplorerFuncRef may be
+        " an individual function reference or it may be a list containing
+        " function references. It will ignore anything that's not a function
+        " reference.
+        "
+        " See  :help FuncRef  for more on function references.
+        if exists("g:BufExplorerFuncRef")
+            if type(g:BufExplorerFuncRef) == 2
+                keepj call g:BufExplorerFuncRef()
+            elseif type(g:BufExplorerFuncRef) == 3
+                for FncRef in g:BufExplorerFuncRef
+                    if type(FncRef) == 2
+                        keepj call FncRef()
+                    endif
+                endfor
+            endif
+        endif
+    else
+        call s:Error("Sorry, that buffer no longer exists, please select another")
+        call s:DeleteBuffer(_bufNbr, "wipe")
     endif
 endfunction
 
-" BERemoveBuffer {{{1
-function! s:BERemoveBuffer(type, mode) range
+" RemoveBuffer {{{2
+function! s:RemoveBuffer(mode)
     " Are we on a line with a file name?
     if line('.') < s:firstBufferLine
         return
     endif
 
+    " Do not allow this buffer to be deleted if it is the last one.
+    if len(s:MRUList) == 1
+        call s:Error("Sorry, you are not allowed to delete the last buffer")
+        return
+    endif
+
     " These commands are to temporarily suspend the activity of winmanager.
     if exists("b:displayMode") && b:displayMode == "winmanager"
         call WinManagerSuspendAUs()
-    endif
-
-    let _bufNbrs = ''
-
-    for lineNum in range(a:firstline, a:lastline)
-        let line = getline(lineNum)
-
-        if line =~ '^\s*\(\d\+\)'
-            " Regex: ^\s*\(10\|20\)\>
-            "        ^ - Starting at the beginning of the string
-            "        \s* - optional whitespace
-            "        \zs - start the match here
-            "        \d\+ - any digits
-            "        \> - end of word (so it can't make 100 or 201)
-            let bufNbr = matchstr(line, '^\s*\zs\d\+\>')
+    end
 
-            " Add 0 to bufNbr to ensure Vim treats it as a Number
-            " for use with the getbufvar() function
-            if bufNbr !~ '^\d\+$' || getbufvar(bufNbr+0, '&modified') != 0
-                call s:BEError("Sorry, no write since last change for buffer ".bufNbr.", unable to delete")
-            else
-                let _bufNbrs = _bufNbrs . (_bufNbrs==''?'':' '). bufNbr 
-            endif
-        endif
-    endfor
+    let _bufNbr = str2nr(getline('.'))
 
-    " Okay, everything is good, delete or wipe the buffers.
-    call s:BEDeleteBuffer(_bufNbrs, a:type)
+    if getbufvar(_bufNbr, '&modified') == 1
+        call s:Error("Sorry, no write since last change for buffer "._bufNbr.", unable to delete")
+        return
+    else
+        " Okay, everything is good, delete or wipe the buffer.
+        call s:DeleteBuffer(_bufNbr, a:mode)
+    endif
 
     " Reactivate winmanager autocommand activity.
     if exists("b:displayMode") && b:displayMode == "winmanager"
         call WinManagerForceReSize("BufExplorer")
         call WinManagerResumeAUs()
-    endif
+    end
 endfunction
 
-" BEDeleteBuffer {{{1
-function! s:BEDeleteBuffer(bufNbr, mode)
+" DeleteBuffer {{{2
+function! s:DeleteBuffer(buf, mode)
     " This routine assumes that the buffer to be removed is on the current line.
     try
+        " Wipe/Delete buffer from Vim.
         if a:mode == "wipe"
-            exe "bwipe" a:bufNbr
+            exe "silent bwipe" a:buf
         else
-            exe "bdelete" a:bufNbr
+            exe "silent bdelete" a:buf
         endif
 
+        " Delete the buffer from the list on screen.
         setlocal modifiable
-
-        " Remove each of the lines beginning with the buffer numbers we are removing
-        " Regex: ^\s*\(10\|20\)\>
-        "        ^ - Starting at the beginning of the string
-        "        \s* - optional whitespace
-        "        \(10\|20\) - either a 10 or a 20
-        "        \> - end of word (so it can't make 100 or 201)
-        exec 'silent! g/^\s*\('.substitute(a:bufNbr, ' ', '\\|', 'g').'\)\>/d_'
-
+        normal! "_dd
         setlocal nomodifiable
 
-        call s:BEDeleteBufferListing(a:bufNbr)
+        " Delete the buffer from the raw buffer list.
+        call filter(s:raw_buffer_listing, 'v:val.attributes !~ " '.a:buf.' "')
     catch
-        call s:BEError(v:exception)
+        call s:Error(v:exception)
     endtry
 endfunction
 
-" BEClose {{{1
-function! s:BEClose(mode)
+" Close {{{2
+function! s:Close()
     " Get only the listed buffers.
     let listed = filter(copy(s:MRUList), "buflisted(v:val)")
 
     " If we needed to split the main window, close the split one.
-"  if (s:splitMode)
-"  if (s:splitMode != "")
-    if (s:splitMode != "" && a:mode == "quit")
+    if (s:splitMode != "")
         exec "wincmd c"
     endif
 
+    " Check to see if there are anymore buffers listed.
     if len(listed) == 0
+        " Since there are no buffers left to switch to, open a new empty
+        " buffers.
         exe "enew"
     else
+        " Since there are buffers left to switch to, swith to them...
         for b in reverse(listed[0:1])
             exec "keepjumps silent b ".b
         endfor
     endif
+
+    " Clear any messages.
+    echo
 endfunction
 
-" BEToggleSplitOutPathName {{{1
-function! s:BEToggleSplitOutPathName()
+" ToggleSplitOutPathName {{{2
+function! s:ToggleSplitOutPathName()
     let g:bufExplorerSplitOutPathName = !g:bufExplorerSplitOutPathName
-    call s:BERebuildBufferList()
-    call s:BEUpdateHelpStatus()
+    call s:RebuildBufferList()
+    call s:UpdateHelpStatus()
 endfunction
 
-" BEToggleShowRelativePath {{{1
-function! s:BEToggleShowRelativePath()
+" ToggleShowRelativePath {{{2
+function! s:ToggleShowRelativePath()
     let g:bufExplorerShowRelativePath = !g:bufExplorerShowRelativePath
-    call s:BERebuildBufferList()
-    call s:BEUpdateHelpStatus()
+    call s:RebuildBufferList()
+    call s:UpdateHelpStatus()
 endfunction
 
-" BEToggleShowUnlisted {{{1
-function! s:BEToggleShowUnlisted()
-    let g:bufExplorerShowUnlisted = !g:bufExplorerShowUnlisted
-    let num_bufs = s:BERebuildBufferList(g:bufExplorerShowUnlisted == 0)
-    call s:BEUpdateHelpStatus()
+" ToggleShowTabBuffer {{{2
+function! s:ToggleShowTabBuffer()
+    let g:bufExplorerShowTabBuffer = !g:bufExplorerShowTabBuffer
+    call s:RebuildBufferList(g:bufExplorerShowTabBuffer)
+    call s:UpdateHelpStatus()
 endfunction
 
-" BEToggleFindActive {{{1
-function! s:BEToggleFindActive()
-    let g:bufExplorerFindActive = !g:bufExplorerFindActive
-    call s:BEUpdateHelpStatus()
+" ToggleOnlyOneTab {{{2
+function! s:ToggleOnlyOneTab()
+    let g:bufExplorerOnlyOneTab = !g:bufExplorerOnlyOneTab
+    call s:RebuildBufferList()
+    call s:UpdateHelpStatus()
 endfunction
 
-" BEToggleShowTabBuffer {{{1
-function! s:BEToggleShowTabBuffer()
-    let g:bufExplorerShowTabBuffer = !g:bufExplorerShowTabBuffer
-    call s:BEDisplayBufferList()
+" ToggleShowUnlisted {{{2
+function! s:ToggleShowUnlisted()
+    let g:bufExplorerShowUnlisted = !g:bufExplorerShowUnlisted
+    let num_bufs = s:RebuildBufferList(g:bufExplorerShowUnlisted == 0)
+    call s:UpdateHelpStatus()
 endfunction
 
-" BEToggleOnlyOneTab {{{1
-function! s:BEToggleOnlyOneTab()
-    let g:bufExplorerOnlyOneTab = !g:bufExplorerOnlyOneTab
-    call s:BEDisplayBufferList()
+" ToggleFindActive {{{2
+function! s:ToggleFindActive()
+    let g:bufExplorerFindActive = !g:bufExplorerFindActive
+    call s:UpdateHelpStatus()
 endfunction
 
-" BERebuildBufferList {{{1
-function! s:BERebuildBufferList(...)
+" RebuildBufferList {{{2
+function! s:RebuildBufferList(...)
     setlocal modifiable
 
     let curPos = getpos('.')
@@ -957,7 +939,7 @@ function! s:BERebuildBufferList(...)
         exec "keepjumps ".s:firstBufferLine.',$d "_'
     endif
 
-    let num_bufs = s:BEBuildBufferList()
+    let num_bufs = s:BuildBufferList()
 
     call setpos('.', curPos)
 
@@ -966,105 +948,111 @@ function! s:BERebuildBufferList(...)
     return num_bufs
 endfunction
 
-" BEUpdateHelpStatus {{{1
-function! s:BEUpdateHelpStatus()
+" UpdateHelpStatus {{{2
+function! s:UpdateHelpStatus()
     setlocal modifiable
 
-    let text = s:BEGetHelpStatus()
+    let text = s:GetHelpStatus()
     call setline(s:firstBufferLine - 2, text)
 
     setlocal nomodifiable
 endfunction
 
-" BEMRUCmp {{{1
-function! s:BEMRUCmp(line1, line2)
+" MRUCmp {{{2
+function! s:MRUCmp(line1, line2)
     return index(s:MRUList, str2nr(a:line1)) - index(s:MRUList, str2nr(a:line2))
 endfunction
 
-" BESortReverse {{{1
-function! s:BESortReverse()
+" SortReverse {{{2
+function! s:SortReverse()
     let g:bufExplorerReverseSort = !g:bufExplorerReverseSort
-    call s:BEReSortListing()
+    call s:ReSortListing()
 endfunction
 
-" BESortSelect {{{1
-function! s:BESortSelect()
+" SortSelect {{{2
+function! s:SortSelect()
     let g:bufExplorerSortBy = get(s:sort_by, index(s:sort_by, g:bufExplorerSortBy) + 1, s:sort_by[0])
-    call s:BEReSortListing()
+    call s:ReSortListing()
 endfunction
 
-" BEReverseSortSelect {{{1
-function! s:BEReverseSortSelect()
-    let g:bufExplorerSortBy = get(s:sort_by, (index(s:sort_by, g:bufExplorerSortBy) + len(s:sort_by) - 1) % len(s:sort_by), s:sort_by[0])
-    call s:BEReSortListing()
+" ReverseSortSelect {{{2
+function! s:ReverseSortSelect()
+    let g:bufExplorerSortBy = get(s:sort_by, index(s:sort_by, g:bufExplorerSortBy) - 1, s:sort_by[-1])
+    call s:ReSortListing()
 endfunction
 
-" BEReSortListing {{{1
-function! s:BEReSortListing()
+" ReSortListing {{{2
+function! s:ReSortListing()
     setlocal modifiable
 
     let curPos = getpos('.')
 
-    call s:BESortListing()
-    call s:BEUpdateHelpStatus()
+    call s:SortListing()
+    call s:UpdateHelpStatus()
 
     call setpos('.', curPos)
 
     setlocal nomodifiable
 endfunction
 
-" BESortListing {{{1
-function! s:BESortListing()
-  let sort = s:firstBufferLine.",$sort".((g:bufExplorerReverseSort == 1) ? "!": "")
+" SortListing {{{2
+function! s:SortListing()
+    let sort = s:firstBufferLine.",$sort".((g:bufExplorerReverseSort == 1) ? "!": "")
 
-  if g:bufExplorerSortBy == "number"
-    " Easiest case.
-    exec sort 'n'
-  elseif g:bufExplorerSortBy == "name"
-    if g:bufExplorerSplitOutPathName
-      exec sort 'ir /\d.\{7}\zs\f\+\ze/'
-    else
-      exec sort 'ir /\zs[^\/\\]\+\ze\s*line/'
-    endif
-  elseif g:bufExplorerSortBy == "fullpath"
-    if g:bufExplorerSplitOutPathName
-      " Sort twice - first on the file name then on the path.
-      exec sort 'ir /\d.\{7}\zs\f\+\ze/'
-    endif
+    if g:bufExplorerSortBy == "number"
+        " Easiest case.
+        exec sort 'n'
+    elseif g:bufExplorerSortBy == "name"
+        if g:bufExplorerSplitOutPathName
+            exec sort 'ir /\d.\{7}\zs\f\+\ze/'
+        else
+            exec sort 'ir /\zs[^\/\\]\+\ze\s*line/'
+        endif
+    elseif g:bufExplorerSortBy == "fullpath"
+        if g:bufExplorerSplitOutPathName
+            " Sort twice - first on the file name then on the path.
+            exec sort 'ir /\d.\{7}\zs\f\+\ze/'
+        endif
 
-    exec sort 'ir /\zs\f\+\ze\s\+line/'
-  elseif g:bufExplorerSortBy == "extension"
-    exec sort 'ir /\.\zs\w\+\ze\s/'
-  elseif g:bufExplorerSortBy == "mru"
-    let l = getline(s:firstBufferLine, "$")
+        exec sort 'ir /\zs\f\+\ze\s\+line/'
+    elseif g:bufExplorerSortBy == "extension"
+        exec sort 'ir /\.\zs\w\+\ze\s/'
+    elseif g:bufExplorerSortBy == "mru"
+        let l = getline(s:firstBufferLine, "$")
 
-    call sort(l, "<SID>BEMRUCmp")
+        call sort(l, "<SID>MRUCmp")
 
-    if g:bufExplorerReverseSort
-      call reverse(l)
-    endif
+        if g:bufExplorerReverseSort
+            call reverse(l)
+        endif
 
-    call setline(s:firstBufferLine, l)
-  endif
+        call setline(s:firstBufferLine, l)
+    endif
 endfunction
 
-" BEMRUListShow {{{1
-function! s:BEMRUListShow()
+" MRUListShow {{{2
+function! s:MRUListShow()
     echomsg "MRUList=".string(s:MRUList)
 endfunction
 
-" BEError {{{1
-function! s:BEError(msg)
-    echohl ErrorMsg | echo a:msg | echohl none
+" Error {{{2
+" Display a message using ErrorMsg highlight group.
+function! s:Error(msg)
+    echohl ErrorMsg
+    echomsg a:msg
+    echohl None
 endfunction
 
-" BEWarning {{{1
-function! s:BEWarning(msg)
-    echohl WarningMsg | echo a:msg | echohl none
+" Warning {{{2
+" Display a message using WarningMsg highlight group.
+function! s:Warning(msg)
+    echohl WarningMsg
+    echomsg a:msg
+    echohl None
 endfunction
 
-" GetTabNbr {{{1
-function! s:BEGetTabNbr(bufNbr)
+" GetTabNbr {{{2
+function! s:GetTabNbr(bufNbr)
     " Searching buffer bufno, in tabs.
     for i in range(tabpagenr("$"))
         if index(tabpagebuflist(i + 1), a:bufNbr) != -1
@@ -1075,23 +1063,34 @@ function! s:BEGetTabNbr(bufNbr)
     return 0
 endfunction
 
-" GetWinNbr" {{{1
-function! s:BEGetWinNbr(tabNbr, bufNbr)
+" GetWinNbr" {{{2
+function! s:GetWinNbr(tabNbr, bufNbr)
     " window number in tabpage.
-    return index(tabpagebuflist(a:tabNbr), a:bufNbr) + 1
+    let tablist = tabpagebuflist(a:tabNbr)
+    " Number:     0
+    " String:     1
+    " Funcref:    2
+    " List:       3
+    " Dictionary: 4
+    " Float:      5
+    if type(tablist) == 3
+        return index(tabpagebuflist(a:tabNbr), a:bufNbr) + 1
+    else
+        return 1
+    endif
 endfunction
 
-" Winmanager Integration {{{1
+" Winmanager Integration {{{2
 let g:BufExplorer_title = "\[Buf\ List\]"
-call s:BESet("g:bufExplorerResize", 1)
-call s:BESet("g:bufExplorerMaxHeight", 25) " Handles dynamic resizing of the window.
+call s:Set("g:bufExplorerResize", 1)
+call s:Set("g:bufExplorerMaxHeight", 25) " Handles dynamic resizing of the window.
 
-" Function to start display. Set the mode to 'winmanager' for this buffer.
+" function! to start display. Set the mode to 'winmanager' for this buffer.
 " This is to figure out how this plugin was called. In a standalone fashion
 " or by winmanager.
 function! BufExplorer_Start()
     let b:displayMode = "winmanager"
-    call StartBufExplorer("e")
+    call BufExplorer("e")
 endfunction
 
 " Returns whether the display is okay or not.
@@ -1102,61 +1101,65 @@ endfunction
 " Handles dynamic refreshing of the window.
 function! BufExplorer_Refresh()
     let b:displayMode = "winmanager"
-    call StartBufExplorer("e")
+    call BufExplorer("e")
 endfunction
 
 function! BufExplorer_ReSize()
-  if !g:bufExplorerResize
-    return
-  endif
+    if !g:bufExplorerResize
+        return
+    end
 
-  let nlines = min([line("$"), g:bufExplorerMaxHeight])
+    let nlines = min([line("$"), g:bufExplorerMaxHeight])
 
-  exe nlines." wincmd _"
+    exe nlines." wincmd _"
 
-  " The following lines restore the layout so that the last file line is also
-  " the last window line. Sometimes, when a line is deleted, although the
-  " window size is exactly equal to the number of lines in the file, some of
-  " the lines are pushed up and we see some lagging '~'s.
-  let pres = getpos(".")
+    " The following lines restore the layout so that the last file line is also
+    " the last window line. Sometimes, when a line is deleted, although the
+    " window size is exactly equal to the number of lines in the file, some of
+    " the lines are pushed up and we see some lagging '~'s.
+    let pres = getpos(".")
 
-  exe $
+    exe $
 
-  let _scr = &scrolloff
-  let &scrolloff = 0
+    let _scr = &scrolloff
+    let &scrolloff = 0
 
-  normal! z-
+    normal! z-
 
-  let &scrolloff = _scr
+    let &scrolloff = _scr
 
-  call setpos(".", pres)
+    call setpos(".", pres)
 endfunction
 
+" Default key mapping {{{1
+if !hasmapto('BufExplorer')
+    noremap <script> <silent> <unique> <Leader>be :BufExplorer<CR>
+endif
+
+if !hasmapto('BufExplorerHorizontalSplit')
+    noremap <script> <silent> <unique> <Leader>bs :BufExplorerHorizontalSplit<CR>
+endif
+
+if !hasmapto('BufExplorerVerticalSplit')
+    noremap <script> <silent> <unique> <Leader>bv :BufExplorerVerticalSplit<CR>
+endif
+
 " Default values {{{1
-call s:BESet("g:bufExplorerDefaultHelp", 1)           " Show default help?
-call s:BESet("g:bufExplorerDetailedHelp", 0)          " Show detailed help?
-call s:BESet("g:bufExplorerFindActive", 1)            " When selecting an active buffer, take you to the window where it is active?
-call s:BESet("g:bufExplorerReverseSort", 0)           " sort reverse?
-call s:BESet("g:bufExplorerShowDirectories", 1)       " (Dir's are added by commands like ':e .')
-call s:BESet("g:bufExplorerShowRelativePath", 0)      " Show listings with relative or absolute paths?
-call s:BESet("g:bufExplorerShowUnlisted", 0)          " Show unlisted buffers?
-call s:BESet("g:bufExplorerSortBy", "mru")            " Sorting methods are in s:sort_by:
-call s:BESet("g:bufExplorerSplitOutPathName", 1)      " Split out path and file name?
-call s:BESet("g:bufExplorerSplitRight", &splitright)  " Should vertical splits be on the right or left of current window?
-call s:BESet("g:bufExplorerSplitBelow", &splitbelow)  " Should horizontal splits be below or above current window?
-call s:BESet("g:bufExplorerShowTabBuffer", 0)         " Show only buffer(s) for this tab?
-call s:BESet("g:bufExplorerOnlyOneTab", 1)            " If ShowTabBuffer = 1, only store the most recent tab for this buffer.
-
-" Global variables {{{1
-call s:BEReset()
-let s:running = 0
-let s:sort_by = ["number", "name", "fullpath", "mru", "extension"]
-let s:types = {"fullname": ':p', "path": ':p:h', "relativename": ':~:.', "relativepath": ':~:.:h', "shortname": ':t'}
-let s:originBuffer = 0
-let s:splitMode = ""
-let s:name = '[BufExplorer]'
-let s:refreshBufferList = 1
-let s:MRU_Exclude_List = ["[BufExplorer]","__MRU_Files__"]
+call s:Set("g:bufExplorerDefaultHelp", 1)           " Show default help?
+call s:Set("g:bufExplorerDetailedHelp", 0)          " Show detailed help?
+call s:Set("g:bufExplorerFindActive", 1)            " When selecting an active buffer, take you to the window where it is active?
+call s:Set("g:bufExplorerOnlyOneTab", 1)            " If ShowTabBuffer = 1, only store the most recent tab for this buffer.
+call s:Set("g:bufExplorerReverseSort", 0)           " Sort in reverse order by default?
+call s:Set("g:bufExplorerShowDirectories", 1)       " (Dir's are added by commands like ':e .')
+call s:Set("g:bufExplorerShowRelativePath", 0)      " Show listings with relative or absolute paths?
+call s:Set("g:bufExplorerShowTabBuffer", 0)         " Show only buffer(s) for this tab?
+call s:Set("g:bufExplorerShowUnlisted", 0)          " Show unlisted buffers?
+call s:Set("g:bufExplorerSortBy", "mru")            " Sorting methods are in s:sort_by:
+call s:Set("g:bufExplorerSplitBelow", &splitbelow)  " Should horizontal splits be below or above current window?
+call s:Set("g:bufExplorerSplitOutPathName", 1)      " Split out path and file name?
+call s:Set("g:bufExplorerSplitRight", &splitright)  " Should vertical splits be on the right or left of current window?
+call s:Set("g:bufExplorerSplitVertSize", 0)        " Height for a vertical split. If <=0, default Vim size is used.
+call s:Set("g:bufExplorerSplitHorzSize", 0)        " Height for a horizontal split. If <=0, default Vim size is used.
 "1}}}
 
-" vim:ft=vim foldmethod=marker sw=2
+" vim:ft=vim foldmethod=marker sw=4

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vim/vim-scripts.git



More information about the pkg-vim-maintainers mailing list