updated for version 7.0g01
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 98f6c8b..a2f7efc 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Apr 28, 2006
-" Version:	95
+" Date:		May 02, 2006
+" Version:	98
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v95"
+let g:loaded_netrw = "v98"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -328,7 +328,7 @@
   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
    echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!" | echohl None
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"   call Dret("NetRead")
+"   call Dret("NetRead :1 getcwd<".getcwd().">")
    return
   endif
 "  call Decho("tmpfile<".tmpfile.">")
@@ -380,7 +380,7 @@
          echohl Error | echo "***netrw*** Unbalanced string in filename '". wholechoice ."'" | echohl None
          call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 	endif
-"        call Dret("NetRead")
+"        call Dret("NetRead :2 getcwd<".getcwd().">")
         return
        endif
        let choice= a:{ichoice}
@@ -398,7 +398,9 @@
     let choice = substitute(choice,'\\','/','ge')
 "    call Decho("fixing up windows url to <".choice."> tmpfile<".tmpfile)
 
-    exe 'cd ' . fnamemodify(tmpfile,':h')
+    if !g:netrw_keepdir
+     exe 'lcd ' . fnamemodify(tmpfile,':h')
+    endif
     let tmpfile = fnamemodify(tmpfile,':t')
    endif
 
@@ -410,7 +412,7 @@
    if choice =~ "^.*[\/]$"
 "    call Decho("yes, choice matches '^.*[\/]$'")
     keepjumps call s:NetBrowse(choice)
-"    call Dret("NetRead")
+"    call Dret("NetRead :3 getcwd<".getcwd().">")
     return
    endif
 
