changeset 459:d9d38102399f

updated for version 7.0122
author vimboss
date Mon, 01 Aug 2005 21:58:57 +0000
parents f99544c85670
children 7f2d3b3c15a2
files runtime/doc/eval.txt runtime/doc/insert.txt runtime/doc/options.txt runtime/doc/pi_netrw.txt runtime/doc/tags runtime/plugin/netrw.vim src/misc2.c src/version.h
diffstat 8 files changed, 482 insertions(+), 310 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jul 30
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Aug 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3460,7 +3460,7 @@ printf({fmt}, {expr1} ...)				*printf()*
 		automatically to fit the conversion specifier.  Any other
 		argument type results in an error message.
 
-							*E766* *767*
+							*E766* *E767*
 		The number of {exprN} arguments must exactly match the number
 		of "%" items.  If there are not sufficient or too many
 		arguments an error is given.  Up to 18 arguments can be used.
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Jul 29
+*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Aug 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -614,12 +614,12 @@ Completing whole lines					*compl-whole-
 
 							*i_CTRL-X_CTRL-L*
 CTRL-X CTRL-L		Search backwards for a line that starts with the
-			same characters as in the current line before the
-			cursor.  Indent is ignored.  The found line is
+			same characters as those in the current line before
+			the cursor.  Indent is ignored.  The matching line is
 			inserted in front of the cursor.