@@ -432,7 +434,7 @@
    " rcp:  NetRead Method #1 {{{3
    if  b:netrw_method == 1 " read with rcp
 "    call Decho("read via rcp (method #1)")
-   " ER: noting done with g:netrw_uid yet?
+   " ER: nothing done with g:netrw_uid yet?
    " ER: on Win2K" rcp machine[.user]:file tmpfile
    " ER: if machine contains '.' adding .user is required (use $USERNAME)
    " ER: the tmpfile is full path: rcp sees C:\... as host C
@@ -566,7 +568,7 @@
       echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
-"     call Dret("NetRead")
+"     call Dret("NetRead :4 getcwd<".getcwd().">")
      return
     endif
 
@@ -701,7 +703,7 @@
   endif
   call s:NetOptionRestore()
 
-"  call Dret("NetRead")
+"  call Dret("NetRead :5 getcwd<".getcwd().">")
 endfun
 
 " ------------------------------------------------------------------------
@@ -894,8 +896,9 @@
    " fix up windows urls
    if has("win32") || has("win95") || has("win64") || has("win16")
     let choice= substitute(choice,'\\','/','ge')
-    "ER: see NetRead()
-    exe 'cd ' . fnamemodify(tmpfile,':h')
+    if !g:netrw_keepdir
+     exe 'lcd ' . fnamemodify(tmpfile,':h')
+    endif
     let tmpfile = fnamemodify(tmpfile,':t')
    endif
 
@@ -1212,6 +1215,7 @@
    elseif g:netrw_sort_by =~ "^s"
     let listcmd= listcmd."S"
    endif
+
    " optionally sort in reverse
    if g:netrw_sort_direction =~ "^r" && listcmd == "dir"
     let listcmd= listcmd."r"
@@ -2464,15 +2468,21 @@
   " NetrwStatusLine support - for obtaining support
   call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
 
-"  call Decho("method=".w:netrw_method)
   if exists("w:netrw_method") && w:netrw_method =~ '[235]'
+"   call Decho("method=".w:netrw_method)
    if executable("ftp")
+"    call Decho("ftp is executable, method=".w:netrw_method)
     let curdir = expand("%")
     let path   = substitute(curdir,'ftp://[^/]\+/','','e')
     let curline= line(".")
     let endline= line("$")+1
     set ma
     keepjumps $
+"    call Decho("getcwd<".getcwd().">")
+"    call Decho("curdir<".curdir.">")
+"    call Decho("path<".path.">")
+"    call Decho("curline=".curline)
+"    call Decho("endline=".endline)
 
     ".........................................
     if w:netrw_method == 2
@@ -2484,6 +2494,8 @@
      endif
      put ='get '.fname
 "     call Decho("ftp:  get ".fname)
+     put ='quit'
+"     call Decho("ftp:  quit")
      if exists("g:netrw_port") && g:netrw_port != ""
 "      call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
       exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -2537,6 +2549,7 @@
     exe "keepjumps ".curline
     setlocal noma nomod
    else
+"    call Decho("ftp not executable")
     if !exists("g:netrw_quiet")
      echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
@@ -2556,6 +2569,7 @@
   ".........................................
   else
    " scp: Method#4
+"   call Decho("using scp")
    let curdir = expand("%")
    let path   = substitute(curdir,'scp://[^/]\+/','','e')
 "   call Decho("path<".path.">")
@@ -2788,7 +2802,7 @@
   endif
 
   call s:NetOptionSave()
-  if w:acdkeep
+  if exists("w:acdkeep") && w:acdkeep
    exe 'cd '.escape(a:dirname,s:netrw_cd_escape)
 "   call Decho("cd ".escape(a:dirname,s:netrw_cd_escape))
 "   call Decho("getcwd<".getcwd().">")
@@ -3486,7 +3500,7 @@
 "  call Dfunc("LocalPreview(path<".a:path.">)")
   if has("quickfix")
    if !isdirectory(a:path)
-    exe "pedit ".a:path
+    exe "pedit ".escape(a:path,g:netrw_fname_escape)
    elseif !exists("g:netrw_quiet")
     echohl WarningMsg | echo "***netrw*** sorry, cannot preview a directory such as <".a:path.">" | echohl None
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
@@ -4033,7 +4047,9 @@
   endif
 
   " Get Temporary Filename
-  let w:acdkeep   = &acd
+  if exists("&acd")
+   let w:acdkeep  = &acd
+  endif
   let w:aikeep    = &ai
   let w:fokeep    = &fo
   let w:cikeep    = &ci
@@ -4043,6 +4059,9 @@
   let w:cpokeep   = &cpo
   let w:hidkeep   = &hidden
   let w:magickeep = &magic
+  if !g:netrw_keepdir
+   let w:dirkeep  = getcwd()
+  endif
   let w:gdkeep    = &gd
   let w:repkeep   = &report
   let w:spellkeep = &spell
@@ -4050,7 +4069,11 @@
   setlocal cino =
   setlocal com  =
   setlocal cpo -=aA
-  setlocal noacd nocin noai noci magic nospell fo=nroql2 nohid
+  if exists("&acd")
+   setlocal noacd nocin noai noci magic nospell fo=nroql2 nohid
+  else
+   setlocal nocin noai noci magic nospell fo=nroql2 nohid
+  endif
   setlocal tw   =0
   setlocal report=10000
   if has("win32") && !has("win95")
@@ -4072,13 +4095,16 @@
   endif
   unlet w:netoptionsave
 
-  if exists("w:acdkeep")  |let &acd    = w:acdkeep     |unlet w:acdkeep  |endif
+  if exists("&acd")
+   if exists("w:acdkeep") |let &acd    = w:acdkeep     |unlet w:acdkeep  |endif
+  endif
   if exists("w:aikeep")   |let &ai     = w:aikeep      |unlet w:aikeep   |endif
   if exists("w:cikeep")   |let &ci     = w:cikeep      |unlet w:cikeep   |endif
   if exists("w:cinkeep")  |let &cin    = w:cinkeep     |unlet w:cinkeep  |endif
   if exists("w:cinokeep") |let &cino   = w:cinokeep    |unlet w:cinokeep |endif
   if exists("w:comkeep")  |let &com    = w:comkeep     |unlet w:comkeep  |endif
   if exists("w:cpokeep")  |let &cpo    = w:cpokeep     |unlet w:cpokeep  |endif
+  if exists("w:dirkeep")  |exe "lcd ".w:dirkeep        |unlet w:dirkeep  |endif
   if exists("w:fokeep")   |let &fo     = w:fokeep      |unlet w:fokeep   |endif
   if exists("w:gdkeep")   |let &gd     = w:gdkeep      |unlet w:gdkeep   |endif
   if exists("w:hidkeep")  |let &hidden = w:hidkeep     |unlet w:hidkeep  |endif
diff --git a/runtime/autoload/netrwFileHandlers.vim b/runtime/autoload/netrwFileHandlers.vim
index cd6de66..895cd99 100644
--- a/runtime/autoload/netrwFileHandlers.vim
+++ b/runtime/autoload/netrwFileHandlers.vim
@@ -1,7 +1,7 @@
 " netrwFileHandlers: contains various extension-based file handlers for
 "                    netrw's browsers' x command ("eXecute launcher")
 " Author:	Charles E. Campbell, Jr.
-" Date:		Mar 22, 2006
+" Date:		May 01, 2006
 " Version:	8
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
@@ -25,7 +25,7 @@
 let g:loaded_netrwFileHandlers= "v8"
 
 " ---------------------------------------------------------------------
-" netrwFileHandlers#Invoke: {{{2
+" netrwFileHandlers#Invoke: {{{1
 fun! netrwFileHandlers#Invoke(exten,fname)
 "  call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
 
diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim
index 2fc7ef6..9004f39 100644
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -1,7 +1,7 @@
 " tar.vim: Handles browsing tarfiles
 "            AUTOLOAD PORTION
-" Date:			Mar 27, 2006
-" Version:		7
+" Date:			May 02, 2006
+" Version:		9
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " License:		Vim License  (see vim's :help license)
 "
@@ -24,7 +24,7 @@
 if exists("g:loaded_tar")
  finish
 endif
-let g:loaded_tar= "v7"
+let g:loaded_tar= "v9"
 "call Decho("loading autoload/tar.vim")
 
 " ---------------------------------------------------------------------
@@ -97,6 +97,7 @@
    " assuming cygwin
    let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
   endif
+  let curlast= line("$")
   if tarfile =~# '\.\(gz\|tgz\)$'
 "   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
    exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
@@ -108,8 +109,27 @@
    exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'"
   endif
   if v:shell_error != 0
-   echohl Error | echo '***error*** (tar#Browse) while browsing; check your g:tar_browseoptions<".g:tar_browseoptions.">"
-"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
+   echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">"
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
+   silent %d
+   let eikeep= &ei
+   set ei=BufReadCmd,FileReadCmd
+   exe "r ".a:tarfile
+   let &ei= eikeep
+   1d
+   return
+  endif
+  if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~? '\c\%(warning\|error\|inappropriate\|unrecognized\)')
+   echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   silent %d
+   let eikeep= &ei
+   set ei=BufReadCmd,FileReadCmd
+   exe "r ".a:tarfile
+   let &ei= eikeep
+   1d
+"   call Dret("tar#Browse : a:tarfile<".a:tarfile.">")
    return
   endif
 
@@ -147,12 +167,6 @@
   new
   wincmd _
   let s:tblfile_{winnr()}= curfile
-"  if has("unix")
-""   call Decho("exe e tarfile:".tarfile.':'.fname)
-"   exe "e tarfile:".tarfile.':'.fname
-"  elseif has("win32")
-"   call tar#Read("tarfile:".tarfile.':'.fname,1)
-"  endif
   call tar#Read("tarfile:".tarfile.':'.fname,1)
   filetype detect
 
diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim
index e8042b5..088a32b 100644
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
 " vimball : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" Date:   Apr 27, 2006
-" Version: 11
+" Date:   May 01, 2006
+" Version: 13
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -15,7 +15,7 @@
  finish
 endif
 let s:keepcpo        = &cpo
-let g:loaded_vimball = "v11"
+let g:loaded_vimball = "v13"
 set cpo&vim
 
 " =====================================================================
@@ -351,14 +351,20 @@
 "  call Dfunc("SaveSettings()")
   let s:makeep  = getpos("'a")
   let s:regakeep= @a
-  let s:acdkeep = &acd
+  if exists("&acd")
+   let s:acdkeep = &acd
+  endif
   let s:eikeep  = &ei
   let s:fenkeep = &fen
   let s:hidkeep = &hidden
   let s:ickeep  = &ic
   let s:repkeep = &report
   let s:vekeep  = &ve