-			The 'complete' option is used to decide in which
-			buffers a match is searched for.  But only loaded
-			buffers are used.
+			The 'complete' option is used to decide which buffers
+			are searched for a match.  Only loaded buffers are
+			used.
 	CTRL-L	or
 	CTRL-P		Search backwards for next matching line.  This line
 			replaces the previous matching line.
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Jul 30
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Aug 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2176,10 +2176,10 @@ A jump table for the options with a shor
 	- A directory starting with "./" (or ".\" for MS-DOS et al.) means to
 	  put the swap file relative to where the edited file is.  The leading
 	  "." is replaced with the path name of the edited file.
-	- For Unix and Win32, if a directory ends in two path separators, the
-	  swap file name will be built from the complete path to the file
-	  with all path separators substituted to percent '%' signs.  This will
-	  ensure file name uniqueness in the preserve directory.
+	- For Unix and Win32, if a directory ends in two path separators "//"
+	  or "\\", the swap file name will be built from the complete path to
+	  the file with all path separators substituted to percent '%' signs.
+	  This will ensure file name uniqueness in the preserve directory.
 	- Spaces after the comma are ignored, other spaces are considered part
 	  of the directory name.  To have a space at the start of a directory
 	  name, precede it with a backslash.
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 6.3.  Last change: Oct 08, 2004
+*pi_netrw.txt*  For Vim version 6.3.  Last change: Jul 09, 2005
 
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
@@ -10,17 +10,48 @@
 ==============================================================================
 0. Contents						*netrw-contents*
 
-1.  Netrw Reference.....................................|netrw-ref|
-2.  Network-Oriented File Transfer......................|netrw-xfer|
-3.  Activation..........................................|netrw-activate|
-4.  Transparent File Transfer...........................|netrw-transparent|
-5.  Ex Commands.........................................|netrw-ex|
-6.  Variables and Options...............................|netrw-var|
-7.  Directory Browser...................................|netrw-browse|
-8.  Problems and Fixes..................................|netrw-problems|
-9.  Debugging...........................................|netrw-debug|
-10. History.............................................|netrw-history|
-11. Credits.............................................|netrw-credits|
+1.  Netrw Reference......................................|netrw-ref|
+2.  Network-Oriented File Transfer.......................|netrw-xfer|
+      NETRC..............................................|netrw-netrc|
+      PASSWORD...........................................|netrw-passwd|
+3.  Activation...........................................|netrw-activate|
+4.  Transparent File Transfer............................|netrw-transparent|
+5.  Ex Commands..........................................|netrw-ex|
+6.  Variables and Options................................|netrw-var|
+7.  Directory Browser....................................|netrw-browse| {{{1
+      Maps...............................................|netrw-maps|
+      Exploring..........................................|netrw-explore-cmds|
+      Quick Reference Commands Table.....................|netrw-browse-cmds|
+      Netrw Browser Variables............................|netrw-browse-var|
+      Introduction To Directory Browsing.................|netrw-browse-intro|
+      Directory Exploring Commands.......................|netrw-explore|
+      Refreshing The Listing.............................|netrw-ctrl-l|
+      Going Up...........................................|netrw--|
+      Browsing...........................................|netrw-cr|
+      Long Vs Short Listing..............................|netrw-i|
+      Making A New Directory.............................|netrw-d|
+      Deleting Files Or Directories......................|netrw-delete|
+      Renaming Files Or Directories......................|netrw-move|
+      Hiding Files Or Directories........................|g:netrw-a|
+      Edit File Or Directory Hiding List.................|netrw-h|
+      Browsing With A Horizontally Split Window..........|netrw-o|
+      Preview Window.....................................|netrw-p|
+      Selecting Sorting Style............................|netrw-s|
+      Editing The Sorting Sequence.......................|netrw-S|
+      Reversing Sorting Order............................|netrw-r|
+      Changing To A Predecessor Directory................|netrw-u|
+      Changing To A Successor Directory..................|netrw-U|
+      Browsing With A Vertically Split Window............|netrw-v|
+      Customizing Browsing With A User Function..........|netrw-x|
+      Making The Browsing Directory The Current Directory|netrw-c|
+      Bookmarking A Directory............................|netrw-b|
+      Changing To A Bookmarked Directory.................|netrw-B|
+      Listing Bookmarks And History......................|netrw-q|
+      Improving Directory Browsing.......................|netrw-list-hack| }}}1
+8.  Problems and Fixes...................................|netrw-problems|
+9.  Debugging............................................|netrw-debug|
+10. History..............................................|netrw-history|
+11. Credits..............................................|netrw-credits|
 
 The functionality mentioned here is done via using |standard-plugin|
 techniques.  This plugin is only available if
@@ -177,16 +208,16 @@ by setting a variable (ex. scp uses the 
 which is defaulted to "scp -q").
 
 Ftp, an old protocol, seems to be blessed by numerous implementations.
-Unfortunately, some implementations are noisy (i.e., add junk to the end
+Unfortunately, some implementations are noisy (ie., add junk to the end
 of the file).  Thus, concerned users may decide to write a NetReadFixup()
 function that will clean up after reading with their ftp.  Some Unix systems
-(i.e., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
+(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
 but is not noisy and more convenient, actually, for <netrw.vim> to use.
 Consequently, if "fetch" is executable, it will be used to do reads for
 ftp://... (and http://...) .  See |netrw-var| for more about this.
 
 For rcp, scp, sftp, and http, one may use network-oriented file transfers
-transparently; i.e.
+transparently; ie.
 >
 	vim rcp://[user@]machine/path
 	vim scp://[user@]machine/path
@@ -198,7 +229,7 @@ that file.  Your ftp must be able to use
 	vim ftp://[user@]machine[[:#]portnumber]/path
 <
 However, ftp will often need to query the user for the userid and password.
-The latter will be done "silently"; i.e. asterisks will show up instead of
+The latter will be done "silently"; ie. asterisks will show up instead of
 the actually-typed-in password.  Netrw will retain the userid and password
 for subsequent read/writes from the most recent transfer so subsequent
 transfers (read/write) to or from that machine will take place without
@@ -482,7 +513,7 @@ To handle the SSL certificate dialog for
 down the certificate and place it into /usr/ssl/cert.pem.  This operation
 renders the server treatment as "trusted".
 
-							 	*netrw-fixup*
+					 	*netrw-fixup* *netreadfixup*
 If your ftp for whatever reason generates unwanted lines (such as AUTH
 messages) you may write a NetReadFixup(tmpfile) function:
 >
@@ -521,30 +552,38 @@ from <netrw.vim> itself:
 
 ==============================================================================
 7. Directory Browser	*netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
-     ?..........Help....................................|netrw-help|
-     <cr>.......Browsing................................|netrw-cr|
-     <del>......Deleting Files or Directories...........|netrw-delete|
-     -..........Going Up................................|netrw--|
-     a..........Hiding Files or Directories.............|netrw-a|
-     b..........Bookmarking a Directory.................|netrw-b|
-     B..........Changing to a Bookmarked Directory......|netrw-B|
-     c..........Make Browsing Directory The Current Dir.|netrw-c|
-     d..........Make A New Directory....................|netrw-d|
-     D..........Deleting Files or Directories...........|netrw-D|
-     <c-h>......Edit File/Directory Hiding List.........|netrw-h|
-     i..........Long Listing............................|netrw-i|
-     <c-l>......Refreshing the Listing..................|netrw-ctrl-l|
-     o..........Browsing with a Horizontal Split........|netrw-o|
-     p..........Preview Window..........................|netrw-p|
-     q..........Listing Bookmarks and History...........|netrw-q|
-     r..........Reversing Sorting Order.................|netrw-r|
-     R..........Renaming Files or Directories...........|netrw-R|
-     s..........Selecting Sorting Style.................|netrw-s|
-     S..........Editing the Sorting Sequence............|netrw-S|
-     u..........Changing to a Predecessor Directory.....|netrw-u|
-     U..........Changing to a Successor Directory.......|netrw-U|
-     v..........Browsing with a Vertical Split..........|netrw-v|
-     x..........Customizing Browsing....................|netrw-x|
+
+MAPS   								*netrw-maps*
+     ?................Help.......................................|netrw-help|
+     <cr>.............Browsing...................................|netrw-cr|
+     <del>............Deleting Files or Directories..............|netrw-delete|
+     -................Going Up...................................|netrw--|
+     a................Hiding Files or Directories................|netrw-a|
+     b................Bookmarking a Directory....................|netrw-b|
+     B................Changing to a Bookmarked Directory.........|netrw-B|
+     c................Make Browsing Directory The Current Dir....|netrw-c|
+     d................Make A New Directory.......................|netrw-d|
+     D................Deleting Files or Directories..............|netrw-D|
+     <c-h>............Edit File/Directory Hiding List............|netrw-h|
+     i................Long Listing...............................|netrw-i|
+     <c-l>............Refreshing the Listing.....................|netrw-ctrl-l|
+     o................Browsing with a Horizontal Split...........|netrw-o|
+     p................Preview Window.............................|netrw-p|
+     q................Listing Bookmarks and History..............|netrw-q|
+     r................Reversing Sorting Order....................|netrw-r|
+     R................Renaming Files or Directories..............|netrw-R|
+     s................Selecting Sorting Style....................|netrw-s|
+     S................Editing the Sorting Sequence...............|netrw-S|
+     u................Changing to a Predecessor Directory........|netrw-u|
+     U................Changing to a Successor Directory..........|netrw-U|
+     v................Browsing with a Vertical Split.............|netrw-v|
+     x................Customizing Browsing.......................|netrw-x|
+
+    COMMANDS						*netrw-explore-cmds*
+     :Explore[!]  [dir].Explore directory of current file........|netrw-explore|
+     :Sexplore[!] [dir].Split & Explore directory of current file|netrw-explore|
+     :Hexplore[!] [dir].Horizontal Split & Explore...............|netrw-explore|
+     :Vexplore[!] [dir].Vertical Split & Explore.................|netrw-explore|
 
 QUICK REFERENCE COMMANDS TABLE     			*netrw-browse-cmds*
 >
@@ -581,51 +620,103 @@ NETRW BROWSER VARIABLES					*netrw-brows
 <	g:netrw_alto			change from above splitting to
 					below splitting by setting this
 					variable (see |netrw-o|)
+					 default: =0
+
 	g:netrw_altv			change from left splitting to
 					right splitting by setting this
 					variable (see |netrw-v|)
+					 default: =0
+
 	g:netrw_ftp_browse_reject	ftp can produce a number of errors
 					and warnings that can show up as
 					"directories" and "files" in the
 					listing.  This pattern is used to
-					remove such embedded messages.
+					remove such embedded messages.  By
+					default its value is:
+					 '^total\s\+\d\+$\|
+					 ^Trying\s\+\d\+.*$\|
+					 ^KERBEROS_V\d rejected\|
+					 ^Security extensions not\|
+					 No such file\|
+					 : connect to address [0-9a-fA-F:]*
+					 : No route to host$'
+
+	g:netrw_ssh_browse_reject	ssh can sometimes produce unwanted
+					lines/messages/banners/and whatnot
+					that one doesn't want masquerading
+					as "directories" and "files".  Use
+					this pattern to remove such embedded
+					messages.  By default its value is:
+ 					 '^total\s\+\d\+$'
+
 	g:netrw_keepdir			=1 (default) keep current directory
 					immune from the browsing directory.
 					=0 keep the current directory the
 					same as the browsing directory.
 					The browsing directory is contained in
 					b:netrw_curdir
+
 	g:netrw_list_cmd		command for listing remote directories
+					 default: (if ssh is executable)
+					          "ssh HOSTNAME ls -FLa"
+
 	g:netrw_longlist		if =1, then long listing will be default
+
 	g:netrw_ftp_list_cmd		options for passing along to ftp for
 					directory listing.  Defaults:
 					 unix or g:netrw_cygwin set: : "ls -lF"
 					 otherwise                     "dir"
+
 	g:netrw_list_hide		comma separated list of patterns for
 					hiding files
+					 default: ""
+
 	g:netrw_local_mkdir		command for making a local directory
+					 default: "ssh HOSTNAME mkdir"
+
 	g:netrw_local_rmdir		remove directory command (rmdir)
-	g:netrw_local_rename		rename file/directory command
-					unix-default: rm    win32-default: ren
+					 default: "rmdir"
+
 	g:netrw_maxfilenamelen		=32 by default, selected so as to make
 					long listings fit on 80 column displays.
 					If your screen is wider, and you have
 					file/directory names longer than 32 bytes,
 					you may set this option to keep listings
 					columnar.
+
 	g:netrw_mkdir_cmd		command for making a remote directory
+					 default: "ssh HOSTNAME mkdir"
+
 	g:netrw_rm_cmd			command for removing files
+					 default: "ssh HOSTNAME rm"
+
 	g:netrw_rmdir_cmd		command for removing directories
+					 default: "ssh HOSTNAME rmdir"
+
 	g:netrw_rmf_cmd			command for removing softlinks
+					 default: "ssh HOSTNAME rm -f"
+
 	g:netrw_hide			if true, the hiding list is used
+					 default: =0
+
 	g:netrw_sort_by			sort by "name", "time", or "size"
+					 default: "name"
+
 	g:netrw_sort_direction		sorting direction: "normal" or "reverse"
+					 default: "normal"
+
 	g:netrw_sort_sequence		when sorting by name, first sort by the
 					comma-separated pattern sequence
+					 default: '[\/]$,*,\.bak$,\.o$,\.h$,
+					           \.info$,\.swp$,\.obj$'
+
 	g:netrw_timefmt			specify format string to strftime() (%c)
+					 default: "%c"
+
 	g:netrw_winsize			specify initial size of new o/v windows
+					 default: ""
 
-INTRODUCTION TO DIRECTORY BROWSING			*file-explorer*
+INTRODUCTION TO DIRECTORY BROWSING			*netrw-browse-intro*
 
 Netrw supports the browsing of directories on the local system and on remote
 hosts, including generating listing directories, entering directories, editing
@@ -647,6 +738,31 @@ trailing slash and it will be interprete
 If you'd like to avoid entering the password in for directory listings, scp,
 ssh interaction, etc, see |netrw-list-hack|.
 
+
+DIRECTORY EXPLORING COMMANDS						*netrw-explore*
+
+     :Explore[!]   [dir].Explore directory of current file
+     :Sexplore[!]  [dir].Split & Explore directory of current file
+     :Hexplore[!]  [dir].Horizontal Split & Explore
+     :Vexplore[!]  [dir].Vertical Split & Explore
+
+The Explore command will open the local-directory browser on the current
+file's directory (or on directory [dir] if specified).  The window
+will be split only if the file has been modified, otherwise the
+browsing window will take over that window.  Normally the splitting is
+taken horizontally; the optional ! will use vertical splitting.
+
+Sexplore will always split the window before invoking the local-directory
+browser.  As with Explore, the splitting is normally done horizontally,
+but with the optional ! the splitting will be done vertically.
+
+Hexplore does an Explore with |belowright| horizontal splitting; the
+optional ! does the Explore with |aboveleft| horizontal splitting.
+
+Vexplore does an Explore with |leftabove| vertical splitting; the optiona
+! does an Explore with |topleft| vertical splitting.
+
+
 REFRESHING THE LISTING					*netrw-ctrl-l*
 
 To refresh either a local or remote directory listing, press ctrl-l (<c-l>) or
@@ -677,6 +793,7 @@ Hitting the <cr> (the return key) will s
 Directories will themselves be listed, and files will be opened using the
 protocol given in the original read request.
 
+
 LONG VS SHORT LISTING						*netrw-i*
 
 The short listing format gives just the files' and directories' names.
@@ -694,6 +811,7 @@ new directory's name.  A bare <CR> at th
 directory.  Attempts to make a local directory that already exists (as either
 a file or a directory) will be detected, reported on, and ignored.
 
+
 DELETING FILES OR DIRECTORIES			*netrw-delete* *netrw-D*
 
 Deleting/removing files and directories involves moving the cursor to the
@@ -740,15 +858,22 @@ One may rename a block of files and dire
 the V (|linewise-visual|).
 
 
-HIDING FILES OR DIRECTORIES		*netrw-a* *g:netrw_list_hide*
+HIDING FILES OR DIRECTORIES		*g:netrw-a* *g:netrw_list_hide*
 
 Netrw's browsing facility allows one to use the hiding list in one of
 three ways: ignore it, hide files which match, and show only those files
-which match.  The g:netrw_list_hide variable holds a comma delimited list
-of patterns (ex. \.obj) which specify the hiding list. (also see |netrw-h|)
+which match.  The "a" map allows the user to cycle about these three ways.
+
+The g:netrw_list_hide variable holds a comma delimited list of patterns
+(ex. \.obj) which specify the hiding list. (also see |netrw-h|)  To
+set the hiding list, use the <c-h> map.  As an example, to hide files
+which begin with a ".", one may use the <c-h> map to set the hiding
+list to '^\..*' (or one may put  let g:netrw_list_hide= '^\..*' in
+one's <.vimrc>).  One may then use the "a" key to show all files,
+hide matching files, or to show only the matching files.
 
 
-EDIT FILE OR DIRECTORY HIDING LIST				*netrw-h*
+EDIT FILE OR DIRECTORY HIDING LIST		*netrw-h* *netrw-edithide*
 
 The "<ctrl-h>" map brings up a requestor allowing the user to change the
 file/directory hiding list.  The hiding list consists of one or more patterns
@@ -756,7 +881,7 @@ delimited by commas.  Files and/or direc
 either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
 
 
-BROWSING WITH A HORIZONTALLY SPLIT WINDOW			*netrw-o*
+BROWSING WITH A HORIZONTALLY SPLIT WINDOW		*netrw-o* *netrw-horiz*
 
 Normally one enters a file or directory using the <cr>.  However, the "o" map
 allows one to open a new window to hold the new directory listing or file.  A
@@ -770,20 +895,21 @@ with the new window and cursor at the bo
 
 in your <.vimrc>.
 
-PREVIEW WINDOW
+
+PREVIEW WINDOW					*netrw-p* *netrw-preview*
 
 One may use a preview window (currently only for local browsing) by using
 the "p" key when the cursor is atop the desired filename to be previewed.
 
 
-SELECTING SORTING STYLE						*netrw-s*
+SELECTING SORTING STYLE				*netrw-s* *netrw-sort*
 
 One may select the sorting style by name, time, or (file) size.  The
 "s" map allows one to circulate among the three choices; the directory
 listing will automatically be refreshed to reflect the selected style.
 
 
-EDITING THE SORTING SEQUENCE					*netrw-S*
+EDITING THE SORTING SEQUENCE		*netrw-S* *netrw-sortsequence*
 
 When "Sorted by" is name, one may specify priority via the sorting
 sequence (g:netrw_sort_sequence).  The sorting sequence typically
@@ -798,13 +924,13 @@ the g:netrw_sort_sequence variable (eith
 or by using the "S" map.
 
 
-REVERSING SORTING ORDER						*netrw-r*
+REVERSING SORTING ORDER			*netrw-r* *netrw-reverse*
 
 One may toggle between normal and reverse sorting order by pressing the
 "r" key.
 
 
-CHANGING TO A PREDECESSOR DIRECTORY				*netrw-u*
+CHANGING TO A PREDECESSOR DIRECTORY		*netrw-u* *netrw-updir*
 
 Every time you change to a new directory (new for the current session),
 netrw will save the directory in a recently-visited directory history
@@ -813,7 +939,7 @@ list (unless g:netrw_dirhistmax is zero;
 the opposite, see |netrw-U|.
 
 
-CHANGING TO A SUCCESSOR DIRECTORY				*netrw-U*
+CHANGING TO A SUCCESSOR DIRECTORY		*netrw-U* *netrw-downdir*
 
 With the "U" map, one can change to a later directory (successor).
 This map is the opposite of the "u" map. (see |netrw-u|)  Use the
@@ -835,7 +961,7 @@ with the new window and cursor at the ri
 in your <.vimrc>.
 
 
-CUSTOMIZING BROWSING WITH A USER FUNCTION			*netrw-x*
+CUSTOMIZING BROWSING WITH A USER FUNCTION		*netrw-x* *netrw-handler*
 
 One may "enter" a file with a special handler, thereby firing up a browser or
 other application, for example, on a file by hitting the "x" key.  Presumably
@@ -886,13 +1012,13 @@ Any count may be used to reference any o
 for how to bookmark a directory and |netrw-q| for how to list them.
 
 
-LISTING BOOKMARKS AND HISTORY					*netrw-q*
+LISTING BOOKMARKS AND HISTORY			*netrw-q* *netrw-listbookmark*
 
 Pressing "q" will list the bookmarked directories and directory traversal
 history (query). (see |netrw-b|, |netrw-B|, |netrw-u|, and |netrw-U|)
 
 
-IMPROVING DIRECTORY BROWSING				*netrw-list-hack*
+IMPROVING DIRECTORY BROWSING				*netrw-listhack*
 
 Especially with the remote directory browser, constantly entering the password
 is tedious.
@@ -1017,6 +1143,23 @@ which is loaded automatically at startup
 ==============================================================================
 10. History						*netrw-history*
 
+	v56: * LocalBrowse now saves autochdir setting, unsets it, and
+	       restores it before returning.
+	     * using vim's rename() instead of system + local_rename variable
+	v55: * -bar used with :Explore :Sexplore etc to allow multiple
+	       commands to be separated by |s
+	     * browser listings now use the "nowrap" option
+	     * browser: some unuseful error messages now suppressed
+	v54: * For backwards compatibility, Explore and Sexplore have been
+	       implemented.  In addition, Hexplore and Vexplore commands
+	       are available, too.
+	     * <amatch> used instead of <afile> in the transparency
+	       support (BufReadCmd, FileReadCmd, FileWriteCmd)
+	     * ***netrw*** prepended to various error messages netrw may emit
+	     * g:netrw_port used instead of b:netrw_port for scp
+	     * any leading [:#] is removed from port numbers
+	v53: * backslashes as well as slashes placed in various patterns
+	       (ex. g:netrw_sort_sequence) to better support Windows
 	v52: * nonumber'ing now set for browsing buffers
 	     * when the hiding list hid all files, error messages ensued. Fixed
 	     * when browsing, swf is set, but directory is not set, when netrw
@@ -1120,4 +1263,4 @@ 11. Credits						*netrw-credits*
 	Doug Claar		-- modifications to test for success with ftp operation
 
 ==============================================================================
- vim:tw=78:ts=8:ft=help:norl:
+ vim:tw=78:ts=8:ft=help:norl:fdm=marker
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4864,7 +4864,6 @@ fcs_reason-variable	eval.txt	/*fcs_reaso
 feature-list	eval.txt	/*feature-list*
 fetch	pi_netrw.txt	/*fetch*
 file-browser-5.2	version5.txt	/*file-browser-5.2*
-file-explorer	pi_netrw.txt	/*file-explorer*
 file-formats	editing.txt	/*file-formats*
 file-pattern	autocmd.txt	/*file-pattern*
 file-read	insert.txt	/*file-read*
@@ -4980,6 +4979,7 @@ g'a	motion.txt	/*g'a*
 g,	motion.txt	/*g,*
 g0	motion.txt	/*g0*
 g8	various.txt	/*g8*
+g:netrw-a	pi_netrw.txt	/*g:netrw-a*
 g:netrw_list_cmd	pi_netrw.txt	/*g:netrw_list_cmd*
 g:netrw_list_hide	pi_netrw.txt	/*g:netrw_list_hide*
 g:netrw_rm_cmd	pi_netrw.txt	/*g:netrw_rm_cmd*
@@ -5162,7 +5162,6 @@ hebrew	hebrew.txt	/*hebrew*
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
-help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5723,6 +5722,7 @@ netbeans-run	netbeans.txt	/*netbeans-run
 netbeans-setup	netbeans.txt	/*netbeans-setup*
 netbeans-support	netbeans.txt	/*netbeans-support*
 netbeans.txt	netbeans.txt	/*netbeans.txt*
+netreadfixup	pi_netrw.txt	/*netreadfixup*
 netrw	pi_netrw.txt	/*netrw*
 netrw--	pi_netrw.txt	/*netrw--*
 netrw-B	pi_netrw.txt	/*netrw-B*
@@ -5730,13 +5730,13 @@ netrw-D	pi_netrw.txt	/*netrw-D*
 netrw-R	pi_netrw.txt	/*netrw-R*
 netrw-S	pi_netrw.txt	/*netrw-S*
 netrw-U	pi_netrw.txt	/*netrw-U*
-netrw-a	pi_netrw.txt	/*netrw-a*
 netrw-activate	pi_netrw.txt	/*netrw-activate*
 netrw-b	pi_netrw.txt	/*netrw-b*
 netrw-bookmark	pi_netrw.txt	/*netrw-bookmark*
 netrw-bookmarks	pi_netrw.txt	/*netrw-bookmarks*
 netrw-browse	pi_netrw.txt	/*netrw-browse*
 netrw-browse-cmds	pi_netrw.txt	/*netrw-browse-cmds*
+netrw-browse-intro	pi_netrw.txt	/*netrw-browse-intro*
 netrw-browse-var	pi_netrw.txt	/*netrw-browse-var*
 netrw-c	pi_netrw.txt	/*netrw-c*
 netrw-cadaver	pi_netrw.txt	/*netrw-cadaver*
@@ -5749,24 +5749,34 @@ netrw-d	pi_netrw.txt	/*netrw-d*
 netrw-debug	pi_netrw.txt	/*netrw-debug*
 netrw-delete	pi_netrw.txt	/*netrw-delete*
 netrw-dir	pi_netrw.txt	/*netrw-dir*
+netrw-downdir	pi_netrw.txt	/*netrw-downdir*
+netrw-edithide	pi_netrw.txt	/*netrw-edithide*
 netrw-ex	pi_netrw.txt	/*netrw-ex*
+netrw-explore	pi_netrw.txt	/*netrw-explore*
+netrw-explore-cmds	pi_netrw.txt	/*netrw-explore-cmds*
 netrw-file	pi_netrw.txt	/*netrw-file*
 netrw-fixup	pi_netrw.txt	/*netrw-fixup*
 netrw-ftp	pi_netrw.txt	/*netrw-ftp*
 netrw-h	pi_netrw.txt	/*netrw-h*
+netrw-handler	pi_netrw.txt	/*netrw-handler*
 netrw-help	pi_netrw.txt	/*netrw-help*
 netrw-history	pi_netrw.txt	/*netrw-history*
+netrw-horiz	pi_netrw.txt	/*netrw-horiz*
 netrw-i	pi_netrw.txt	/*netrw-i*
 netrw-list	pi_netrw.txt	/*netrw-list*
-netrw-list-hack	pi_netrw.txt	/*netrw-list-hack*
+netrw-listbookmark	pi_netrw.txt	/*netrw-listbookmark*
+netrw-listhack	pi_netrw.txt	/*netrw-listhack*
+netrw-maps	pi_netrw.txt	/*netrw-maps*
 netrw-move	pi_netrw.txt	/*netrw-move*
 netrw-netrc	pi_netrw.txt	/*netrw-netrc*
 netrw-nread	pi_netrw.txt	/*netrw-nread*
 netrw-nwrite	pi_netrw.txt	/*netrw-nwrite*
 netrw-o	pi_netrw.txt	/*netrw-o*
 netrw-options	pi_netrw.txt	/*netrw-options*
+netrw-p	pi_netrw.txt	/*netrw-p*
 netrw-passwd	pi_netrw.txt	/*netrw-passwd*
 netrw-path	pi_netrw.txt	/*netrw-path*
+netrw-preview	pi_netrw.txt	/*netrw-preview*
 netrw-problems	pi_netrw.txt	/*netrw-problems*
 netrw-protocol	pi_netrw.txt	/*netrw-protocol*
 netrw-q	pi_netrw.txt	/*netrw-q*
@@ -5774,10 +5784,14 @@ netrw-r	pi_netrw.txt	/*netrw-r*
 netrw-read	pi_netrw.txt	/*netrw-read*
 netrw-ref	pi_netrw.txt	/*netrw-ref*
 netrw-rename	pi_netrw.txt	/*netrw-rename*
+netrw-reverse	pi_netrw.txt	/*netrw-reverse*
 netrw-s	pi_netrw.txt	/*netrw-s*
+netrw-sort	pi_netrw.txt	/*netrw-sort*
+netrw-sortsequence	pi_netrw.txt	/*netrw-sortsequence*
 netrw-transparent	pi_netrw.txt	/*netrw-transparent*
 netrw-u	pi_netrw.txt	/*netrw-u*
 netrw-uidpass	pi_netrw.txt	/*netrw-uidpass*
+netrw-updir	pi_netrw.txt	/*netrw-updir*
 netrw-urls	pi_netrw.txt	/*netrw-urls*
 netrw-v	pi_netrw.txt	/*netrw-v*
 netrw-var	pi_netrw.txt	/*netrw-var*
--- a/runtime/plugin/netrw.vim
+++ b/runtime/plugin/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
-" last change:	Dec 29, 2004
+" Last Change:	Aug 01, 2005
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version:	54
+" Version:	56
 " License:	Vim License  (see vim's :help license)
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves
@@ -10,13 +10,13 @@
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 
 " ---------------------------------------------------------------------
-" Prevent Reloading: {{{1
+" Load Once: {{{1
 if exists("g:loaded_netrw") || &cp
   finish
 endif
-let g:loaded_netrw  = "v54"
-let s:save_cpo      = &cpo
+let g:loaded_netrw  = "v56"
 let loaded_explorer = 1
+let s:keepcpo       = &cpo
 set cpo&vim
 
 " ---------------------------------------------------------------------
@@ -43,7 +43,7 @@ if !exists("g:netrw_list_cmd")
   " provide a default listing command
   let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
  else
-"  call Decho("ssh is not executable, can't do remote directory exploring")
+"  call Decho("ssh is not executable, can't do remote directory exploring with ssh")
   let g:netrw_list_cmd= ""
  endif
 endif
@@ -100,15 +100,6 @@ endif
 if !exists("g:netrw_local_rmdir")
  let g:netrw_local_rmdir= "rmdir"
 endif
-if !exists("g:netrw_local_rename")
- if g:netrw_cygwin
-  let g:netrw_local_rename= "mv"
- elseif has("win32") || has("win95") || has("win64") || has("win16")
-  let g:netrw_local_rename= "rename"
- elseif has("unix")
-  let g:netrw_local_rename= "mv"
- endif
-endif
 if !exists("g:netrw_local_mkdir")
  let g:netrw_local_mkdir= "mkdir"
 endif
@@ -216,30 +207,36 @@ endif
 if version >= 600
  augroup FileExplorer
   au!
-  au BufEnter * call <SID>LocalBrowse(expand("<afile>"))
+  au BufEnter * call <SID>LocalBrowse(expand("<amatch>"))
  augroup END
  " Network Handler: {{{2
  augroup Network
   au!
   if has("win32") || has("win95") || has("win64") || has("win16")
-   au BufReadCmd  file://*		exe "silent doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
+   au BufReadCmd  file://*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
   else
-   au BufReadCmd  file:///*		exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
-   au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
+   au BufReadCmd  file:///*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+   au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
   endif
-  au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
-  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread "   .expand("<afile>")|exe "silent doau FileReadPost ".expand("<afile>")
-  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
-  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau FileWritePost ".expand("<afile>")
+  au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
+  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread "   .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
+  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
+  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
  augroup END
 endif
 
 " ------------------------------------------------------------------------
-" Commands: :Nread, :Nwrite, and :NetUserPass {{{1
-com! -nargs=*		Nread		call <SID>NetSavePosn()<bar>call <SID>NetRead(<f-args>)<bar>call <SID>NetRestorePosn()
-com! -range=% -nargs=*	Nwrite		call <SID>NetSavePosn()<bar><line1>,<line2>call <SID>NetWrite(<f-args>)<bar>call <SID>NetRestorePosn()
+" Commands: :Nread, :Nwrite, :NetUserPass {{{1
+com! -nargs=*		Nread		call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn()
+com! -range=% -nargs=*	Nwrite		call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn()
 com! -nargs=*		NetUserPass	call NetUserPass(<f-args>)
 
+" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1
+com! -nargs=? -bar -bang  	Explore		call s:Explore(0,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang  	Sexplore	call s:Explore(1,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang  	Hexplore	call s:Explore(1,2+<bang>0,<q-args>)
+com! -nargs=? -bar -bang  	Vexplore	call s:Explore(1,4+<bang>0,<q-args>)
+
 " ------------------------------------------------------------------------
 " NetSavePosn: saves position of cursor on screen {{{1
 fun! s:NetSavePosn()
@@ -352,7 +349,7 @@ fun! s:NetRead(...)
        let ichoice     = ichoice + 1
        if ichoice > a:0
        	if !exists("g:netrw_quiet")
-         echoerr "Unbalanced string in filename '". wholechoice ."'"
+         echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
          call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 	endif
 "        call Dret("NetRead")
@@ -436,10 +433,10 @@ fun! s:NetRead(...)
       exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
      endif
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
-     if getline(1) !~ "^$" && !exists("g:netrw_quiet")
+     if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
       let debugkeep= &debug
       set debug=msg
-      echoerr getline(1)
+      echoerr "***netrw*** ".getline(1)
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
       let &debug= debugkeep
      endif
@@ -485,7 +482,7 @@ fun! s:NetRead(...)
     if getline(1) !~ "^$"
 "     call Decho("error<".getline(1).">")
      if !exists("g:netrw_quiet")
-      echoerr getline(1)
+      echoerr "***netrw*** ".getline(1)
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
     endif
@@ -518,7 +515,7 @@ fun! s:NetRead(...)
 "    call Decho("read via http (method #5)")
     if g:netrw_http_cmd == ""
      if !exists("g:netrw_quiet")
-      echoerr "neither wget nor fetch command is available"
+      echoerr "***netrw*** neither wget nor fetch command is available"
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
      exit
@@ -596,7 +593,7 @@ fun! s:NetRead(...)
    elseif     b:netrw_method  == 8	" read with fetch
     if g:netrw_fetch_cmd == ""
      if !exists("g:netrw_quiet")
-      echoerr "fetch command not available"
+      echoerr "***netrw*** fetch command not available"
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
      exit
@@ -678,17 +675,23 @@ fun! s:NetGetFile(readcmd, fname, method
  
   if a:readcmd[0] == '0'
   " get file into buffer
+
    " record remote filename
-   let rfile= bufname("%")
-"   call Decho("edit remotefile<".rfile.">")
+   let rfile= bufname(".")
+"   call Decho("remotefile<".rfile.">")
+"   call Dredir("ls!","starting buffer list")
+
    " rename the current buffer to the temp file (ie. fname)
-   exe "keepalt file ".fname
+   keepalt exe "file ".fname
+"   call Dredir("ls!","after renaming current buffer to <".fname.">")
+
    " edit temporary file
    e
+"   call Dredir("ls!","after editing temporary file")
+
    " rename buffer back to remote filename
-   exe "keepalt file ".rfile
-   " wipe out the buffer with the temp file name
-   exe "bwipe ".fname
+   keepalt exe "file ".rfile
+"   call Dredir("ls!","renaming buffer back to remote filename<".rfile.">")
    let line1 = 1
    let line2 = line("$")
 
@@ -712,6 +715,8 @@ fun! s:NetGetFile(readcmd, fname, method
   if exists("*NetReadFixup")
 "   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
    call NetReadFixup(a:method, line1, line2)
+" else " Decho
+"  call Decho("NetReadFixup() not called, doesn't exist")
   endif
 
   " update the Buffers menu
@@ -787,7 +792,7 @@ fun! s:NetWrite(...) range
        let ichoice    = ichoice + 1
        if choice > a:0
        	if !exists("g:netrw_quiet")
-         echoerr "Unbalanced string in filename '". wholechoice ."'"
+         echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
          call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 	endif
 "        call Dret("NetWrite")
@@ -858,7 +863,7 @@ fun! s:NetWrite(...) range
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if !exists("g:netrw_quiet")
-      echoerr getline(1)
+      echoerr "***netrw*** ".getline(1)
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
      let mod=1
@@ -898,7 +903,7 @@ fun! s:NetWrite(...) range
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if  !exists("g:netrw_quiet")
-      echoerr getline(1)
+      echoerr "***netrw*** ".getline(1)
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
      let mod=1
@@ -927,7 +932,7 @@ fun! s:NetWrite(...) range
    " http: NetWrite Method #5
    elseif     b:netrw_method == 5
     if !exists("g:netrw_quiet")
-     echoerr "***warning*** currently <netrw.vim> does not support writing using http:"
+     echoerr "***netrw*** currently <netrw.vim> does not support writing using http:"
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
  
@@ -1010,8 +1015,10 @@ fun! s:NetWrite(...) range
 "  call Dret("NetWrite")
 endfun
 
-" ------------------------------------------------------------------------
-"  Browsing Support For Remote Directories And Files:    {{{1
+" ===========================================
+"  Remote Directory Browsing Support:    {{{1
+" ===========================================
+
 " NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2
 "  of the contents of a remote directory.  It is assumed that the
 "  g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
@@ -1040,7 +1047,7 @@ fun! <SID>NetBrowse(dirname)
   endif
 
   " make this buffer modifiable
-  setlocal ma
+  setlocal ma nonu nowrap
 
   " analyze a:dirname and g:netrw_list_cmd
   let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
@@ -1048,7 +1055,7 @@ fun! <SID>NetBrowse(dirname)
 "  call Decho("dirpat<".dirpat.">")
   if dirname !~ dirpat
    if !exists("g:netrw_quiet")
-    echoerr "NetBrowse: I don't understand your dirname<".dirname.">"
+    echoerr "***netrw*** netrw doesn't understand your dirname<".dirname.">"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
 "   call Dret("NetBrowse : badly formatted dirname<".dirname.">")
@@ -1080,7 +1087,7 @@ fun! <SID>NetBrowse(dirname)
 
   " optionally sort by time (-t) or by size (-S)
   if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]"
-   echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
+   echoerr "***netrw*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   else
    if g:netrw_sort_by =~ "^t"
@@ -1185,7 +1192,7 @@ fun! <SID>NetBrowse(dirname)
   exe 'nnoremap <buffer> <silent> R	:exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
   exe 'vnoremap <buffer> <silent> R	:call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
   nnoremap <buffer> ?			:he netrw-browse-cmds<cr>
-  setlocal ma nonu
+  setlocal ma nonu nowrap
 
   " Set up the banner
 "  call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method.">")
@@ -1251,9 +1258,9 @@ fun! <SID>NetBrowse(dirname)
     keepjumps norm! 0
 
     " more cleanup
-    exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
-    exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#'
-    exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#'
+    exe 'keepjumps silent! '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+    exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+    exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
    endif
 
   else
@@ -1307,7 +1314,11 @@ fun! <SID>NetBrowse(dirname)
    if line("$") >= s:netrw_bannercnt
     if g:netrw_sort_by =~ "^n"
      call s:SetSort()
-     exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     if v:version < 700
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     else
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+     endif
      exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
     endif
     if g:netrw_longlist
@@ -1459,7 +1470,7 @@ fun! <SID>NetBrowseRm(usrhost,path) rang
 "       call Decho("returned=".ret." errcode=".v:shell_error)
      
        if v:shell_error != 0 && !exists("g:netrw_quiet")
-        echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+        echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
         call inputsave()|call input("Press <cr> to continue")|call inputrestore()
        endif
       endif
@@ -1669,14 +1680,14 @@ fun! NetBrowseFtpCmd(path,cmd)
 
   " cleanup for Windows
   if has("win32") || has("win95") || has("win64") || has("win16")
-   keepjumps silent! %s/\r$//
+   keepjumps silent!! %s/\r$//e
   endif
   if a:cmd == "dir"
    " infer directory/link based on the file permission string
-   keepjumps silent g/d\%([-r][-w][-x]\)\{3}/s@$@/@
-   keepjumps silent g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+   keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+   keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
    if !g:netrw_longlist
-    exe "keepjumps silent ".curline.',$s/^\%(\S\+\s\+\)\{8}//'
+    exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
    endif
   endif
 
@@ -1782,7 +1793,7 @@ fun! <SID>NetLongList(mode)
 endfun
 
 " ---------------------------------------------------------------------
-" NetSaveWordPosn: used by the "s" command in both remote and local
+" NetSaveWordPosn: used by the "s" command in both remote and local {{{2
 " browsing.  Along with NetRestoreWordPosn(), it keeps the cursor on
 " the same word even though the sorting has changed its order of appearance.
 fun! s:NetSaveWordPosn()
@@ -1792,7 +1803,7 @@ fun! s:NetSaveWordPosn()
 endfun
 
 " ---------------------------------------------------------------------
-" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above
+" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2
 fun! s:NetRestoreWordPosn()
 "  call Dfunc("NetRestoreWordPosn()")
   silent! call search(s:netrw_saveword,'w')
@@ -1800,7 +1811,7 @@ fun! s:NetRestoreWordPosn()
 endfun
 
 " ---------------------------------------------------------------------
-" NetMakeDir: this function makes a directory (both local and remote)
+" NetMakeDir: this function makes a directory (both local and remote) {{{2
 fun! <SID>NetMakeDir(usrhost)
 "  call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)")
 
@@ -1825,7 +1836,7 @@ fun! <SID>NetMakeDir(usrhost)
 "   call Decho("fullnewdir<".fullnewdir.">")
    if isdirectory(fullnewdir)
     if !exists("g:netrw_quiet")
-     echoerr "***warning*** <".newdirname."> is already a directory!"
+     echoerr "***netrw*** <".newdirname."> is already a directory!"
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
 "    call Dret("NetMakeDir : directory<".newdirname."> exists previously")
@@ -1833,14 +1844,25 @@ fun! <SID>NetMakeDir(usrhost)
    endif
    if filereadable(fullnewdir)
     if !exists("g:netrw_quiet")
-     echoerr "***warning*** <".newdirname."> is already a file!"
+     echoerr "***netrw*** <".newdirname."> is already a file!"
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
 "    call Dret("NetMakeDir : file<".newdirname."> exists previously")
     return
    endif
-"   call Decho("exe silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"')
-   exe "silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"'
+
+   " requested new local directory is neither a pre-existing file or
+   " directory, so make it!
+   if exists("*mkdir")
+    call mkdir(fullnewdir,"p")
+   else
+    let netrw_origdir= s:NetGetcwd(1)
+    exe 'cd '.b:netrw_curdir
+"    call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">")
+"    call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"')
+    exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"'
+    if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+   endif
 
    if v:shell_error == 0
     " refresh listing
@@ -1852,7 +1874,7 @@ fun! <SID>NetMakeDir(usrhost)
     exe "norm! ".hline."G0z\<CR>"
     exe linenum
    elseif !exists("g:netrw_quiet")
-    echoerr "***warning*** unable to make directory<".newdirname.">"
+    echoerr "***netrw*** unable to make directory<".newdirname.">"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    redraw!
@@ -1872,7 +1894,7 @@ fun! <SID>NetMakeDir(usrhost)
     exe "norm! ".hline."G0z\<CR>"
     exe linenum
    elseif !exists("g:netrw_quiet")
-    echoerr "***warning*** unable to make directory<".newdirname.">"
+    echoerr "***netrw*** unable to make directory<".newdirname.">"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    redraw!
@@ -1882,7 +1904,7 @@ fun! <SID>NetMakeDir(usrhost)
 endfun
 
 " ---------------------------------------------------------------------
-"  NetBookmarkDir:
+"  NetBookmarkDir: {{{2
 "    0: bookmark the current directory
 "    1: change to the bookmarked directory
 fun! <SID>NetBookmarkDir(chg,curdir)
@@ -1974,8 +1996,9 @@ fun! <SID>NetBookmarkDir(chg,curdir)
 "  call Dret("NetBookmarkDir")
 endfun
 
-" ---------------------------------------------------------------------
-"  Browsing Support For Local Directories And Files:    {{{1
+" ==========================================
+"  Local Directory Browsing Support:    {{{1
+" ==========================================
 
 " ---------------------------------------------------------------------
 " LocalBrowse: supports local file/directory browsing {{{2
@@ -1995,107 +2018,43 @@ fun! <SID>LocalBrowse(dirname)
 
   if v:version < 603
    if !exists("g:netrw_quiet")
-    echoerr "vim version<".v:version."> too old for browsing with netrw"
+    echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
 "   call Dret("LocalBrowse : vim version<".v:version."> too old")
    return
   endif
 
+  " record autochdir setting and then insure its unset (tnx to David Fishburn)
+  let keep_autochdir= &autochdir
+  set noautochdir
+
   " record and change current directory
-  let netrw_origdir= s:NetGetcwd(1)
-  try
-    cd -
-    let netrw_altdir= s:NetGetcwd(1)
-    cd -
-  catch
-    let netrw_altdir= ''
-  endtry
-  exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape)
-"  call Decho("dirname<".a:dirname."> buf#".bufnr("%")." winnr=".winnr())
+  let b:netrw_curdir= substitute(a:dirname,'\\','/','ge')
+  if b:netrw_curdir =~ '[/\\]$'
+   let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
+  endif
+"  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
+  " make netrw's idea of the current directory vim's if the user wishes
+  if g:netrw_keepdir
+"   call Decho("change directory: cd ".b:netrw_curdir)
+   exe 'cd '.b:netrw_curdir
+  endif
+
+  " change the name of the buffer to reflect the b:netrw_curdir
+  exe 'silent file '.escape(b:netrw_curdir,s:netrw_cd_escape)
 
   " make this buffer modifiable
   setlocal ma
 
-  " disable 'autochdir', it breaks things
-  set noautochdir
-
   " ---------------------------
   "  Perform Directory Listing:
-"  call Decho("Perform directory listing...")
-  " set up new buffer and map
-  " dirname   : current working directory, no escapes, has trailing /
-  " dirnamens : dirname, but with no trailing slash
-  " dirnamenr : buffer number containing dirnamens
-  " dirnamebuf: buffer's idea of dirname, with all \ -> /
-  let dirname    = s:NetGetcwd(0)
-  let dirnamens  = substitute(dirname,'[\/]$','','e')
-  let dirnamenr  = bufnr(dirnamens.'$')
-  let dirnamebuf = substitute(bufname(dirnamenr),'\\','/','ge')
-"  call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr))
-
-  if dirnamenr != 0 && dirnamebuf != dirnamens
-   " try keeping the trailing slash
-   let dirnamenr = bufnr(dirname.'$')
-"   call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)")
-  endif
-
-  if dirnamenr != -1
-   " buffer already exists (hidden), so switch to it!
-"   call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists")
-"   call Dredir("ls!")
-   exe "b ".dirnamenr
-   exe 'silent! cd '.escape(dirname,s:netrw_cd_escape)
-"   call Decho("changed directory to<".dirname.">")
-   if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir")
-    if b:netrw_curdir == dirname
-"     call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr)
-     if g:netrw_keepdir
-       if netrw_altdir != ''
-	 exe 'keepjumps cd '.netrw_altdir
-       endif
-       exe 'keepjumps cd '.netrw_origdir
-     endif
-     return
-    endif
-   endif
-"   call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
-"   call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
-   setlocal ma
-   keepjumps %d
-   let curdir= substitute(substitute(expand("%"),'\\','/','ge'),'[^/]$','&/','e')
-   if curdir != dirname
-    " set standard browser options on buffer
-    setlocal bt=nofile bh=hide nobl noswf
-    exe 'silent file '.escape(dirname,s:netrw_cd_escape)
-"    call Decho("errmsg1<".v:errmsg.">")
-"    call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
-"    call Decho("yielding actual bufname<".bufname("%").">")
-   endif
-  else
-"   call Decho("generate new buffer named<".escape(dirname,' #').">")
-   silent! enew!
-   " set standard browser options on buffer
-   setlocal bt=nofile bh=hide nobl noswf nonu
-   exe 'silent file '.substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e')
-"   call Decho("errmsg2<".v:errmsg.">")
-"   call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e').">")
-"   call Decho("yielding actual bufname<".bufname("%").">")
-  endif
-  exe "setlocal ts=".g:netrw_maxfilenamelen
-
-  if bufname("#") == "" && bufnr("#") != -1
-   " the file command produces a lot of [No File] buffers
-"   call Decho("wiping out nofile buffer#".bufnr("#"))
-   exe bufnr("#")."bwipe"
-  endif
 
   " save current directory on directory history list
-  call <SID>NetBookmarkDir(3,s:NetGetcwd(0))
+  call <SID>NetBookmarkDir(3,b:netrw_curdir)
 
   " set up all the maps
 "  call Decho("Setting up local browser maps")
-  let b:netrw_curdir= s:NetGetcwd(1)
   nnoremap <buffer> <silent> <cr>	:exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
   nnoremap <buffer> <silent> <c-l>	:exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr>
   nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
@@ -2131,7 +2090,7 @@ fun! <SID>LocalBrowse(dirname)
   keepjumps put ='\" ============================================================================'
   keepjumps 1d
   keepjumps put ='\" Directory Listing                                              (netrw '.g:loaded_netrw.')'
-  keepjumps put ='\"   '.dirname
+  keepjumps put ='\"   '.b:netrw_curdir
   let s:netrw_bannercnt= 3
 
   let sortby= g:netrw_sort_by
@@ -2171,7 +2130,7 @@ fun! <SID>LocalBrowse(dirname)
 "  call Decho("bannercnt=".s:netrw_bannercnt)
 
   " generate the requested directory listing
-  call LocalBrowseList(dirname)
+  call LocalBrowseList()
 
   " manipulate the directory listing (hide, sort)
   setlocal ft=netrwlist
@@ -2182,10 +2141,18 @@ fun! <SID>LocalBrowse(dirname)
    if line("$") >= s:netrw_bannercnt
     if g:netrw_sort_by =~ "^n"
      call s:SetSort()
-     exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     if v:version < 700
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     else
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+     endif
      exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
     else
-     exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     if v:version < 700
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
+     else
+      exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
+     endif
      exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e'
     endif
    endif
@@ -2193,30 +2160,25 @@ fun! <SID>LocalBrowse(dirname)
   exe s:netrw_bannercnt
 
   setlocal noma nomod nonu
-  if g:netrw_keepdir
-    if netrw_altdir != ''
-      exe 'keepjumps cd '.netrw_altdir
-    endif
-    exe 'keepjumps cd '.netrw_origdir
-  endif
+  let &autochdir= keep_autochdir
 
 "  call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
 endfun
 
 " ---------------------------------------------------------------------
 "  LocalBrowseList: does the job of "ls" for local directories {{{2
-fun! LocalBrowseList(dirname)
-"  call Dfunc("LocalBrowseList(dirname<".a:dirname.">)")
+fun! LocalBrowseList()
+"  call Dfunc("LocalBrowseList() b:netrw_curdir<".b:netrw_curdir.">")
 
   " get the list of files contained in the current directory
-  let dirname    = escape(a:dirname,s:netrw_glob_escape)
-  let dirnamelen = strlen(a:dirname)
-  let filelist   = glob(dirname."*")
+  let dirname    = escape(b:netrw_curdir,s:netrw_glob_escape)
+  let dirnamelen = strlen(b:netrw_curdir)
+  let filelist   = glob(dirname."/*")
 "  call Decho("glob(dirname<".dirname.">,*)=".filelist)
   if filelist != ""
    let filelist= filelist."\n"
   endif
-  let filelist= filelist.glob(dirname.".*")
+  let filelist= filelist.glob(dirname."/.*")
 "  call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*"))
 
   " if the directory name includes a "$", and possibly other characters,
@@ -2226,13 +2188,13 @@ fun! LocalBrowseList(dirname)
    if filelist == ""
     let filelist= dirname."."
    else
-    let filelist= filelist."\n".a:dirname."."
+    let filelist= filelist."\n".b:netrw_curdir."."
    endif
 "  call Decho("filelist<".filelist.">")
   endif
   if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)'
 "   call Decho("forcibly tacking on ..")
-   let filelist= filelist."\n".a:dirname.".."
+   let filelist= filelist."\n".b:netrw_curdir.".."
 "  call Decho("filelist<".filelist.">")
   endif
   let filelist= substitute(filelist,'\n\{2,}','\n','ge')
@@ -2243,41 +2205,47 @@ fun! LocalBrowseList(dirname)
 
   while filelist != ""
    if filelist =~ '\n'
-    let file     = substitute(filelist,'\n.*$','','e')
+    let filename = substitute(filelist,'\n.*$','','e')
     let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
    else
-    let file     = filelist
+    let filename = filelist
     let filelist = ""
    endif
-   let pfile= file
-   if isdirectory(file)
-    let pfile= file."/"
+   let pfile= filename
+   if isdirectory(filename)
+    let pfile= filename."/"
    endif
+   let pfile= substitute(pfile,'^/','','e')
    if pfile =~ '//$'
     let pfile= substitute(pfile,'//$','/','e')
    endif
    let pfile= strpart(pfile,dirnamelen)
+"   call Decho(" ")
+"   call Decho("filename<".filename.">")
+"   call Decho("pfile   <".pfile.">")
+
    if g:netrw_longlist
-    let sz   = getfsize(file)
+    let sz   = getfsize(filename)
     let fsz  = strpart("               ",1,15-strlen(sz)).sz
-    let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(file))
+    let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
+"    call Decho("sz=".sz." fsz=".fsz)
    endif
 
    if     g:netrw_sort_by =~ "^t"
     " sort by time (handles time up to 1 quintillion seconds, US)
-"    call Decho("getftime(".file.")=".getftime(file))
-    let t  = getftime(file)
+"    call Decho("getftime(".filename.")=".getftime(filename))
+    let t  = getftime(filename)
     let ft = strpart("000000000000000000",1,18-strlen(t)).t
-"    call Decho("exe keepjumps put ='".ft.'/'.file."'")
+"    call Decho("exe keepjumps put ='".ft.'/'.filename."'")
     let ftpfile= ft.'/'.pfile
     keepjumps put=ftpfile
 
    elseif g:netrw_sort_by =~ "^s"
     " sort by size (handles file sizes up to 1 quintillion bytes, US)
-"    call Decho("getfsize(".file.")=".getfsize(file))
-    let sz   = getfsize(file)
+"    call Decho("getfsize(".filename.")=".getfsize(filename))
+    let sz   = getfsize(filename)
     let fsz  = strpart("000000000000000000",1,18-strlen(sz)).sz
-"    call Decho("exe keepjumps put ='".fsz.'/'.file."'")
+"    call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
     let fszpfile= fsz.'/'.pfile
     keepjumps put =fszpfile
 
@@ -2287,6 +2255,7 @@ fun! LocalBrowseList(dirname)
     keepjumps put=pfile
    endif
   endwhile
+  setlocal ts=32
 
 "  call Dret("LocalBrowseList")
 endfun
@@ -2305,6 +2274,8 @@ fun! <SID>LocalBrowseChgDir(dirname,newd
    " is removing the "/".  Bad idea, so I have to put it back.
    let dirname= dirname.'/'
 "   call Decho("adjusting dirname<".dirname.">")
+   setlocal ma
+   %d
   endif
 
   if newdir !~ '[\/]$'
@@ -2313,24 +2284,28 @@ fun! <SID>LocalBrowseChgDir(dirname,newd
 "   call Decho("handling a file: dirname<".dirname.">")
    " this lets NetBrowseX avoid the edit
    if a:0 < 1
-    exe "e ".escape(dirname,s:netrw_cd_escape)
+"    call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">")
+"    call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">")
+    exe "e! ".escape(dirname,s:netrw_cd_escape)
    endif
 
   elseif newdir == './'
    " refresh the directory list
 "   call Decho("refresh directory listing")
-   setlocal ma
-   %d
 
   elseif newdir == '../'
    " go up one directory
    let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e')
 "   call Decho("go up one dir: dirname<".dirname.">")
+   setlocal ma
+   %d
 
   else
    " go down one directory
    let dirname= dirname.newdir
 "   call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
+   setlocal ma
+   %d
   endif
 
 "  call Dret("LocalBrowseChgDir <".dirname.">")
@@ -2364,7 +2339,7 @@ fun! <SID>LocalBrowseRm(path) range
    endif
 
    norm! 0
-   let rmfile= a:path.curword
+   let rmfile= a:path."/".curword
 "   call Decho("rmfile<".rmfile.">")
 
    if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
@@ -2417,11 +2392,11 @@ fun! <SID>LocalBrowseRm(path) range
 "        call Decho("3rd attempt to remove directory<".rmfile.">")
 	call system("rm ".rmfile)
         if v:shell_error != 0 && !exists("g:netrw_quiet")
-         echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+         echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
          call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 	endif
        elseif !exists("g:netrw_quiet")
-        echoerr "unable to remove directory<".rmfile."> -- is it empty?"
+        echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
         call inputsave()|call input("Press <cr> to continue")|call inputrestore()
        endif
       endif
@@ -2475,8 +2450,8 @@ fun! <SID>LocalBrowseRename(path) range
    let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
    call inputrestore()
 
-   let ret= system(g:netrw_local_rename.' "'.oldname.'" "'.newname.'"')
-"   call Decho("executing system(".g:netrw_local_rename." ".oldname." ".newname)
+   let ret= rename(oldname,newname)
+"   call Decho("renaming <".oldname."> to <".newname.">")
 
    let ctr= ctr + 1
   endwhile
@@ -2497,17 +2472,55 @@ fun! <SID>LocalPreview(path) range
    if !isdirectory(a:path)
     exe "pedit ".a:path
    elseif !exists("g:netrw_quiet")
-    echoerr "sorry, cannot preview a directory such as <".a:path.">"
+    echoerr "***netrw*** sorry, cannot preview a directory such as <".a:path.">"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
   elseif !exists("g:netrw_quiet")
-   echoerr "sorry, to preview your vim needs the quickfix feature compiled in"
+   echoerr "***netrw*** sorry, to preview your vim needs the quickfix feature compiled in"
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   endif
 "  call Dret("LocalPreview")
 endfun
 
 " ---------------------------------------------------------------------
+" Explore: launch the local browser in the directory of the current file {{{2
+"          dosplit==0: the window will be split iff the current file has
+"                      been modified
+"          dosplit==1: the window will be split before running the local
+"                      browser
+fun! s:Explore(dosplit,style,...)
+"  call Dfunc("Explore(dosplit=".a:dosplit." style=".a:style.")")
+
+  " if dosplit or file has been modified
+  if a:dosplit || &modified
+   if a:style == 0      " Explore, Sexplore
+    exe g:netrw_winsize."wincmd s"
+   elseif a:style == 1  "Explore!, Sexplore!
+    exe g:netrw_winsize."wincmd v"
+   elseif a:style == 2  " Hexplore
+    exe "bel ".g:netrw_winsize."wincmd s"
+   elseif a:style == 3  " Hexplore!
+    exe "abo ".g:netrw_winsize."wincmd s"
+   elseif a:style == 4  " Vexplore
+    exe "lefta ".g:netrw_winsize."wincmd v"
+   elseif a:style == 5  " Vexplore!
+    exe "rightb ".g:netrw_winsize."wincmd v"
+   endif
+  endif
+  norm! 0
+
+  if a:1 == ""
+   let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e')
+  else
+   let newdir= a:1
+  endif
+"  call Decho("newdir<".newdir.">")
+  call s:LocalBrowse(newdir)
+
+"  call Dret("Explore")
+endfun
+
+" ---------------------------------------------------------------------
 " NetGetcwd: get the current directory. {{{2
 "   Change backslashes to forward slashes, if any.
 "   If doesc is true, escape certain troublesome characters
@@ -2559,7 +2572,7 @@ fun! s:NetMethod(choice)  " globals: met
   let mipf     = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
   let mf       = '^\(\S\+\)\s\+\(\S\+\)$'
   let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
-  let rcpurm   = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
+  let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
   let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
   let scpurm   = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
   let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
@@ -2573,10 +2586,10 @@ fun! s:NetMethod(choice)  " globals: met
   " rcp://user@hostname/...path-to-file
   if match(a:choice,rcpurm) == 0
 "   call Decho("rcp://...")
-   let b:netrw_method = 1
-   let userid	     = substitute(a:choice,rcpurm,'\2',"")
-   let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"")
-   let b:netrw_fname  = substitute(a:choice,rcpurm,'\4',"")
+   let b:netrw_method  = 1
+   let userid          = substitute(a:choice,rcpurm,'\1',"")
+   let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"")
+   let b:netrw_fname   = substitute(a:choice,rcpurm,'\3',"")
    if userid != ""
     let g:netrw_uid= userid
    endif
@@ -2585,9 +2598,9 @@ fun! s:NetMethod(choice)  " globals: met
   elseif match(a:choice,scpurm) == 0
 "   call Decho("scp://...")
    let b:netrw_method = 4
-   let g:netrw_machine= substitute(a:choice,scpurm,'\1',"")
-   let g:netrw_port   = substitute(a:choice,scpurm,'\2',"")
-   let b:netrw_fname  = substitute(a:choice,scpurm,'\3',"")
+   let g:netrw_machine = substitute(a:choice,scpurm,'\1',"")
+   let g:netrw_port    = substitute(a:choice,scpurm,'\2',"")
+   let b:netrw_fname   = substitute(a:choice,scpurm,'\3',"")
  
   " http://user@hostname/...path-to-file
   elseif match(a:choice,httpurm) == 0
@@ -2699,7 +2712,7 @@ fun! s:NetMethod(choice)  " globals: met
  
   else
    if !exists("g:netrw_quiet")
-    echoerr "***error*** cannot determine method"
+    echoerr "***netrw*** cannot determine method"
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
    let b:netrw_method  = -1
@@ -2840,9 +2853,10 @@ endif
 
 " ---------------------------------------------------------------------
 " NetSort: Piet Delport's BISort2() function, modified to take a range {{{1
-fun! <SID>NetSort() range
-"  call Dfunc("NetSort()")
-
+if v:version < 700
+ fun! <SID>NetSort() range
+" "  call Dfunc("NetSort()")
+ 
   let i = a:firstline + 1
   while i <= a:lastline
     " find insertion point via binary search
@@ -2850,36 +2864,37 @@ fun! <SID>NetSort() range
     let lo    = a:firstline
     let hi    = i
     while lo < hi
-      let mid     = (lo + hi) / 2
-      let mid_val = getline(mid)
-      if g:netrw_sort_direction =~ '^n'
-       " normal sorting order
-       if i_val < mid_val
-         let hi = mid
-       else
-         let lo = mid + 1
-         if i_val == mid_val | break | endif
-       endif
+     let mid     = (lo + hi) / 2
+     let mid_val = getline(mid)
+     if g:netrw_sort_direction =~ '^n'
+      " normal sorting order
+      if i_val < mid_val
+       let hi = mid
       else
-       " reverse sorting order
-       if i_val > mid_val
-         let hi = mid
-       else
-         let lo = mid + 1
-         if i_val == mid_val | break | endif
-       endif
+       let lo = mid + 1
+       if i_val == mid_val | break | endif
       endif
+     else
+      " reverse sorting order
+      if i_val > mid_val
+       let hi = mid
+      else
+       let lo = mid + 1
+       if i_val == mid_val | break | endif
+      endif
+     endif
     endwhile
     " do insert
     if lo < i
-      exe 'keepjumps '.i.'d_'
-      keepjumps call append(lo - 1, i_val)
+     exe 'keepjumps '.i.'d_'
+     keepjumps call append(lo - 1, i_val)
     endif
     let i = i + 1
   endwhile
-
-"  call Dret("NetSort")
-endfun
+ 
+" "  call Dret("NetSort")
+ endfun
+endif
 
 " ---------------------------------------------------------------------
 " SetSort: sets up the sort based on the g:netrw_sort_sequence {{{1
@@ -2938,8 +2953,8 @@ fun! <SID>SetSort()
 "  call Dret("SetSort")
 endfun
 
+let &cpo= s:keepcpo
+unlet s:keepcpo
 " ------------------------------------------------------------------------
-" Restore {{{1
-let &cpo= s:save_cpo
-unlet s:save_cpo
+" Modelines: {{{1
 " vim:ts=8 fdm=marker
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -1384,7 +1384,7 @@ vim_strncpy(to, from, len)
 /*
  * Isolate one part of a string option where parts are separated with
  * "sep_chars".
- * The part is copied into buf[maxlen].
+ * The part is copied into "buf[maxlen]".
  * "*option" is advanced to the next part.
  * The length is returned.
  */
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 31)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 31, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 1)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Aug 1, compiled "