-  set ei=all ve=all noacd nofen noic report=999 nohid
+  if exists("&acd")
+   set ei=all ve=all noacd nofen noic report=999 nohid
+  else
+   set ei=all ve=all nofen noic report=999 nohid
+  endif
 "  call Dret("SaveSettings")
 endfun
 
@@ -367,7 +373,9 @@
 fun! s:RestoreSettings()
 "  call Dfunc("RestoreSettings()")
   let @a      = s:regakeep
-  let &acd    = s:acdkeep
+  if exists("&acd")
+   let &acd   = s:acdkeep
+  endif
   let &ei     = s:eikeep
   let &fen    = s:fenkeep
   let &hidden = s:hidkeep
@@ -379,7 +387,11 @@
 "   call Decho("restore mark-a: makeep=".string(makeep))
    call setpos("'a",s:makeep)
   endif
-  unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep
+  if exists("&acd")
+   unlet s:regakeep s:acdkeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep
+  else
+   unlet s:regakeep s:eikeep s:fenkeep s:hidkeep s:ickeep s:repkeep s:vekeep s:makeep
+  endif
 "  call Dret("RestoreSettings")
 endfun
 
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index c71a4dc..e0ae9b8 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
 " zip.vim: Handles browsing zipfiles
 "            AUTOLOAD PORTION
-" Date:			Apr 10, 2006
-" Version:		8
+" Date:			May 01, 2006
+" Version:		9
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " License:		Vim License  (see vim's :help license)
 " Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,7 @@
  finish
 endif
 
-let g:loaded_zip     = "v8"
+let g:loaded_zip     = "v9"
 let s:zipfile_escape = ' ?&;\'
 
 " ----------------
@@ -77,6 +77,18 @@
 
 "  call Decho("exe silent r! unzip -l '".a:zipfile."'")
   exe "silent r! unzip -l '".a:zipfile."'"
+  if v:shell_error != 0
+   echohl WarningMsg | echo "***warning*** (zip#Browse) ".a:zipfile." is not a zip file" | echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   silent %d
+   let eikeep= &ei
+   set ei=BufReadCmd,FileReadCmd
+   exe "r ".a:zipfile
+   let &ei= eikeep
+   1d
+"   call Dret("zip#Browse")
+   return
+  endif
 "  call Decho("line 6: ".getline(6))
   let namecol= stridx(getline(6),'Name') + 1
 "  call Decho("namecol=".namecol)
@@ -127,8 +139,8 @@
   new
   wincmd _
   let s:zipfile_{winnr()}= curfile
-"  call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).':'.escape(fname,s:zipfile_escape))
-  exe "e zipfile:".escape(zipfile,s:zipfile_escape).':'.escape(fname,s:zipfile_escape)
+"  call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).'::'.escape(fname,s:zipfile_escape))
+  exe "e zipfile:".escape(zipfile,s:zipfile_escape).'::'.escape(fname,s:zipfile_escape)
   filetype detect
 
   let &report= repkeep
@@ -142,9 +154,15 @@
   let repkeep= &report
   set report=10
 
-  let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):[^\\].*$','\1','')
-  let fname   = substitute(a:fname,'zipfile:.\{-}:\([^\\].*\)$','\1','')
-"  call Decho("zipfile<".zipfile."> fname<".fname.">")
+  if has("unix")
+   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
+   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
+  else
+   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
+   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
+  endif
+"  call Decho("zipfile<".zipfile.">")
+"  call Decho("fname  <".fname.">")
 
 "  call Decho("exe r! unzip -p '".zipfile."' '".fname."'")
   exe "silent r! unzip -p '".zipfile."' '".fname."'"
@@ -209,8 +227,15 @@
   cd _ZIPVIM_
 "  call Decho("current directory now: ".getcwd())
 
-  let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
-  let fname   = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
+  if has("unix")
+   let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
+   let fname   = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
+  else
+   let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
+   let fname   = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
+  endif
+"  call Decho("zipfile<".zipfile.">")
+"  call Decho("fname  <".fname.">")
 
   if fname =~ '/'
    let dirpath = substitute(fname,'/[^/]\+$','','e')