changeset 3153:37ecb8ff4560

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Thu, 20 Oct 2011 22:22:38 +0200
parents 3f8227139248
children 72528c5eb87e
files runtime/autoload/netrw.vim runtime/autoload/vimball.vim runtime/doc/eval.txt runtime/doc/map.txt runtime/doc/mbyte.txt runtime/doc/netbeans.txt runtime/doc/options.txt runtime/doc/pattern.txt runtime/doc/pi_netrw.txt runtime/doc/pi_vimball.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/various.txt runtime/filetype.vim runtime/indent/r.vim runtime/indent/vhdl.vim runtime/plugin/netrwPlugin.vim runtime/plugin/vimballPlugin.vim runtime/syntax/gitolite.vim runtime/syntax/netrw.vim runtime/syntax/php.vim runtime/syntax/rhelp.vim runtime/syntax/sqr.vim runtime/syntax/tex.vim src/po/de.po
diffstat 26 files changed, 851 insertions(+), 364 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across
 "            AUTOLOAD SECTION
-" Date:		May 31, 2011
-" Version:	142
+" Date:		Sep 26, 2011
+" Version:	143
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2010 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v142"
+let g:loaded_netrw = "v143"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of netrw needs vim 7.2"
@@ -226,6 +226,7 @@ if !exists("g:netrw_localcopycmd")
  endif
 endif
 call s:NetrwInit("g:netrw_local_mkdir","mkdir")
+call s:NetrwInit("g:netrw_remote_mkdir","mkdir")
 if !exists("g:netrw_localmovecmd")
  if has("win32") || has("win95") || has("win64") || has("win16")
   if g:netrw_cygwin
@@ -278,7 +279,7 @@ call s:NetrwInit("g:netrw_sort_options" 
 call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse  (z y x ...)
 if !exists("g:netrw_sort_sequence")
  if has("unix")
-  let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
+  let g:netrw_sort_sequence= '[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
  else
   let g:netrw_sort_sequence= '[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
  endif
@@ -312,9 +313,11 @@ call s:NetrwInit("s:netrw_map_escape","<
 " ======================
 "  Netrw Initialization: {{{1
 " ======================
-if v:version >= 700 && has("balloon_eval") && &beval == 0
- let &l:bexpr= "netrw#NetrwBalloonHelp()"
+if v:version >= 700 && has("balloon_eval") && !exists("s:initbeval") && !exists("g:netrw_nobeval") && has("syntax") && exists("g:syntax_on")
+ let s:initbeval = &beval
+ let &l:bexpr    = "netrw#NetrwBalloonHelp()"
  set beval
+ au BufWinEnter,WinEnter *	if &ft == "netrw"|set beval|else|let &beval= s:initbeval|endif
 endif
 
 " ==============================
@@ -323,12 +326,12 @@ endif
 
 " ---------------------------------------------------------------------
 " netrw#NetrwBalloonHelp: {{{2
-if v:version >= 700 && has("balloon_eval") && &beval == 1
+if v:version >= 700 && has("balloon_eval") && &beval == 1 && has("syntax") && exists("g:syntax_on")
   fun! netrw#NetrwBalloonHelp()
-    if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt
+    if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt || (exists("g:netrw_nobeval") && g:netrw_nobeval)
      let mesg= ""
     elseif     v:beval_text == "Netrw" || v:beval_text == "Directory" || v:beval_text == "Listing"
-     let mesg = "i: thin-long-wide-tree  gh: quick hide/unhide of dot-files   qf: quick file info"
+     let mesg = "i: thin-long-wide-tree  gh: quick hide/unhide of dot-files   qf: quick file info  %:open new file"
     elseif     getline(v:beval_lnum) =~ '^"\s*/'
      let mesg = "<cr>: edit/enter   o: edit/enter in horiz window   t: edit/enter in new tab   v:edit/enter in vert window"
     elseif     v:beval_text == "Sorted" || v:beval_text == "by"
@@ -369,11 +372,12 @@ fun! s:NetrwOptionSave(vt)
 
   " Save current settings and current directory
   let s:yykeep          = @@
-  if exists("&l:acd")
-   let {a:vt}netrw_acdkeep  = &l:acd
-  endif
+  if exists("&l:acd")|let {a:vt}netrw_acdkeep  = &l:acd|endif
   let {a:vt}netrw_aikeep    = &l:ai
   let {a:vt}netrw_awkeep    = &l:aw
+  let {a:vt}netrw_bhkeep    = &l:bh
+  let {a:vt}netrw_blkeep    = &l:bl
+  let {a:vt}netrw_btkeep    = &l:bt
   let {a:vt}netrw_bombkeep  = &l:bomb
   let {a:vt}netrw_cikeep    = &l:ci
   let {a:vt}netrw_cinkeep   = &l:cin
@@ -381,19 +385,35 @@ fun! s:NetrwOptionSave(vt)
   let {a:vt}netrw_comkeep   = &l:com
   let {a:vt}netrw_cpokeep   = &l:cpo
   let {a:vt}netrw_diffkeep  = &l:diff
-  if g:netrw_keepdir
-   let {a:vt}netrw_dirkeep  = getcwd()
-  endif
+  let {a:vt}netrw_fenkeep   = &l:fen
+  let {a:vt}netrw_ffkeep    = &l:ff
   let {a:vt}netrw_fokeep    = &l:fo           " formatoptions
   let {a:vt}netrw_gdkeep    = &l:gd           " gdefault
   let {a:vt}netrw_hidkeep   = &l:hidden
   let {a:vt}netrw_imkeep    = &l:im
+  let {a:vt}netrw_iskkeep   = &l:isk
+  let {a:vt}netrw_lskeep    = &l:ls
+  let {a:vt}netrw_makeep    = &l:ma
   let {a:vt}netrw_magickeep = &l:magic
+  let {a:vt}netrw_modkeep   = &l:mod
+  let {a:vt}netrw_nukeep    = &l:nu
   let {a:vt}netrw_repkeep   = &l:report
+  let {a:vt}netrw_rokeep    = &l:ro
   let {a:vt}netrw_selkeep   = &l:sel
   let {a:vt}netrw_spellkeep = &l:spell
+  let {a:vt}netrw_tskeep    = &l:ts
   let {a:vt}netrw_twkeep    = &l:tw           " textwidth
   let {a:vt}netrw_wigkeep   = &l:wig          " wildignore
+  let {a:vt}netrw_wrapkeep  = &l:wrap
+  let {a:vt}netrw_writekeep = &l:write
+  if g:netrw_use_noswf && has("win32") && !has("win95")
+   let {a:vt}netrw_swfkeep   = &l:swf
+  endif
+
+  " save a few selected netrw-related variables
+  if g:netrw_keepdir
+   let {a:vt}netrw_dirkeep  = getcwd()
+  endif
   if has("win32") && !has("win95")
    let {a:vt}netrw_swfkeep  = &l:swf          " swapfile
   endif
@@ -408,6 +428,13 @@ endfun
 fun! s:NetrwOptionRestore(vt)
 "  call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%")." winnr($)=".winnr("$"))
   if !exists("{a:vt}netrw_optionsave")
+   if exists("s:nbcd_curpos_{bufnr('%')}")
+"    call Decho("restoring previous position")
+    keepj call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
+"    unlet s:nbcd_curpos_{bufnr('%')}
+   else
+"    call Decho("no previous position")
+   endif
 "   call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
 "   call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
    return
@@ -421,7 +448,7 @@ fun! s:NetrwOptionRestore(vt)
     let &l:acd = {a:vt}netrw_acdkeep
     unlet {a:vt}netrw_acdkeep
     if &l:acd
-"     call Decho("exe keepjumps lcd ".fnameescape(curdir))  " NOTE: was g:netrw_fname_escape for some reason
+"     call Decho("exe keepj lcd ".fnameescape(curdir))  " NOTE: was g:netrw_fname_escape for some reason
      try
       if !exists("&l:acd") && !&l:acd
        exe 'keepj lcd '.fnameescape(curdir)
@@ -434,6 +461,9 @@ fun! s:NetrwOptionRestore(vt)
   endif
   if exists("{a:vt}netrw_aikeep")   |let &l:ai     = {a:vt}netrw_aikeep      |unlet {a:vt}netrw_aikeep   |endif
   if exists("{a:vt}netrw_awkeep")   |let &l:aw     = {a:vt}netrw_awkeep      |unlet {a:vt}netrw_awkeep   |endif
+  if exists("{a:vt}netrw_bhkeep")   |let &l:bh     = {a:vt}netrw_bhkeep      |unlet {a:vt}netrw_bhkeep   |endif
+  if exists("{a:vt}netrw_blkeep")   |let &l:bl     = {a:vt}netrw_blkeep      |unlet {a:vt}netrw_blkeep   |endif
+  if exists("{a:vt}netrw_btkeep")   |let &l:bt     = {a:vt}netrw_btkeep      |unlet {a:vt}netrw_btkeep   |endif
   if exists("{a:vt}netrw_bombkeep") |let &l:bomb   = {a:vt}netrw_bombkeep    |unlet {a:vt}netrw_bombkeep |endif
   if exists("{a:vt}netrw_cikeep")   |let &l:ci     = {a:vt}netrw_cikeep      |unlet {a:vt}netrw_cikeep   |endif
   if exists("{a:vt}netrw_cinkeep")  |let &l:cin    = {a:vt}netrw_cinkeep     |unlet {a:vt}netrw_cinkeep  |endif
@@ -441,20 +471,27 @@ fun! s:NetrwOptionRestore(vt)
   if exists("{a:vt}netrw_comkeep")  |let &l:com    = {a:vt}netrw_comkeep     |unlet {a:vt}netrw_comkeep  |endif
   if exists("{a:vt}netrw_cpokeep")  |let &l:cpo    = {a:vt}netrw_cpokeep     |unlet {a:vt}netrw_cpokeep  |endif
   if exists("{a:vt}netrw_diffkeep") |let &l:diff   = {a:vt}netrw_diffkeep    |unlet {a:vt}netrw_diffkeep |endif
-  if exists("{a:vt}netrw_dirkeep") && isdirectory({a:vt}netrw_dirkeep) && g:netrw_keepdir
-   let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g')
-   if exists("{a:vt}netrw_dirkeep")  |exe "keepjumps lcd ".fnameescape(dirkeep)|unlet {a:vt}netrw_dirkeep  |endif
-  endif
+  if exists("{a:vt}netrw_fenkeep")  |let &l:fen    = {a:vt}netrw_fenkeep     |unlet {a:vt}netrw_fenkeep  |endif
+  if exists("{a:vt}netrw_ffkeep")   |let &l:ff     = {a:vt}netrw_ffkeep      |unlet {a:vt}netrw_ffkeep   |endif
   if exists("{a:vt}netrw_fokeep")   |let &l:fo     = {a:vt}netrw_fokeep      |unlet {a:vt}netrw_fokeep   |endif
   if exists("{a:vt}netrw_gdkeep")   |let &l:gd     = {a:vt}netrw_gdkeep      |unlet {a:vt}netrw_gdkeep   |endif
   if exists("{a:vt}netrw_hidkeep")  |let &l:hidden = {a:vt}netrw_hidkeep     |unlet {a:vt}netrw_hidkeep  |endif
   if exists("{a:vt}netrw_imkeep")   |let &l:im     = {a:vt}netrw_imkeep      |unlet {a:vt}netrw_imkeep   |endif
-  if exists("{a:vt}netrw_magic")    |let &l:magic  = {a:vt}netrw_magic       |unlet {a:vt}netrw_magic    |endif
+  if exists("{a:vt}netrw_iskkeep")  |let &l:isk    = {a:vt}netrw_iskkeep     |unlet {a:vt}netrw_iskkeep  |endif
+  if exists("{a:vt}netrw_lskeep")   |let &l:ls     = {a:vt}netrw_lskeep      |unlet {a:vt}netrw_lskeep   |endif
+  if exists("{a:vt}netrw_makeep")   |let &l:ma     = {a:vt}netrw_makeep      |unlet {a:vt}netrw_makeep   |endif
+  if exists("{a:vt}netrw_magickeep")|let &l:magic  = {a:vt}netrw_magickeep   |unlet {a:vt}netrw_magickeep|endif
+  if exists("{a:vt}netrw_modkeep")  |let &l:mod    = {a:vt}netrw_modkeep     |unlet {a:vt}netrw_modkeep  |endif
+  if exists("{a:vt}netrw_nukeep")   |let &l:nu     = {a:vt}netrw_nukeep      |unlet {a:vt}netrw_nukeep   |endif
   if exists("{a:vt}netrw_repkeep")  |let &l:report = {a:vt}netrw_repkeep     |unlet {a:vt}netrw_repkeep  |endif
+  if exists("{a:vt}netrw_rokeep")   |let &l:ro     = {a:vt}netrw_rokeep      |unlet {a:vt}netrw_rokeep   |endif
   if exists("{a:vt}netrw_selkeep")  |let &l:sel    = {a:vt}netrw_selkeep     |unlet {a:vt}netrw_selkeep  |endif
   if exists("{a:vt}netrw_spellkeep")|let &l:spell  = {a:vt}netrw_spellkeep   |unlet {a:vt}netrw_spellkeep|endif
+  if exists("{a:vt}netrw_tskeep")   |let &l:ts     = {a:vt}netrw_tskeep      |unlet {a:vt}netrw_tskeep   |endif
   if exists("{a:vt}netrw_twkeep")   |let &l:tw     = {a:vt}netrw_twkeep      |unlet {a:vt}netrw_twkeep   |endif
   if exists("{a:vt}netrw_wigkeep")  |let &l:wig    = {a:vt}netrw_wigkeep     |unlet {a:vt}netrw_wigkeep  |endif
+  if exists("{a:vt}netrw_wrapkeep") |let &l:wrap   = {a:vt}netrw_wrapkeep    |unlet {a:vt}netrw_wrapkeep |endif
+  if exists("{a:vt}netrw_writekeep")|let &l:write  = {a:vt}netrw_writekeep   |unlet {a:vt}netrw_writekeep|endif
   if exists("s:yykeep")             |let  @@       = s:yykeep                |unlet s:yykeep             |endif
   if exists("{a:vt}netrw_swfkeep")
    if &directory == ""
@@ -471,8 +508,19 @@ fun! s:NetrwOptionRestore(vt)
     unlet {a:vt}netrw_swfkeep
    endif
   endif
+  if exists("{a:vt}netrw_dirkeep") && isdirectory({a:vt}netrw_dirkeep) && g:netrw_keepdir
+   let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g')
+   if exists("{a:vt}netrw_dirkeep")  |exe "keepj lcd ".fnameescape(dirkeep)|unlet {a:vt}netrw_dirkeep  |endif
+  endif
   if exists("{a:vt}netrw_regstar") |sil! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif
   if exists("{a:vt}netrw_regslash")|sil! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|endif
+  if exists("s:nbcd_curpos_{bufnr('%')}")
+"   call Decho("restoring previous position")
+   keepj call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
+"   unlet s:nbcd_curpos_{bufnr('%')}
+  else
+"   call Decho("no previous position")
+  endif
 
 "  call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd)
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
@@ -486,16 +534,25 @@ endfun
 fun! s:NetrwSafeOptions()
 "  call Dfunc("s:NetrwSafeOptions() win#".winnr()." buf#".bufnr("%")."<".bufname(bufnr("%"))."> winnr($)=".winnr("$"))
 "  call Decho("win#".winnr()."'s ft=".&ft)
+  if exists("&acd") | setlocal noacd | endif
+  setlocal noai
+  setlocal noaw
+  setlocal nobomb
+  setlocal noci
+  setlocal nocin
   setlocal cino=
   setlocal com=
   setlocal cpo-=aA
-  if exists("&acd") | setlocal noacd | endif
-  setlocal nocin noai nobomb noci magic nospell nohid wig= noaw noim
   setlocal fo=nroql2
+  setlocal nohid
+  setlocal noim
+  setlocal isk+=@ isk+=* isk+=/
+  setlocal magic
+  setlocal report=10000
+  setlocal sel=inclusive
+  setlocal nospell
   setlocal tw=0
-  setlocal report=10000
-  setlocal isk+=@ isk+=* isk+=/
-  setlocal sel=inclusive
+  setlocal wig=
   if g:netrw_use_noswf && has("win32") && !has("win95")
    setlocal noswf
   endif
@@ -505,7 +562,7 @@ fun! s:NetrwSafeOptions()
 "  call Decho("ft<".&ft."> ei=".&ei)
   if &ft == "netrw"
 "   call Decho("do any netrw FileType autocmds")
-   sil keepalt keepj doau FileType netrw
+   sil! keepalt keepj doau FileType netrw
   endif
 
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
@@ -679,7 +736,7 @@ fun! netrw#NetRead(mode,...)
 
    " Check if NetrwBrowse() should be handling this request
 "   call Decho("checking if NetrwBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
-   if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://'
+   if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^https\=://'
 "    call Decho("yes, choice matches '^.*[\/]$'")
     keepj call s:NetrwBrowse(0,choice)
 "    call Dret("netrw#NetRead :3 getcwd<".getcwd().">")
@@ -926,7 +983,7 @@ fun! netrw#NetRead(mode,...)
      endif
 "     call Dret("NetRead")
     endif
-    if exists("g:netrw_option") && g:netrw_option == ":http"
+    if exists("g:netrw_option") && g:netrw_option == ":https\="
      let netrw_option= "http"
     else
      let netrw_option= "ftp"
@@ -1360,7 +1417,7 @@ fun! netrw#NetSource(...)
    echomsg ':Nsource dav://machine[:port]/path            uses cadaver'
    echomsg ':Nsource fetch://machine/path                 uses fetch'
    echomsg ':Nsource ftp://[user@]machine[:port]/path     uses ftp   autodetects <.netrc>'
-   echomsg ':Nsource http://[user@]machine/path           uses http  wget'
+   echomsg ':Nsource http[s]://[user@]machine/path        uses http  wget'
    echomsg ':Nsource rcp://[user@]machine/path            uses rcp'
    echomsg ':Nsource rsync://machine[:port]/path          uses rsync'
    echomsg ':Nsource scp://[user@]machine[[:#]port]/path  uses scp'
@@ -1506,7 +1563,7 @@ endfun
 "                  2: ftp + <.netrc>                                  
 "	           3: ftp + machine, id, password, and [path]filename 
 "	           4: scp                                             
-"	           5: http (wget)                                     
+"	           5: http[s] (wget)                                     
 "	           6: dav
 "	           7: rsync                                           
 "	           8: fetch                                           
@@ -1556,21 +1613,24 @@ fun! s:NetrwMethod(choice)
   " rcpurm   : rcp://[user@]host/filename	     Use rcp
   " rcphf    : [user@]host:filename		     Use rcp
   " scpurm   : scp://[user@]host[[#:]port]/filename  Use scp
-  " httpurm  : http://[user@]host/filename	     Use wget
+  " httpurm  : http[s]://[user@]host/filename	     Use wget
   " davurm   : dav[s]://host[:port]/path             Use cadaver/curl
   " rsyncurm : rsync://host[:port]/path              Use rsync
   " fetchurm : fetch://[user@]host[:http]/filename   Use fetch (defaults to ftp, override for http)
   " sftpurm  : sftp://[user@]host/filename  Use scp
   let mipf     = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
   let mf       = '^\(\S\+\)\s\+\(\S\+\)$'
-  let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
-  let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
+"  let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
+"  let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
+"  let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
+  let ftpurm   = '^ftp://\(\([^/]*\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
+  let rcpurm   = '^rcp://\%(\([^/]*\)@\)\=\([^/]\{-}\)/\(.*\)$'
   let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
   let scpurm   = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
-  let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
+  let httpurm  = '^https\=://\([^/]\{-}\)\(/.*\)\=$'
   let davurm   = '^davs\=://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
   let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
-  let fetchurm = '^fetch://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
+  let fetchurm = '^fetch://\(\([^/]*\)@\)\=\([^/#:]\{-}\)\(:http\)\=/\(.*\)$'
   let sftpurm  = '^sftp://\([^/]\{-}\)/\(.*\)\=$'
 
 "  call Decho("determine method:")
@@ -1594,7 +1654,7 @@ fun! s:NetrwMethod(choice)
    let g:netrw_port    = substitute(a:choice,scpurm,'\2',"")
    let b:netrw_fname   = substitute(a:choice,scpurm,'\3',"")
 
-  " Method#5: http://user@hostname/...path-to-file {{{3
+  " Method#5: http[s]://user@hostname/...path-to-file {{{3
   elseif match(a:choice,httpurm) == 0
 "   call Decho("http://...")
    let b:netrw_method = 5
@@ -1605,7 +1665,7 @@ fun! s:NetrwMethod(choice)
   elseif match(a:choice,davurm) == 0
 "   call Decho("dav://...")
    let b:netrw_method= 6
-   if a:choice =~ '^s'
+   if a:choice =~ 'davs:'
     let g:netrw_machine= 'https://'.substitute(a:choice,davurm,'\1/\2',"")
    else
     let g:netrw_machine= 'http://'.substitute(a:choice,davurm,'\1/\2',"")
@@ -1842,6 +1902,55 @@ fun! s:NetrwMaps(islocal)
 
   if a:islocal
 "   call Decho("make local maps")
+   " local normal-mode maps
+   nnoremap <buffer> <silent> a		:call <SID>NetrwHide(1)<cr>
+   nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(1)<cr>
+   nnoremap <buffer> <silent> c		:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
+   nnoremap <buffer> <silent> <cr>	:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
+   nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("")<cr>
+   nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
+   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> gd	:<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr>
+   nnoremap <buffer> <silent> gf	:<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr>
+   nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(1)<cr>
+   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
+   nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(1)<cr>
+   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
+   nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
+   nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
+   nnoremap <buffer> <silent> mf	:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+   nnoremap <buffer> <silent> mg	:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
+   nnoremap <buffer> <silent> mh	:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
+   nnoremap <buffer> <silent> mm	:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
+   nnoremap <buffer> <silent> mp	:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
+   nnoremap <buffer> <silent> mr	:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
+   nnoremap <buffer> <silent> ms	:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
+   nnoremap <buffer> <silent> mt	:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
+   nnoremap <buffer> <silent> mT	:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
+   nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
+   nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
+   nnoremap <buffer> <silent> mX	:<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr>
+   nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
+   nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<cr>
+   nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(3)<cr>
+   nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+   nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(1)<cr>
+   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+   nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
+   nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
+   nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(1)<cr>
+   nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(1)<cr>
+   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
+   nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(4)<cr>
+   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
+   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
+   nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(5)<cr>
+   nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
+   " local insert-mode maps
    inoremap <buffer> <silent> a		<c-o>:call <SID>NetrwHide(1)<cr>
    inoremap <buffer> <silent> c		<c-o>:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
    inoremap <buffer> <silent> C		<c-o>:let g:netrw_chgwin= winnr()<cr>
@@ -1870,6 +1979,7 @@ fun! s:NetrwMaps(islocal)
    inoremap <buffer> <silent> mt	<c-o>:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
    inoremap <buffer> <silent> mu	<c-o>:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
    inoremap <buffer> <silent> mx	<c-o>:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
+   inoremap <buffer> <silent> mX	<c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(1)<cr>
    inoremap <buffer> <silent> mz	<c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
    inoremap <buffer> <silent> O		<c-o>:call <SID>NetrwObtain(1)<cr>
    inoremap <buffer> <silent> o		<c-o>:call <SID>NetrwSplit(3)<cr>
@@ -1886,52 +1996,6 @@ fun! s:NetrwMaps(islocal)
    inoremap <buffer> <silent> U		<c-o>:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
    inoremap <buffer> <silent> v		<c-o>:call <SID>NetrwSplit(5)<cr>
    inoremap <buffer> <silent> x		<c-o>:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
-   nnoremap <buffer> <silent> a		:call <SID>NetrwHide(1)<cr>
-   nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(1)<cr>
-   nnoremap <buffer> <silent> c		:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
-   nnoremap <buffer> <silent> <cr>	:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
-   nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("")<cr>
-   nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
-   nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> gd	:<c-u>call <SID>NetrwForceChgDir(1,<SID>NetrwGetWord())<cr>
-   nnoremap <buffer> <silent> gf	:<c-u>call <SID>NetrwForceFile(1,<SID>NetrwGetWord())<cr>
-   nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(1)<cr>
-   nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
-   nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(1)<cr>
-   nnoremap <buffer> <silent> mb	:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> mB	:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> mc	:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
-   nnoremap <buffer> <silent> md	:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
-   nnoremap <buffer> <silent> me	:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
-   nnoremap <buffer> <silent> mf	:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
-   nnoremap <buffer> <silent> mg	:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
-   nnoremap <buffer> <silent> mh	:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
-   nnoremap <buffer> <silent> mm	:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
-   nnoremap <buffer> <silent> mp	:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
-   nnoremap <buffer> <silent> mr	:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
-   nnoremap <buffer> <silent> ms	:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
-   nnoremap <buffer> <silent> mT	:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
-   nnoremap <buffer> <silent> mt	:<c-u>call <SID>NetrwMarkFileTgt(1)<cr>
-   nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(1)<cr>
-   nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(1)<cr>
-   nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
-   nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<cr>
-   nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(3)<cr>
-   nnoremap <buffer> <silent> p		:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
-   nnoremap <buffer> <silent> P		:call <SID>NetrwPrevWinOpen(1)<cr>
-   nnoremap <buffer> <silent> qb	:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> qf	:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
-   nnoremap <buffer> <silent> r		:let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetrwRefresh(1,<SID>NetrwBrowseChgDir(1,'./'))<cr>
-   nnoremap <buffer> <silent> s		:call <SID>NetrwSortStyle(1)<cr>
-   nnoremap <buffer> <silent> S		:call <SID>NetSortSequence(1)<cr>
-   nnoremap <buffer> <silent> T		:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
-   nnoremap <buffer> <silent> t		:call <SID>NetrwSplit(4)<cr>
-   nnoremap <buffer> <silent> u		:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
-   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetrwBookHistHandler(5,expand("%"))<cr>
-   nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(5)<cr>
-   nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),0),0)"<cr>
    if !hasmapto('<Plug>NetrwHideEdit')
     nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
     imap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
@@ -1986,6 +2050,7 @@ fun! s:NetrwMaps(islocal)
   else " remote
 "   call Decho("make remote maps")
    call s:RemotePathAnalysis(b:netrw_curdir)
+   " remote normal-mode maps
    nnoremap <buffer> <silent> <cr>	:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
    nnoremap <buffer> <silent> <c-l>	:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
    nnoremap <buffer> <silent> -		:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
@@ -2001,10 +2066,11 @@ fun! s:NetrwMaps(islocal)
    nnoremap <buffer> <silent> mp	:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
    nnoremap <buffer> <silent> mr	:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
    nnoremap <buffer> <silent> ms	:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
+   nnoremap <buffer> <silent> mt	:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
    nnoremap <buffer> <silent> mT	:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
-   nnoremap <buffer> <silent> mt	:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
    nnoremap <buffer> <silent> mu	:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
+   nnoremap <buffer> <silent> mX	:<c-u>call <SID>NetrwMarkFileVimCmd(0)<cr>
    nnoremap <buffer> <silent> mz	:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
    nnoremap <buffer> <silent> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
    nnoremap <buffer> <silent> gd	:<c-u>call <SID>NetrwForceChgDir(0,<SID>NetrwGetWord())<cr>
@@ -2031,6 +2097,7 @@ fun! s:NetrwMaps(islocal)
    nnoremap <buffer> <silent> v		:call <SID>NetrwSplit(2)<cr>
    nnoremap <buffer> <silent> x		:call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
    nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(0)<cr>
+   " remote insert-mode maps
    inoremap <buffer> <silent> <cr>	<c-o>:call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()))<cr>
    inoremap <buffer> <silent> <c-l>	<c-o>:call <SID>NetrwRefresh(0,<SID>NetrwBrowseChgDir(0,'./'))<cr>
    inoremap <buffer> <silent> -		<c-o>:exe "norm! 0"<bar>call <SID>NetrwBrowse(0,<SID>NetrwBrowseChgDir(0,'../'))<cr>
@@ -2046,10 +2113,11 @@ fun! s:NetrwMaps(islocal)
    inoremap <buffer> <silent> mp	<c-o>:<c-u>call <SID>NetrwMarkFilePrint(0)<cr>
    inoremap <buffer> <silent> mr	<c-o>:<c-u>call <SID>NetrwMarkFileRegexp(0)<cr>
    inoremap <buffer> <silent> ms	<c-o>:<c-u>call <SID>NetrwMarkFileSource(0)<cr>
+   inoremap <buffer> <silent> mt	<c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
    inoremap <buffer> <silent> mT	<c-o>:<c-u>call <SID>NetrwMarkFileTag(0)<cr>
-   inoremap <buffer> <silent> mt	<c-o>:<c-u>call <SID>NetrwMarkFileTgt(0)<cr>
    inoremap <buffer> <silent> mu	<c-o>:<c-u>call <SID>NetrwUnMarkFile(0)<cr>
    inoremap <buffer> <silent> mx	<c-o>:<c-u>call <SID>NetrwMarkFileExe(0)<cr>
+   inoremap <buffer> <silent> mX	<c-o>:<c-u>call <SID>NetrwMarkFileVimCmd(0)<cr>
    inoremap <buffer> <silent> mz	<c-o>:<c-u>call <SID>NetrwMarkFileCompress(0)<cr>
    inoremap <buffer> <silent> gb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_cur)<cr>
    inoremap <buffer> <silent> gh	<c-o>:<c-u>call <SID>NetrwHidden(0)<cr>
@@ -2345,7 +2413,7 @@ fun! s:NetrwBookHistSave()
   setlocal nocin noai noci magic nospell nohid wig= noaw
   setlocal ma noro write
   if exists("&acd") | setlocal noacd | endif
-  sil! keepj %d
+  sil! keepj keepalt %d
 
   " save .netrwhist -- no attempt to merge
   sil! file .netrwhist
@@ -2457,11 +2525,12 @@ fun! s:NetrwBrowse(islocal,dirname)
    call s:NetrwSafeOptions()
    setlocal ma noro
 "   call Decho("setlocal ma noro")
-   let b:netrw_curdir= dirname
-"   call Decho("exe sil! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
-   exe "sil! keepj keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
+   let b:netrw_curdir = dirname
+   let url            = s:method."://".s:user.s:machine.(s:port ? ":".s:port : "")."/".s:path
+"   call Decho("exe sil! keepalt file ".fnameescape(url)." (bt=".&bt.")")
+   exe "sil! keepj keepalt file ".fnameescape(url)
    exe "sil! keepj keepalt doau BufReadPre ".fnameescape(s:fname)
-   sil call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
+   sil call netrw#NetRead(2,url)
    if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz' && s:path !~ '.tar.xz' && s:path !~ '.txz'
     " netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
     exe "sil keepj keepalt doau BufReadPost ".fnameescape(s:fname)
@@ -2604,10 +2673,12 @@ fun! s:NetrwBrowse(islocal,dirname)
   " -----------------------
   keepj call s:NetrwMaps(a:islocal)
   keepj call s:PerformListing(a:islocal)
-  if v:version >= 700 && has("balloon_eval") && &l:bexpr == ""
+  if v:version >= 700 && has("balloon_eval") && &beval == 0 && &l:bexpr == "" && !exists("g:netrw_nobeval")
    let &l:bexpr= "netrw#NetrwBalloonHelp()"
+"   call Decho("set up balloon help: l:bexpr=".&l:bexpr)
    set beval
   endif
+  call s:NetrwOptionRestore("w:")
 
   " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
   " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
@@ -3422,7 +3493,7 @@ fun! netrw#NetrwBrowseX(fname,remote)
      " g:Netrw_corehandler is a function reference (see :help Funcref)
 "     call Decho("g:Netrw_corehandler is a funcref")
      call g:Netrw_corehandler(a:fname)
-    elseif type(g:netrw_corehandler) == 3)
+    elseif type(g:Netrw_corehandler) == 3)
      " g:Netrw_corehandler is a List of function references (see :help Funcref)
 "     call Decho("g:Netrw_corehandler is a List")
      for Fncref in g:Netrw_corehandler
@@ -3680,32 +3751,32 @@ fun! netrw#Explore(indx,dosplit,style,..
 
    if a:style == 0      " Explore, Sexplore
 "    call Decho("style=0: Explore or Sexplore")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
     exe winsz."wincmd s"
 
    elseif a:style == 1  "Explore!, Sexplore!
 "    call Decho("style=1: Explore! or Sexplore!")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
     exe winsz."wincmd v"
 
    elseif a:style == 2  " Hexplore
 "    call Decho("style=2: Hexplore")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
     exe "bel ".winsz."wincmd s"
 
    elseif a:style == 3  " Hexplore!
 "    call Decho("style=3: Hexplore!")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winheight(0))/100 : -winsz
     exe "abo ".winsz."wincmd s"
 
    elseif a:style == 4  " Vexplore
 "    call Decho("style=4: Vexplore")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
     exe "lefta ".winsz."wincmd v"
 
    elseif a:style == 5  " Vexplore!
 "    call Decho("style=5: Vexplore!")
-    let winsz= (winsz*winheight(0))/100
+    let winsz= (winsz > 0)? (winsz*winwidth(0))/100 : -winsz
     exe "rightb ".winsz."wincmd v"
 
    elseif a:style == 6  " Texplore
@@ -3721,28 +3792,28 @@ fun! netrw#Explore(indx,dosplit,style,..
   keepj norm! 0
 
   if a:0 > 0
-"   call Decho("case [a:0=".a:0."] > 0: a:1<".a:1.">")
+"   call Decho("case [a:0=".a:0."] > 0")
    if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin))
-"    call Decho("case a:1: ~ and unix or cygwin")
+"    call Decho("..case a:1<".a:1.">: starts with ~ and unix or cygwin")
     let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),''))
-"    call Decho("using dirname<".dirname.">  (case: ~ && unix||cygwin)")
+"    call Decho("..using dirname<".dirname.">  (case: ~ && unix||cygwin)")
    elseif a:1 == '.'
-"    call Decho("case a:1: .")
+"    call Decho("..case a:1<".a:1.">: matches .")
     let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd())
     if dirname !~ '/$'
      let dirname= dirname."/"
     endif
-"    call Decho("using dirname<".dirname.">  (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
+"    call Decho("..using dirname<".dirname.">  (case: ".(exists("b:netrw_curdir")? "b:netrw_curdir" : "getcwd()").")")
    elseif a:1 =~ '\$'
-"    call Decho("case a:1: $")
+"    call Decho("..case a:1<".a:1.">: matches ending $")
     let dirname= simplify(expand(a:1))
-"    call Decho("using user-specified dirname<".dirname."> with $env-var")
-   elseif a:1 !~ '^\*/'
-"    call Decho("case a:1: other, not pattern or filepattern")
+"    call Decho("..using user-specified dirname<".dirname."> with $env-var")
+   elseif a:1 !~ '^\*\{1,2}/'
+"    call Decho("..case a:1<".a:1.">: other, not pattern or filepattern")
     let dirname= simplify(a:1)
-"    call Decho("using user-specified dirname<".dirname.">")
+"    call Decho("..using user-specified dirname<".dirname.">")
    else
-"    call Decho("case a:1: pattern or filepattern")
+"    call Decho("..case a:1: pattern or filepattern")
     let dirname= a:1
    endif
   else
@@ -3761,7 +3832,22 @@ fun! netrw#Explore(indx,dosplit,style,..
   endif
 "  call Decho("dirname<".dirname.">  (after simplify)")
 
-  if dirname =~ '/\*\*/'
+  if dirname =~ '^\*//'
+   " starpat=1: Explore *//pattern   (current directory only search for files containing pattern)
+"   call Decho("case Explore *//pattern")
+   let pattern= substitute(dirname,'^\*//\(.*\)$','\1','')
+   let starpat= 1
+"   call Decho("..Explore *//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">")
+   if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
+
+  elseif dirname =~ '^\*\*//'
+   " starpat=2: Explore **//pattern  (recursive descent search for files containing pattern)
+"   call Decho("case Explore **//pattern")
+   let pattern= substitute(dirname,'^\*\*//','','')
+   let starpat= 2
+"   call Decho("..Explore **//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">")
+
+  elseif dirname =~ '/\*\*/'
    " handle .../**/.../filepat
 "   call Decho("case Explore .../**/.../filepat")
    let prefixdir= substitute(dirname,'^\(.\{-}\)\*\*.*$','\1','')
@@ -3772,23 +3858,8 @@ fun! netrw#Explore(indx,dosplit,style,..
    endif
    let dirname= substitute(dirname,'^.\{-}\(\*\*/.*\)$','\1','')
    let starpat= 4;
-"   call Decho("pwd<".getcwd()."> dirname<".dirname.">")
-"   call Decho("case Explore ../**/../filepat (starpat=".starpat.")")
-
-  elseif dirname =~ '^\*//'
-   " starpat=1: Explore *//pattern   (current directory only search for files containing pattern)
-"   call Decho("case Explore *//pattern")
-   let pattern= substitute(dirname,'^\*//\(.*\)$','\1','')
-   let starpat= 1
-"   call Decho("Explore *//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">")
-   if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
-
-  elseif dirname =~ '^\*\*//'
-   " starpat=2: Explore **//pattern  (recursive descent search for files containing pattern)
-"   call Decho("case Explore **//pattern")
-   let pattern= substitute(dirname,'^\*\*//','','')
-   let starpat= 2
-"   call Decho("Explore **//pat: (starpat=".starpat.") dirname<".dirname."> -> pattern<".pattern.">")
+"   call Decho("..pwd<".getcwd()."> dirname<".dirname.">")
+"   call Decho("..case Explore ../**/../filepat (starpat=".starpat.")")
 
   elseif dirname =~ '^\*/'
    " starpat=3: Explore */filepat   (search in current directory for filenames matching filepat)
@@ -3810,14 +3881,14 @@ fun! netrw#Explore(indx,dosplit,style,..
 "   call Decho("case starpat==0 && a:indx=".a:indx.": dirname<".dirname."> Explore Hexplore Vexplore Sexplore")
    if dirname == ""
     let dirname= curfiledir
-"    call Decho("empty dirname, using current file's directory<".dirname.">")
+"    call Decho("..empty dirname, using current file's directory<".dirname.">")
    endif
    if dirname =~ '^scp:' || dirname =~ '^ftp:'
-"    call Decho("calling NetrwBrowse(0,dirname<".dirname.">)")
+"    call Decho("..calling NetrwBrowse(0,dirname<".dirname.">)")
     call s:NetrwBrowse(0,dirname)
    else
     if dirname == ""|let dirname= getcwd()|endif
-"    call Decho("calling LocalBrowseCheck(dirname<".dirname.">)")
+"    call Decho("..calling LocalBrowseCheck(dirname<".dirname.">)")
     call netrw#LocalBrowseCheck(dirname)
    endif
 
@@ -3836,24 +3907,24 @@ fun! netrw#Explore(indx,dosplit,style,..
    " Nexplore, Pexplore, Explore: handle starpat
 "   call Decho("case a:indx<=0: Nexplore, Pexplore, <s-down>, <s-up> starpat=".starpat." a:indx=".a:indx)
    if !mapcheck("<s-up>","n") && !mapcheck("<s-down>","n") && exists("b:netrw_curdir")
-"    call Decho("set up <s-up> and <s-down> maps")
+"    call Decho("..set up <s-up> and <s-down> maps")
     let s:didstarstar= 1
     nnoremap <buffer> <silent> <s-up>	:Pexplore<cr>
     nnoremap <buffer> <silent> <s-down>	:Nexplore<cr>
    endif
 
    if has("path_extra")
-"    call Decho("starpat=".starpat.": has +path_extra")
+"    call Decho("..starpat=".starpat.": has +path_extra")
     if !exists("w:netrw_explore_indx")
      let w:netrw_explore_indx= 0
     endif
 
     let indx = a:indx
-"    call Decho("starpat=".starpat.": set indx= [a:indx=".indx."]")
+"    call Decho("..starpat=".starpat.": set indx= [a:indx=".indx."]")
 
     if indx == -1
      " Nexplore
-"     call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
+"     call Decho("..case Nexplore with starpat=".starpat.": (indx=".indx.")")
      if !exists("w:netrw_explore_list") " sanity check
       keepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
       sil! let @* = keepregstar
@@ -3866,13 +3937,13 @@ fun! netrw#Explore(indx,dosplit,style,..
      if indx < 0                        | let indx= 0                           | endif
      if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
      let curfile= w:netrw_explore_list[indx]
-"     call Decho("indx=".indx." curfile<".curfile.">")
+"     call Decho("....indx=".indx." curfile<".curfile.">")
      while indx < w:netrw_explore_listlen && curfile == w:netrw_explore_list[indx]
       let indx= indx + 1
-"      call Decho("indx=".indx." (Nexplore while loop)")
+"      call Decho("....indx=".indx." (Nexplore while loop)")
      endwhile
      if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
-"     call Decho("Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
+"     call Decho("....Nexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
 
     elseif indx == -2
      " Pexplore
@@ -3889,30 +3960,30 @@ fun! netrw#Explore(indx,dosplit,style,..
      if indx < 0                        | let indx= 0                           | endif
      if indx >= w:netrw_explore_listlen | let indx= w:netrw_explore_listlen - 1 | endif
      let curfile= w:netrw_explore_list[indx]
-"     call Decho("indx=".indx." curfile<".curfile.">")
+"     call Decho("....indx=".indx." curfile<".curfile.">")
      while indx >= 0 && curfile == w:netrw_explore_list[indx]
       let indx= indx - 1
-"      call Decho("indx=".indx." (Pexplore while loop)")
+"      call Decho("....indx=".indx." (Pexplore while loop)")
      endwhile
      if indx < 0                        | let indx= 0                           | endif
-"     call Decho("Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
+"     call Decho("....Pexplore: indx= [w:netrw_explore_indx=".w:netrw_explore_indx."]=".indx)
 
     else
      " Explore -- initialize
      " build list of files to Explore with Nexplore/Pexplore
-"     call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")")
+"     call Decho("..starpat=".starpat.": case Explore: initialize (indx=".indx.")")
      keepj call s:NetrwClearExplore()
      let w:netrw_explore_indx= 0
      if !exists("b:netrw_curdir")
       let b:netrw_curdir= getcwd()
      endif
-"     call Decho("starpat=".starpat.": b:netrw_curdir<".b:netrw_curdir.">")
+"     call Decho("....starpat=".starpat.": b:netrw_curdir<".b:netrw_curdir.">")
 
      " switch on starpat to build the w:netrw_explore_list of files
      if starpat == 1
       " starpat=1: Explore *//pattern  (current directory only search for files containing pattern)
-"      call Decho("starpat=".starpat.": build *//pattern list")
-"      call Decho("pattern<".pattern.">")
+"      call Decho("..case starpat=".starpat.": build *//pattern list  (curdir-only srch for files containing pattern)  &hls=".&hls)
+"      call Decho("....pattern<".pattern.">")
       try
        exe "keepj noautocmd vimgrep /".pattern."/gj ".fnameescape(b:netrw_curdir)."/*"
       catch /^Vim\%((\a\+)\)\=:E480/
@@ -3925,7 +3996,8 @@ fun! netrw#Explore(indx,dosplit,style,..
 
      elseif starpat == 2
       " starpat=2: Explore **//pattern (recursive descent search for files containing pattern)
-"      call Decho("starpat=".starpat.": build **//pattern list")
+"      call Decho("..case starpat=".starpat.": build **//pattern list  (recursive descent files containing pattern)")
+"      call Decho("....pattern<".pattern.">")
       try
        exe "sil keepj noautocmd vimgrep /".pattern."/gj "."**/*"
       catch /^Vim\%((\a\+)\)\=:E480/
@@ -3940,27 +4012,28 @@ fun! netrw#Explore(indx,dosplit,style,..
       let s:netrw_curdir       = b:netrw_curdir
       let w:netrw_explore_list = getqflist()
       let w:netrw_explore_list = s:NetrwExploreListUniq(map(w:netrw_explore_list,'s:netrw_curdir."/".bufname(v:val.bufnr)'))
+      if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
 
      elseif starpat == 3
       " starpat=3: Explore */filepat   (search in current directory for filenames matching filepat)
-"      call Decho("starpat=".starpat.": build */filepat list")
+"      call Decho("..case starpat=".starpat.": build */filepat list  (curdir-only srch filenames matching filepat)  &hls=".&hls)
       let filepat= substitute(dirname,'^\*/','','')
       let filepat= substitute(filepat,'^[%#<]','\\&','')
-"      call Decho("b:netrw_curdir<".b:netrw_curdir.">")
-"      call Decho("filepat<".filepat.">")
+"      call Decho("....b:netrw_curdir<".b:netrw_curdir.">")
+"      call Decho("....filepat<".filepat.">")
       let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".filepat),'\n'))
       if &hls | let keepregslash= s:ExplorePatHls(filepat) | endif
 
      elseif starpat == 4
       " starpat=4: Explore **/filepat  (recursive descent search for filenames matching filepat)
-"      call Decho("starpat=".starpat.": build **/filepat list")
+"      call Decho("..case starpat=".starpat.": build **/filepat list  (recursive descent srch filenames matching filepat)  &hls=".&hls)
       let w:netrw_explore_list= s:NetrwExploreListUniq(split(expand(b:netrw_curdir."/".dirname),'\n'))
       if &hls | let keepregslash= s:ExplorePatHls(dirname) | endif
      endif " switch on starpat to build w:netrw_explore_list
 
      let w:netrw_explore_listlen = len(w:netrw_explore_list)
-"     call Decho("w:netrw_explore_list<".string(w:netrw_explore_list).">")
-"     call Decho("w:netrw_explore_listlen=".w:netrw_explore_listlen)
+"     call Decho("....w:netrw_explore_list<".string(w:netrw_explore_list).">")
+"     call Decho("....w:netrw_explore_listlen=".w:netrw_explore_listlen)
 
      if w:netrw_explore_listlen == 0 || (w:netrw_explore_listlen == 1 && w:netrw_explore_list[0] =~ '\*\*\/')
       keepj call netrw#ErrorMsg(s:WARNING,"no files matched",42)
@@ -3974,22 +4047,22 @@ fun! netrw#Explore(indx,dosplit,style,..
 
     " NetrwStatusLine support - for exploring support
     let w:netrw_explore_indx= indx
-"    call Decho("w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
+"    call Decho("....w:netrw_explore_list<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
 
     " wrap the indx around, but issue a note
     if indx >= w:netrw_explore_listlen || indx < 0
-"     call Decho("wrap indx (indx=".indx." listlen=".w:netrw_explore_listlen.")")
+"     call Decho("....wrap indx (indx=".indx." listlen=".w:netrw_explore_listlen.")")
      let indx                = (indx < 0)? ( w:netrw_explore_listlen - 1 ) : 0
      let w:netrw_explore_indx= indx
      keepj call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
     endif
 
     exe "let dirfile= w:netrw_explore_list[".indx."]"
-"    call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
+"    call Decho("....dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
     let newdir= substitute(dirfile,'/[^/]*$','','e')
-"    call Decho("newdir<".newdir.">")
-
-"    call Decho("calling LocalBrowseCheck(newdir<".newdir.">)")
+"    call Decho("....newdir<".newdir.">")
+
+"    call Decho("....calling LocalBrowseCheck(newdir<".newdir.">)")
     call netrw#LocalBrowseCheck(newdir)
     if !exists("w:netrw_liststyle")
      let w:netrw_liststyle= g:netrw_liststyle
@@ -4003,10 +4076,10 @@ fun! netrw#Explore(indx,dosplit,style,..
     let w:netrw_explore_bufnr   = bufnr("%")
     let w:netrw_explore_line    = line(".")
     keepj call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
-"    call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
+"    call Decho("....explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
 
    else
-"    call Decho("your vim does not have +path_extra")
+"    call Decho("..your vim does not have +path_extra")
     if !exists("g:netrw_quiet")
      keepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
     endif
@@ -4018,7 +4091,7 @@ fun! netrw#Explore(indx,dosplit,style,..
    endif
 
   else
-"   call Decho("default case: Explore newdir<".dirname.">")
+"   call Decho("..default case: Explore newdir<".dirname.">")
    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && dirname =~ '/'
     sil! unlet w:netrw_treedict
     sil! unlet w:netrw_treetop
@@ -4084,7 +4157,7 @@ endfun
 " ---------------------------------------------------------------------
 " s:NetrwExploreListUniq: {{{2
 fun! s:NetrwExploreListUniq(explist)
-"  call Dfunc("s:NetrwExploreListUniq(explist)")
+"  call Dfunc("s:NetrwExploreListUniq(explist<".string(a:explist).">)")
 
   " this assumes that the list is already sorted
   let newexplist= []
@@ -4095,7 +4168,7 @@ fun! s:NetrwExploreListUniq(explist)
    endif
   endfor
 
-"  call Dret("s:NetrwExploreListUniq")
+"  call Dret("s:NetrwExploreListUniq newexplist<".string(newexplist).">")
   return newexplist
 endfun
 
@@ -4455,11 +4528,15 @@ fun! s:NetrwMakeDir(usrhost)
 "   redraw!
 
   elseif b:netrw_method == 2
-   " COMBAK -- future work
-   keepj call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
+   let svpos= netrw#NetrwSavePosn()
+   call s:NetrwRemoteFtpCmd("",g:netrw_remote_mkdir.' "'.newdirname.'"')
+   keepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   elseif b:netrw_method == 3
-   " COMBAK -- future work
-   keepj call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
+   let svpos= netrw#NetrwSavePosn()
+   call s:NetrwRemoteFtpCmd("",g:netrw_remote_mkdir.' "'.newdirname.'"')
+   keepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   endif
 
 "  call Dret("NetrwMakeDir")
@@ -4521,8 +4598,7 @@ fun! s:NetrwMarkFile(islocal,fname)
       endif
       let first= 0
      endfor
-"     call Decho("ending s:netrwmarkfilelist_"curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">")
-"     call Decho("ending s:netrwmarkfilemtch_"curbufnr."<".s:netrwmarkfilemtch_{curbufnr}.">")
+"     call Decho("ending s:netrwmarkfilelist_".curbufnr."<".string(s:netrwmarkfilelist_{curbufnr}).">")
     endif
    endif
 
@@ -4788,7 +4864,7 @@ fun! s:NetrwMarkFileEdit(islocal)
 endfun
 
 " ---------------------------------------------------------------------
-" s:NetrwMarkFileExe: (invoked by mx) execute arbitrary command on marked files, one at a time {{{2
+" s:NetrwMarkFileExe: (invoked by mx) execute arbitrary system command on marked files, one at a time {{{2
 "                     Uses the local marked-file list.
 fun! s:NetrwMarkFileExe(islocal)
 "  call Dfunc("s:NetrwMarkFileExe(islocal=".a:islocal.")")
@@ -4802,6 +4878,10 @@ fun! s:NetrwMarkFileExe(islocal)
    let cmd= input("Enter command: ","","file")
    call inputrestore()
 "   call Decho("cmd<".cmd.">")
+   if cmd == ""
+"    "   call Dret("s:NetrwMarkFileExe : early exit, empty command")
+    return
+   endif
 
    " apply command to marked files.  Substitute: filename -> %
    " If no %, then append a space and the filename to the command
@@ -4904,6 +4984,113 @@ fun! s:NetrwMarkHideSfx(islocal)
 endfun
 
 " ---------------------------------------------------------------------
+" s:NetrwMarkFileVimCmd: (invoked by mX) execute arbitrary vim command on marked files, one at a time {{{2
+"                     Uses the local marked-file list.
+fun! s:NetrwMarkFileVimCmd(islocal)
+"  call Dfunc("s:NetrwMarkFileVimCmd(islocal=".a:islocal.")")
+  let svpos    = netrw#NetrwSavePosn()
+  let curdir   = b:netrw_curdir
+  let curbufnr = bufnr("%")
+
+  if exists("s:netrwmarkfilelist_{curbufnr}")
+   " get the command
+   call inputsave()
+   let cmd= input("Enter vim command: ","","file")
+   call inputrestore()
+"   call Decho("cmd<".cmd.">")
+   if cmd == ""
+"    "   call Dret("s:NetrwMarkFileVimCmd : early exit, empty command")
+    return
+   endif
+
+   " apply command to marked files.  Substitute: filename -> %
+   " If no %, then append a space and the filename to the command
+   for fname in s:netrwmarkfilelist_{curbufnr}
+"    call Decho("fname<".fname.">")
+    if a:islocal
+     1split
+     exe "sil! keepalt e ".fnameescape(fname)
+"     call Decho("local<".fname.">: exe ".cmd)
+     exe cmd
+     exe "sil! keepalt wq!"
+    else
+     " COMBAK -- not supported yet
+"     call Decho("remote<".fname.">: exe ".cmd." : NOT SUPPORTED YET")
+     echo "sorry, \"mX\" not supported yet for remote files"
+    endif
+   endfor
+
+   " unmark marked file list
+   call s:NetrwUnmarkList(curbufnr,curdir)
+
+   " refresh the listing
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
+  else
+   keepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
+  endif
+  
+"  call Dret("s:NetrwMarkFileVimCmd")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwMarkHideSfx: (invoked by mh) (un)hide files having same suffix
+"                  as the marked file(s) (toggles suffix presence)
+"                  Uses the local marked file list.
+fun! s:NetrwMarkHideSfx(islocal)
+"  call Dfunc("s:NetrwMarkHideSfx(islocal=".a:islocal.")")
+  let svpos    = netrw#NetrwSavePosn()
+  let curbufnr = bufnr("%")
+
+  " s:netrwmarkfilelist_{curbufnr}: the List of marked files
+  if exists("s:netrwmarkfilelist_{curbufnr}")
+
+   for fname in s:netrwmarkfilelist_{curbufnr}
+"     call Decho("s:NetrwMarkFileCopy: fname<".fname.">")
+     " construct suffix pattern
+     if fname =~ '\.'
+      let sfxpat= "^.*".substitute(fname,'^.*\(\.[^. ]\+\)$','\1','')
+     else
+      let sfxpat= '^\%(\%(\.\)\@!.\)*$'
+     endif
+     " determine if its in the hiding list or not
+     let inhidelist= 0
+     if g:netrw_list_hide != ""
+      let itemnum = 0
+      let hidelist= split(g:netrw_list_hide,',')
+      for hidepat in hidelist
+       if sfxpat == hidepat
+        let inhidelist= 1
+        break
+       endif
+       let itemnum= itemnum + 1
+      endfor
+     endif
+"     call Decho("fname<".fname."> inhidelist=".inhidelist." sfxpat<".sfxpat.">")
+     if inhidelist
+      " remove sfxpat from list
+      call remove(hidelist,itemnum)
+      let g:netrw_list_hide= join(hidelist,",")
+     elseif g:netrw_list_hide != ""
+      " append sfxpat to non-empty list
+      let g:netrw_list_hide= g:netrw_list_hide.",".sfxpat
+     else
+      " set hiding list to sfxpat
+      let g:netrw_list_hide= sfxpat
+     endif
+    endfor
+
+   " refresh the listing
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
+  else
+   keepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
+  endif
+
+"  call Dret("s:NetrwMarkHideSfx")
+endfun
+
+" ---------------------------------------------------------------------
 " s:NetrwMarkFileGrep: (invoked by mg) This function applies vimgrep to marked files {{{2
 "                     Uses the global markfilelist
 fun! s:NetrwMarkFileGrep(islocal)
@@ -5722,11 +5909,13 @@ fun! s:NetrwPrevWinOpen(islocal)
    " if only one window, open a new one first
 "   call Decho("only one window, so open a new one (g:netrw_alto=".g:netrw_alto.")")
    if g:netrw_preview
-"    call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".g:netrw_winsize."wincmd s")
-    exe (g:netrw_alto? "top " : "bot ")."vert ".g:netrw_winsize."wincmd s"
+    let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
+"    call Decho("exe ".(g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s")
+    exe (g:netrw_alto? "top " : "bot ")."vert ".winsz."wincmd s"
    else
-"    call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s")
-    exe (g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s"
+    let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
+"    call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s")
+    exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
    endif
    let didsplit  = 1
 
@@ -5991,8 +6180,9 @@ fun! s:NetrwPreview(path) range
   if has("quickfix")
    if !isdirectory(a:path)
     if g:netrw_preview && !g:netrw_alto
-     let pvhkeep= &pvh
-     let &pvh   = winwidth(0) - g:netrw_winsize
+     let pvhkeep = &pvh
+     let winsz   = (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
+     let &pvh    = winwidth(0) - winsz
     endif
     exe (g:netrw_alto? "top " : "bot ").(g:netrw_preview? "vert " : "")."pedit ".fnameescape(a:path)
     if exists("pvhkeep")
@@ -6174,8 +6364,8 @@ fun! s:NetrwSplit(mode)
 
   if a:mode == 0
    " remote and o
-"   call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s")
-   let winsz= (g:netrw_winsize*winheight(0))/100
+   let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
+"   call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s")
    exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
    let s:didsplit= 1
    keepj call s:RestoreWinVars()
@@ -6194,8 +6384,8 @@ fun! s:NetrwSplit(mode)
 
   elseif a:mode == 2
    " remote and v
-"   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v")
-   let winsz= (g:netrw_winsize*winwidth(0))/100
+   let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
+"   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v")
    exe (g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v"
    let s:didsplit= 1
    keepj call s:RestoreWinVars()
@@ -6204,8 +6394,8 @@ fun! s:NetrwSplit(mode)
 
   elseif a:mode == 3
    " local and o
-"   call Decho("exe ".(g:netrw_alto? "bel " : "abo ").g:netrw_winsize."wincmd s")
-   let winsz= (g:netrw_winsize*winheight(0))/100
+   let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winheight(0))/100 : -g:netrw_winsize
+"   call Decho("exe ".(g:netrw_alto? "bel " : "abo ").winsz."wincmd s")
    exe (g:netrw_alto? "bel " : "abo ").winsz."wincmd s"
    let s:didsplit= 1
    keepj call s:RestoreWinVars()
@@ -6226,8 +6416,8 @@ fun! s:NetrwSplit(mode)
 
   elseif a:mode == 5
    " local and v
-"   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v")
-   let winsz= (g:netrw_winsize*winwidth(0))/100
+   let winsz= (g:netrw_winsize > 0)? (g:netrw_winsize*winwidth(0))/100 : -g:netrw_winsize
+"   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v")
    exe (g:netrw_altv? "rightb " : "lefta ").winsz."wincmd v"
    let s:didsplit= 1
    keepj call s:RestoreWinVars()
@@ -6498,6 +6688,17 @@ endfun
 fun! s:PerformListing(islocal)
 "  call Dfunc("s:PerformListing(islocal=".a:islocal.") bufnr(%)=".bufnr("%")."<".bufname("%").">")
 
+  " set up syntax highlighting {{{3
+"  call Decho("set up syntax highlighting")
+  if has("syntax")
+   if !exists("g:syntax_on") || !g:syntax_on
+"    call Decho("but g:syntax_on".(exists("g:syntax_on")? "=".g:syntax_on : "<doesn't exist>"))
+    setlocal ft=
+   elseif &ft != "netrw"
+    setlocal ft=netrw
+   endif
+  endif
+
   keepj call s:NetrwSafeOptions()
   setlocal noro ma
 "  call Decho("setlocal noro ma")
@@ -6593,17 +6794,6 @@ fun! s:PerformListing(islocal)
 "   call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
   endif
 
-  " set up syntax highlighting {{{3
-"  call Decho("set up syntax highlighting")
-  if has("syntax")
-   if !exists("g:syntax_on") || !g:syntax_on
-"    call Decho("but g:syntax_on".(exists("g:syntax_on")? "=".g:syntax_on : "<doesn't exist>"))
-    setlocal ft=
-   elseif &ft != "netrw"
-    setlocal ft=netrw
-   endif
-  endif
-
   " get list of files
 "  call Decho("Get list of files - islocal=".a:islocal)
   if a:islocal
@@ -6860,10 +7050,10 @@ fun! s:NetrwRemoteListing()
    else
     if s:path == ""
 "     call Decho("2: exe sil r! ".listcmd)
-     exe "sil! keepalt r! ".listcmd
+     exe "sil! keepj keepalt r! ".listcmd
     else
 "     call Decho("3: exe sil r! ".listcmd.' '.shellescape(fnameescape(s:path),1))
-     exe "sil! keepalt r! ".listcmd.' '.shellescape(fnameescape(s:path),1)
+     exe "sil! keepj keepalt r! ".listcmd.' '.shellescape(fnameescape(s:path),1)
 "     call Decho("listcmd<".listcmd."> path<".s:path.">")
     endif
    endif
@@ -6951,7 +7141,7 @@ fun! s:NetrwRemoteRm(usrhost,path) range
 
    " remove multiple files and directories
    while ctr <= a:lastline
-    exe ctr
+    exe "keepj ".ctr
     let ok= s:NetrwRemoteRmFile(a:path,s:NetrwGetWord(),all)
     if ok =~ 'q\%[uit]'
      break
@@ -7118,10 +7308,10 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
 "   exe "keepjumps ".w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
    if exists("g:netrw_port") && g:netrw_port != ""
 "    call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
-    exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
+    exe s:netrw_silentxfer." keepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
    else
 "    call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-    exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+    exe s:netrw_silentxfer." keepj ".w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
    endif
 
    ".........................................
@@ -7463,8 +7653,8 @@ fun! s:LocalListing()
   sil! keepj g/^$/d
   sil! keepj %s/\r$//e
   call histdel("/",-1)
-  exe "setlocal ts=".g:netrw_maxfilenamelen
-"  call Decho("setlocal ts=".g:netrw_maxfilenamelen)
+  exe "setl ts=".g:netrw_maxfilenamelen
+"  call Decho("setl ts=".g:netrw_maxfilenamelen)
 
 "  call Dret("s:LocalListing")
 endfun
@@ -7808,19 +7998,48 @@ fun! s:LocalFastBrowser()
 endfun
 
 " ---------------------------------------------------------------------
-" netrw#FileUrlRead: handles reading file:///* files {{{2
+" netrw#FileUrlRead: handles reading file://* files {{{2
+"   Should accept:   file://localhost/etc/fstab
+"                    file:///etc/fstab
+"                    file:///c:/WINDOWS/clock.avi
+"                    file:///c|/WINDOWS/clock.avi
+"                    file://localhost/c:/WINDOWS/clock.avi
+"                    file://localhost/c|/WINDOWS/clock.avi
+"                    file://c:/foo.txt
+"                    file:///c:/foo.txt
+" and %XX (where X is [0-9a-fA-F] is converted into a character with the given hexadecimal value
 fun! netrw#FileUrlRead(fname)
-"  call Dfunc("netrw#FileUrlRead()")
-  let fname2396 = netrw#RFC2396(a:fname)
+"  call Dfunc("netrw#FileUrlRead(fname<".a:fname.">)")
+  let fname = a:fname
+  if fname =~ '^file://localhost/'
+"   call Decho('converting file://localhost/   -to-  file:///')
+   let fname= substitute(fname,'^file://localhost/','file:///','')
+"   call Decho("fname<".fname.">")
+  endif
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   if fname  =~ '^file:///\=\a[|:]/'
+"    call Decho('converting file:///\a|/   -to-  file://\a:/')
+    let fname = substitute(fname,'^file:///\=\(\a\)[|:]/','file://\1:/','')
+"    call Decho("fname<".fname.">")
+   endif
+  endif
+  let fname2396 = netrw#RFC2396(fname)
   let fname2396e= fnameescape(fname2396)
   let plainfname= substitute(fname2396,'file://\(.*\)','\1',"")
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+"   call Decho("windows exception for plainfname")
+   if plainfname =~ '^/\+\a:'
+"    call Decho('removing leading "/"s')
+    let plainfname= substitute(plainfname,'^/\+\(\a:\)','\1','')
+   endif
+  endif
 "  call Decho("fname2396<".fname2396.">")
 "  call Decho("plainfname<".plainfname.">")
   exe "sil doau BufReadPre ".fname2396e
-  exe 'r '.plainfname
+  exe 'keepj r '.plainfname
   exe 'file! '.plainfname
-  1d
-  setlocal nomod
+  keepj 1d
+  setl nomod
 "  call Dret("netrw#FileUrlRead")
   exe "sil doau BufReadPost ".fname2396e
 endfun
@@ -7859,8 +8078,8 @@ fun! netrw#ErrorMsg(level,msg,errnum)
    if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0
 "    call Decho("write to NetrwMessage buffer")
     exe bufwinnr("NetrwMessage")."wincmd w"
-"    call Decho("setlocal ma noro")
-    setlocal ma noro
+"    call Decho("setl ma noro")
+    setl ma noro
     keepj call setline(line("$")+1,level.a:msg)
     keepj $
    else
@@ -7868,10 +8087,10 @@ fun! netrw#ErrorMsg(level,msg,errnum)
     bo 1split
     call s:NetrwEnew()
     keepj call s:NetrwSafeOptions()
-    setlocal bt=nofile
+    setl bt=nofile
     keepj file NetrwMessage
 "    call Decho("setlocal ma noro")
-    setlocal ma noro
+    setl ma noro
     call setline(line("$"),level.a:msg)
    endif
 "   call Decho("wrote msg<".level.a:msg."> to NetrwMessage win#".winnr())
@@ -7883,7 +8102,7 @@ fun! netrw#ErrorMsg(level,msg,errnum)
     hi link netrwMesgWarning WarningMsg
     hi link netrwMesgError   Error
    endif
-   setlocal noma ro bh=wipe
+   setl noma ro bh=wipe
 
   else
    " (optional) netrw will show messages using echomsg.  Even if the
@@ -7913,7 +8132,7 @@ fun! netrw#NetrwRestorePosn(...)
   endif
 
   if a:0 > 0
-   exe a:1
+   exe "keepj ".a:1
   endif
 
   " restore window
@@ -7929,13 +8148,13 @@ fun! netrw#NetrwRestorePosn(...)
 
   " restore top-of-screen line
   if exists("w:netrw_hline")
-"   call Decho("restore topofscreen: exe norm! ".w:netrw_hline."G0z")
+"   call Decho("restore topofscreen: exe keepj norm! ".w:netrw_hline."G0z")
    exe "keepj norm! ".w:netrw_hline."G0z\<CR>"
   endif
 
   " restore position
   if exists("w:netrw_line") && exists("w:netrw_col")
-"   call Decho("restore posn: exe norm! ".w:netrw_line."G0".w:netrw_col."|")
+"   call Decho("restore posn: exe keepj norm! ".w:netrw_line."G0".w:netrw_col."|")
    exe "keepj norm! ".w:netrw_line."G0".w:netrw_col."\<bar>"
   endif
 
@@ -8160,48 +8379,56 @@ fun! s:NetrwCursor()
   if !exists("w:netrw_liststyle")
    let w:netrw_liststyle= g:netrw_liststyle
   endif
-"  call Dfunc("s:NetrwCursor() liststyle=".w:netrw_liststyle." g:netrw_cursor=".g:netrw_cursor." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
+"  call Dfunc("s:NetrwCursor() ft<".&ft."> liststyle=".w:netrw_liststyle." g:netrw_cursor=".g:netrw_cursor." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
 
   if &ft != "netrw"
    " if the current window isn't a netrw directory listing window, then use user cursorline/column
    " settings.  Affects when netrw is used to read/write a file using scp/ftp/etc.
+"   call Decho("case ft!=netrw: use user cul,cuc")
    let &l:cursorline   = s:netrw_usercul
    let &l:cursorcolumn = s:netrw_usercuc
 
   elseif g:netrw_cursor == 4
    " all styles: cursorline, cursorcolumn
-   setlocal cursorline
-   setlocal cursorcolumn
+"   call Decho("case g:netrw_cursor==4: setl cul cuc")
+   setl cursorline
+   setl cursorcolumn
 
   elseif g:netrw_cursor == 3
    " thin-long-tree: cursorline, user's cursorcolumn
    " wide          : cursorline, cursorcolumn
    if w:netrw_liststyle == s:WIDELIST
-    setlocal cursorline
-    setlocal cursorcolumn
+"    call Decho("case g:netrw_cursor==3 and wide: setlocal cul cuc")
+    setl cursorline
+    setl cursorcolumn
    else
-    setlocal cursorline
+"    call Decho("case g:netrw_cursor==3 and not wide: setlocal cul (use user's cuc)")
+    setl cursorline
     let &l:cursorcolumn   = s:netrw_usercuc
    endif
 
   elseif g:netrw_cursor == 2
    " thin-long-tree: cursorline, user's cursorcolumn
    " wide          : cursorline, user's cursorcolumn
+"   call Decho("case g:netrw_cursor==2: setlocal cuc (use user's cul)")
    let &l:cursorcolumn = s:netrw_usercuc
-   setlocal cursorline
+   setl cursorline
 
   elseif g:netrw_cursor == 1
    " thin-long-tree: user's cursorline, user's cursorcolumn
    " wide          : cursorline,        user's cursorcolumn
    let &l:cursorcolumn = s:netrw_usercuc
    if w:netrw_liststyle == s:WIDELIST
-    setlocal cursorline
+"    call Decho("case g:netrw_cursor==2 and wide: setlocal cul (use user's cuc)")
+    set cursorline
    else
+"    call Decho("case g:netrw_cursor==2 and not wide: (use user's cul,cuc)")
     let &l:cursorline   = s:netrw_usercul
    endif
 
   else
    " all styles: user's cursorline, user's cursorcolumn
+"   call Decho("default: (use user's cul,cuc)")
    let &l:cursorline   = s:netrw_usercul
    let &l:cursorcolumn = s:netrw_usercuc
   endif
@@ -8444,14 +8671,21 @@ endfun
 "             s:nbcd_curpos_{bufnr('%')} is set up by s:NetrwBrowseChgDir()
 fun! s:NetrwRexplore(islocal,dirname)
 "  call Dfunc("s:NetrwRexplore() w:netrw_rexlocal=".w:netrw_rexlocal." w:netrw_rexdir<".w:netrw_rexdir.">")
+  if !exists("w:netrw_rexlocal")
+   "   call Dret("s:NetrwRexplore() w:netrw_rexlocal doesn't exist")
+   return
+  endif
   if w:netrw_rexlocal
    keepj call netrw#LocalBrowseCheck(w:netrw_rexdir)
   else
    keepj call s:NetrwBrowse(0,w:netrw_rexdir)
   endif
+  if exists("s:initbeval")
+   set beval
+  endif
   if exists("s:nbcd_curpos_{bufnr('%')}")
    keepj call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
-   unlet s:nbcd_curpos_{bufnr('%')}
+"   unlet s:nbcd_curpos_{bufnr('%')}
   endif
   if exists("s:explore_match")
    exe "2match netrwMarkFile /".s:explore_match."/"
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
 " vimball.vim : construct a file containing both paths and files
 " Author:	Charles E. Campbell, Jr.
-" Date:		Apr 02, 2011
-" Version:	33
+" Date:		Sep 26, 2011
+" Version:	34
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2011 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -14,7 +14,7 @@
 if &cp || exists("g:loaded_vimball")
  finish
 endif
-let g:loaded_vimball = "v33"
+let g:loaded_vimball = "v34"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of vimball needs vim 7.2"
@@ -220,7 +220,16 @@ fun! vimball#Vimball(really,...)
 
   " go to vim plugin home
   if a:0 > 0
+   " let user specify the directory where the vimball is to be unpacked.
+   " If, however, the user did not specify a full path, set the home to be below the current directory
    let home= expand(a:1)
+   if has("win32") || has("win95") || has("win64") || has("win16")
+	if home !~ '^\a:[/\\]'
+	 let home= getcwd().'/'.a:1
+	endif
+   elseif home !~ '^/'
+	let home= getcwd().'/'.a:1
+   endif
   else
    let home= vimball#VimballHome()
   endif
@@ -282,11 +291,14 @@ fun! vimball#Vimball(really,...)
 "    call Decho("making directories if they don't exist yet (fname<".fname.">)")
     let fnamebuf= substitute(fname,'\\','/','g')
 	let dirpath = substitute(home,'\\','/','g')
+"	call Decho("init: fnamebuf<".fnamebuf.">")
+"	call Decho("init: dirpath <".dirpath.">")
     while fnamebuf =~ '/'
      let dirname  = dirpath."/".substitute(fnamebuf,'/.*$','','')
 	 let dirpath  = dirname
      let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','')
 "	 call Decho("dirname<".dirname.">")
+"	 call Decho("dirpath<".dirpath.">")
      if !isdirectory(dirname)
 "      call Decho("making <".dirname.">")
       if exists("g:vimball_mkdir")
@@ -569,9 +581,19 @@ endfun
 fun! s:ChgDir(newdir)
 "  call Dfunc("ChgDir(newdir<".a:newdir.">)")
   if (has("win32") || has("win95") || has("win64") || has("win16"))
-   exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
+   try
+    exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
+   catch  /^Vim\%((\a\+)\)\=:E/
+    call mkdir(fnameescape(substitute(a:newdir,'/','\\','g')))
+    exe 'silent cd '.fnameescape(substitute(a:newdir,'/','\\','g'))
+   endtry
   else
-   exe 'silent cd '.fnameescape(a:newdir)
+   try
+    exe 'silent cd '.fnameescape(a:newdir)
+   catch  /^Vim\%((\a\+)\)\=:E/
+    call mkdir(fnameescape(a:newdir))
+    exe 'silent cd '.fnameescape(a:newdir)
+   endtry
   endif
 "  call Dret("ChgDir : curdir<".getcwd().">")
 endfun
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 7.3.  Last change: 2011 Aug 29
+*eval.txt*	For Vim version 7.3.  Last change: 2011 Sep 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -6374,7 +6374,7 @@ last defined. Example: >
 <
 See |:verbose-cmd| for more information.
 
-							*E124* *E125*
+							*E124* *E125* *E853*
 :fu[nction][!] {name}([arguments]) [range] [abort] [dict]
 			Define a new function by the name {name}.  The name
 			must be made of alphanumeric characters and '_', and
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.3.  Last change: 2011 Aug 19
+*map.txt*       For Vim version 7.3.  Last change: 2011 Oct 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -237,11 +237,18 @@ For this reason the following is blocked
 - Editing another buffer.
 - The |:normal| command.
 - Moving the cursor is allowed, but it is restored afterwards.
-- You can use getchar(), but the existing typeahead isn't seen and new
-  typeahead is discarded.
 If you want the mapping to do any of these let the returned characters do
 that.
 
+You can use getchar(), it consumes typeahead if there is any. E.g., if you
+have these mappings: >
+  inoremap <expr> <C-L> nr2char(getchar())
+  inoremap <expr> <C-L>x "foo"
+If you now type CTRL-L nothing happens yet, Vim needs the next character to
+decide what mapping to use.  If you type 'x' the second mapping is used and
+"foo" is inserted.  If you type 'a' the first mapping is used, getchar() gets
+the 'a' and returns it.
+
 Here is an example that inserts a list number that increases: >
 	let counter = 0
 	inoremap <expr> <C-L> ListItem()
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.3.  Last change: 2011 Jul 18
+*mbyte.txt*     For Vim version 7.3.  Last change: 2011 Oct 15
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -797,8 +797,8 @@ is suitable for complex input, such as C
   number of Hira-gana characters are 76.  So, first, we pre-input text as
   pronounced in Hira-gana, second, we convert Hira-gana to Kanji or Kata-Kana,
   if needed.  There are some Kana-Kanji conversion server: jserver
-  (distributed with Wnn, see below) and canna.  Canna could be found at:
-  ftp://ftp.nec.co.jp/pub/Canna/ (no longer works).
+  (distributed with Wnn, see below) and canna.  Canna can be found at:
+  http://canna.sourceforge.jp/
 
 There is a good input system: Wnn4.2.  Wnn 4.2 contains,
     xwnmo (|IM-server|)
--- a/runtime/doc/netbeans.txt
+++ b/runtime/doc/netbeans.txt
@@ -1,4 +1,4 @@
-*netbeans.txt*  For Vim version 7.3.  Last change: 2010 Sep 29
+*netbeans.txt*  For Vim version 7.3.  Last change: 2011 Oct 20
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur et al.
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.3.  Last change: 2011 Sep 09
+*options.txt*	For Vim version 7.3.  Last change: 2011 Sep 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -6762,8 +6762,8 @@ A jump table for the options with a shor
 	   usetab	Like "useopen", but also consider windows in other tab
 			pages.
 	   split	If included, split the current window before loading
-			a buffer.  Otherwise: do not split, use current window.
-			Supported in |quickfix| commands that display errors.
+			a buffer for a |quickfix| command that display errors.
+			Otherwise: do not split, use current window.
 	   newtab	Like "split", but open a new tab page.  Overrules
 			"split" when both are present.
 
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.3.  Last change: 2011 Jul 20
+*pattern.txt*   For Vim version 7.3.  Last change: 2011 Sep 28
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -21,7 +21,7 @@ 9. Compare with Perl patterns	|perl-patt
 10. Highlighting matches	|match-highlight|
 
 ==============================================================================
-1. Search commands				*search-commands* *E486*
+1. Search commands				*search-commands*
 
 							*/*
 /{pattern}[/]<CR>	Search forward for the [count]'th occurrence of
@@ -150,6 +150,11 @@ use <Esc> to abandon the search.
 All matches for the last used search pattern will be highlighted if you set
 the 'hlsearch' option.  This can be suspended with the |:nohlsearch| command.
 
+When no match is found you get the error: *E486* Pattern not found
+Note that for the |:global| command this behaves like a normal message, for Vi
+compatibility.  For the |:s| command the "e" flag can be used to avoid the
+error message |:s_flags|.
+
 					*search-offset* *{offset}*
 These commands search for the specified pattern.  With "/" and "?" an
 additional offset may be given.  There are two types of offsets: line offsets
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.3.  Last change: 2011 May 31
+*pi_netrw.txt*  For Vim version 7.3.  Last change: 2011 Sep 26
 
 	    -----------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
@@ -89,7 +89,7 @@ 9.  Browsing............................
       Marked Files: Unmarking............................|netrw-mu|
       Netrw Browser Variables............................|netrw-browser-var|
       Netrw Browsing And Option Incompatibilities........|netrw-incompatible|
-      Netrw Settings.....................................|netrw-settings|
+      Netrw Settings Window..............................|netrw-settings-window|
       Obtaining A File...................................|netrw-O|
       Preview Window.....................................|netrw-p|
       Previous Window....................................|netrw-P|
@@ -294,14 +294,14 @@ DIRECTORY LISTING				*netrw-trailingslas
 CHANGING USERID AND PASSWORD		*netrw-chgup* *netrw-userpass* {{{2
 
 	Attempts to use ftp will prompt you for a user-id and a password.
-	These will be saved in global variables g:netrw_uid and
-	s:netrw_passwd; subsequent uses of ftp will re-use those two items to
-	simplify the further use of ftp.  However, if you need to use a
-	different user id and/or password, you'll want to call NetUserPass()
+	These will be saved in global variables |g:netrw_uid| and
+	|s:netrw_passwd|; subsequent use of ftp will re-use those two strings,
+	thereby simplifying use of ftp.  However, if you need to use a
+	different user id and/or password, you'll want to call |NetUserPass()|
 	first.  To work around the need to enter passwords, check if your ftp
 	supports a <.netrc> file in your home directory.  Also see
 	|netrw-passwd| (and if you're using ssh/scp hoping to figure out how
-	to not need to use passwords, look at |netrw-ssh-hack|).
+	to not need to use passwords for scp, look at |netrw-ssh-hack|).
 
 	:NetUserPass [uid [password]]		-- prompts as needed
 	:call NetUserPass()			-- prompts for uid and password
@@ -331,7 +331,8 @@ settings are described below, in |netrw-
 		      netrw edits a file.  The file is first edited, and
 		      then the function reference (|Funcref|) is called.
 		      This variable may also hold a |List| of Funcrefs.
-		      (default) not defined
+		      (default) not defined.  (the capital in g:Netrw...
+		      is required by its holding a function reference)
 >
 			    Example: place in .vimrc; affects all file opening
 			    fun! MyFuncRef()
@@ -479,6 +480,9 @@ variable (ex. scp uses the variable g:ne
 	let g:netrw_scp_cmd = '"c:\Program Files\PuTTY\pscp.exe" -q -batch'
 	let g:netrw_sftp_cmd= '"c:\Program Files\PuTTY\psftp.exe"'
 <
+(note: it has been reported that windows 7 with putty v0.6's "-batch" option
+       doesn't work, so its best to leave it off for that system)
+
 See |netrw-p8| for more about putty, pscp, psftp, etc.
 
 Ftp, an old protocol, seems to be blessed by numerous implementations.
@@ -716,13 +720,16 @@ below, a {netfile} is an url to a remote
 
 
 ==============================================================================
-8. Variables and Options		*netrw-options* *netrw-var* {{{1
-
-(if you're interested in the netrw browser settings, see: |netrw-browser-var|)
+8. Variables and Options			*netrw-settings* {{{1
+
+(also see: |netrw-options| |netrw-variables| |netrw-protocol|
+           |netrw-browser-settings| |netrw-browser-options|
+	   |netrw-browser-var| )
 
 The <netrw.vim> script provides several variables which act as options to
 affect <netrw.vim>'s file transfer behavior.  These variables typically may be
 set in the user's <.vimrc> file: (see also |netrw-settings| |netrw-protocol|)
+						*netrw-options*
 >
                         -------------
                         Netrw Options
@@ -754,6 +761,7 @@ set in the user's <.vimrc> file: (see al
                                 =1 use default method to do ftp >
 	-----------------------------------------------------------------------
 <
+							*netrw-internal-variables*
 The script will also make use of the following variables internally, albeit
 temporarily.
 >
@@ -1147,15 +1155,14 @@ allows one to open a new window to hold 
 horizontal split is used.  (for vertical splitting, see |netrw-v|)
 
 Normally, the o key splits the window horizontally with the new window and
-cursor at the top.  To change to splitting the window horizontally with the
-new window and cursor at the bottom, have
-
-	let g:netrw_alto = 1
-
-in your <.vimrc>.  (also see |netrw-t| |netrw-T| |netrw-v|)
+cursor at the top.
 
 Associated setting variables: |g:netrw_alto| |g:netrw_winsize|
 
+Related Actions |netrw-cr| |netrw-p| |netrw-t| |netrw-T| |netrw-v|
+Associated setting variables:
+   |g:netrw_alto|    control above/below splitting
+   |g:netrw_winsize| control initial sizing
 
 BROWSING WITH A NEW TAB				*netrw-t* *netrw-T* {{{2
 
@@ -1164,8 +1171,9 @@ allows one to open a new window holding 
 a new tab.  The "T" version puts the file or directory into a background tab
 (see |gT|)
 
-Related actions:  |netrw-o| |netrw-v|
-
+Related Actions |netrw-cr| |netrw-o| |netrw-p| |netrw-v|
+Associated setting variables:
+   |g:netrw_winsize| control initial sizing
 
 BROWSING WITH A VERTICALLY SPLIT WINDOW			*netrw-v* {{{2
 
@@ -1174,18 +1182,18 @@ allows one to open a new window to hold 
 vertical split is used.  (for horizontal splitting, see |netrw-o|)
 
 Normally, the v key splits the window vertically with the new window and
-cursor at the left.  To change to splitting the window vertically with the new
-window and cursor at the right, have
-
-	let g:netrw_altv = 1
-
-in your <.vimrc>.  (also see: |netrw-o| |netrw-t| |netrw-T|)
+cursor at the left.
 
 There is only one tree listing buffer; using "v" on a displayed subdirectory
 will split the screen, but the same buffer will be shown twice.
 
 Associated setting variable: |g:netrw_altv| |g:netrw_winsize|
 
+Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
+Associated setting variables:
+   |g:netrw_altv|    control right/left splitting
+   |g:netrw_winsize| control initial sizing
+
 
 CHANGE LISTING STYLE  (THIN LONG WIDE TREE)   			*netrw-i* {{{2
 
@@ -1386,6 +1394,7 @@ to remove it again using the g:netrw_rmf
 
 	g:netrw_rmf_cmd: ssh HOSTNAME rm -f
 
+Related topics: |netrw-d|
 Associated setting variable: |g:netrw_local_rmdir| |g:netrw_rm_cmd|
                              |g:netrw_rmdir_cmd|   |g:netrw_ssh_cmd|
 
@@ -1520,7 +1529,7 @@ What it means:
 Associated setting variables: |g:netrw_hide| |g:netrw_list_hide|
 Associated topics: |netrw-a| |netrw-gh| |netrw-mh|
 
-
+					*netrw-sort-sequence*
 EDITING THE SORTING SEQUENCE		*netrw-S* *netrw-sortsequence* {{{2
 
 When "Sorted by" is name, one may specify priority via the sorting sequence
@@ -1723,9 +1732,9 @@ directory's name.  A bare <CR> at that p
 directory.  Attempts to make a local directory that already exists (as either
 a file or a directory) will be detected, reported on, and ignored.
 
-Currently, making a directory via ftp is not supported.
-
-Associated setting variable: |g:netrw_local_mkdir| |g:netrw_mkdir_cmd|
+Related topics: |netrw-D|
+Associated setting variables:	|g:netrw_local_mkdir|  |g:netrw_mkdir_cmd|
+				|g:netrw_remote_mkdir|
 
 
 MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY	*netrw-c* {{{2
@@ -1953,10 +1962,11 @@ MARKED FILES: UNMARKING						*netrw-mu* 
 
 The "mu" mapping will unmark all currently marked files.
 
-
+				*netrw-browser-settings*
 NETRW BROWSER VARIABLES		*netrw-browser-options* *netrw-browser-var* {{{2
 
-(if you're interested in the netrw file transfer settings, see |netrw-options|)
+(if you're interested in the netrw file transfer settings, see |netrw-options|
+ and |netrw-protocol|)
 
 The <netrw.vim> browser provides settings in the form of variables which
 you may modify; by placing these settings in your <.vimrc>, you may customize
@@ -2006,6 +2016,15 @@ your browsing preferences.  (see also: |
 				    Will compress marked files with this
 				    command
 
+  *g:Netrw_corehandler*		  Allows one to specify something additional
+				to do when handling <core> files via netrw's
+				browser's "x" command (see |netrw-x|).  If
+				present, g:Netrw_corehandler specifies
+				either one or more function references
+				(see |Funcref|).  (the capital g:Netrw...
+				is required its holding a function reference)
+
+
   *g:netrw_ctags*		  ="ctags"
 				The default external program used to create tags
 
@@ -2157,6 +2176,7 @@ your browsing preferences.  (see also: |
 				columnar.
 
   *g:netrw_mkdir_cmd*		  command for making a remote directory
+				via ssh  (also see |g:netrw_remote_mkdir|)
 				 default: "ssh USEPORT HOSTNAME mkdir"
 
   *g:netrw_mousemaps*		  =1 (default) enables mouse buttons while
@@ -2167,6 +2187,15 @@ your browsing preferences.  (see also: |
 				     rightmouse      : remove file/directory
 				=0: disables mouse maps
 
+  *g:netrw_nobeval*		doesn't exist (default)
+				If this variable exists, then balloon
+				evaluation will be suppressed
+				(see |'ballooneval'|)
+
+  *g:netrw_remote_mkdir*	  command for making a local directory
+				via ftp  (also see |g:netrw_mkdir_cmd|)
+				 default: "mkdir"
+
   *g:netrw_retmap*		  if it exists and is set to one, then:
 				 * if in a netrw-selected file, AND
 				 * no normal-mode <2-leftmouse> mapping exists,
@@ -2279,6 +2308,9 @@ your browsing preferences.  (see also: |
 				is an integer describing the percentage of the
 				current netrw buffer's window to be used for
 				the new window.
+				 If g:netrw_winsize is less than zero, then
+				the absolute value of g:netrw_winsize lines
+				or columns will be used for the new window.
 				 default: 50  (for 50%)
 
   *g:netrw_xstrlen*		  Controls how netrw computes string lengths,
@@ -2313,7 +2345,7 @@ file you edit; this apparently also appl
 autochdir sets the current directory to that containing the "file" (even if
 that "file" is itself a directory).
 
-NETRW BROWSER SETTINGS						*netrw-settings* {{{2
+NETRW SETTINGS WINDOW				*netrw-settings-window* {{{2
 
 With the NetrwSettings.vim plugin, >
 	:NetrwSettings
@@ -2356,7 +2388,6 @@ Related topics:
  * To automatically make the currently browsed directory the current
    directory, see |g:netrw_keepdir|.
 
-
 							*netrw-createfile*
 OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY		*netrw-%*
 
@@ -2390,8 +2421,7 @@ PREVIOUS WINDOW				*netrw-P* *netrw-prvw
 
 To edit a file or directory in the previously used (last accessed) window (see
 :he |CTRL-W_p|), press a "P".  If there's only one window, then the one window
-will be horizontally split (above/below splitting is controlled by
-|g:netrw_alto|, and its initial size is controlled by |g:netrw_winsize|).
+will be horizontally split (by default).
 
 If there's more than one window, the previous window will be re-used on
 the selected file/directory.  If the previous window's associated buffer
@@ -2399,6 +2429,13 @@ has been modified, and there's only one 
 the user will be asked if s/he wishes to save the buffer first (yes,
 no, or cancel).
 
+Related Actions |netrw-cr| |netrw-o| |netrw-t| |netrw-T| |netrw-v|
+Associated setting variables:
+   |g:netrw_alto|    control above/below splitting
+   |g:netrw_altv|    control right/left splitting
+   |g:netrw_preview| control horizontal vs vertical splitting
+   |g:netrw_winsize| control initial sizing
+
 
 REFRESHING THE LISTING			*netrw-ctrl-l* *netrw-ctrl_l* {{{2
 
@@ -2804,6 +2841,30 @@ which is loaded automatically at startup
 ==============================================================================
 12. History						*netrw-history* {{{1
 
+	v143: Jun 01, 2011 * |g:netrw_winsize| will accept a negative
+			     number; the absolute value of it will then
+			     be used to specify lines/columns instead of
+			     a percentage.
+	      Jul 05, 2011 * the "d" map now supports mkdir via ftp
+			     See |netrw-d| and |g:netrw_remote_mkdir|
+	      Jul 11, 2011 * Changed Explore!, Sexplore!, and Vexplore
+			     to use a percentage of |winwidth()| instead
+			     of a percentage of |winheight()|.
+	      Jul 11, 2011 * included support for https://... I'm just
+			     beginning to test this, however.
+	      Aug 01, 2011 * changed RestoreOptions to also restore
+			     cursor position in netrw buffers.
+	      Aug 12, 2011 * added a note about "%" to the balloon
+	      Aug 30, 2011 * if |g:netrw_nobeval| exists, then balloon
+			     evaluation is suppressed.
+	      Aug 31, 2011 * (Benjamin R Haskell) provided a patch that
+			     implements non-standard port handling for
+			     files opened via the remote browser.
+	      Aug 31, 2011 * Fixed a **//pattern  Explorer bug
+	      Sep 15, 2011 * (reported by Francesco Campana) netrw
+			     now permits the "@" to be part of the
+			     user id (if there's an @ that appears
+			     to the right).
 	v142: Apr 06, 2011 * I modified NetrwRemoteListing() to use
 			     shellescape(fnameescape(s:path),1) for
 			     the benefit of those using scp://.../
--- a/runtime/doc/pi_vimball.txt
+++ b/runtime/doc/pi_vimball.txt
@@ -1,4 +1,4 @@
-*pi_vimball.txt*	For Vim version 7.3.  Last change: 2011 Aug 14
+*pi_vimball.txt*	For Vim version 7.3.  Last change: 2011 Sep 26
 
 			       ----------------
 			       Vimball Archiver
@@ -177,6 +177,8 @@ WINDOWS							*vimball-windows*
 ==============================================================================
 4. Vimball History					*vimball-history* {{{1
 
+	34 : Sep 22, 2011 * "UseVimball path" now supports a non-full path by
+			    prepending the current directory to it.
 	33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
 			  * Changed silent! to sil! (shorter)
 			  * Safed |'swf'| setting (during vimball extraction,
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2011 Sep 21
+*syntax.txt*	For Vim version 7.3.  Last change: 2011 Sep 30
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2723,7 +2723,7 @@ in your <.vimrc>, and :set fdm=syntax.  
 modeline at the end of your LaTeX file: >
 	% vim: fdm=syntax
 If your system becomes too slow, then you might wish to look into >
-	https://vimhelp.appspot.com/vim_faq.txt.html#faq-29.7
+ 	http://vim.wikia.com/wiki/Keep_folds_closed_while_inserting_text
 <
 								*tex-nospell*
  Tex: Don't Want Spell Checking In Comments? ~
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4235,6 +4235,7 @@ E85	options.txt	/*E85*
 E850	change.txt	/*E850*
 E851	gui_x11.txt	/*E851*
 E852	gui_x11.txt	/*E852*
+E853	eval.txt	/*E853*
 E86	windows.txt	/*E86*
 E87	windows.txt	/*E87*
 E88	windows.txt	/*E88*
@@ -5759,6 +5760,7 @@ g-	undo.txt	/*g-*
 g0	motion.txt	/*g0*
 g8	various.txt	/*g8*
 g:NetrwTopLvlMenu	pi_netrw.txt	/*g:NetrwTopLvlMenu*
+g:Netrw_corehandler	pi_netrw.txt	/*g:Netrw_corehandler*
 g:Netrw_funcref	pi_netrw.txt	/*g:Netrw_funcref*
 g:ada#Comment	ft_ada.txt	/*g:ada#Comment*
 g:ada#Ctags_Kinds	ft_ada.txt	/*g:ada#Ctags_Kinds*
@@ -5846,9 +5848,11 @@ g:netrw_maxfilenamelen	pi_netrw.txt	/*g:
 g:netrw_menu	pi_netrw.txt	/*g:netrw_menu*
 g:netrw_mkdir_cmd	pi_netrw.txt	/*g:netrw_mkdir_cmd*
 g:netrw_mousemaps	pi_netrw.txt	/*g:netrw_mousemaps*
+g:netrw_nobeval	pi_netrw.txt	/*g:netrw_nobeval*
 g:netrw_nogx	pi_netrw.txt	/*g:netrw_nogx*
 g:netrw_preview	pi_netrw.txt	/*g:netrw_preview*
 g:netrw_rcp_cmd	pi_netrw.txt	/*g:netrw_rcp_cmd*
+g:netrw_remote_mkdir	pi_netrw.txt	/*g:netrw_remote_mkdir*
 g:netrw_retmap	pi_netrw.txt	/*g:netrw_retmap*
 g:netrw_rm_cmd	pi_netrw.txt	/*g:netrw_rm_cmd*
 g:netrw_rmdir_cmd	pi_netrw.txt	/*g:netrw_rmdir_cmd*
@@ -5876,6 +5880,8 @@ g:netrw_use_nt_rcp	pi_netrw.txt	/*g:netr
 g:netrw_win95ftp	pi_netrw.txt	/*g:netrw_win95ftp*
 g:netrw_winsize	pi_netrw.txt	/*g:netrw_winsize*
 g:netrw_xstrlen	pi_netrw.txt	/*g:netrw_xstrlen*
+g:sh_isk	syntax.txt	/*g:sh_isk*
+g:sh_noisk	syntax.txt	/*g:sh_noisk*
 g:syntax_on	syntax.txt	/*g:syntax_on*
 g:tar_browseoptions	pi_tar.txt	/*g:tar_browseoptions*
 g:tar_cmd	pi_tar.txt	/*g:tar_cmd*
@@ -6767,6 +6773,7 @@ netrw-browse-cmds	pi_netrw.txt	/*netrw-b
 netrw-browse-maps	pi_netrw.txt	/*netrw-browse-maps*
 netrw-browser	pi_netrw.txt	/*netrw-browser*
 netrw-browser-options	pi_netrw.txt	/*netrw-browser-options*
+netrw-browser-settings	pi_netrw.txt	/*netrw-browser-settings*
 netrw-browser-var	pi_netrw.txt	/*netrw-browser-var*
 netrw-browsing	pi_netrw.txt	/*netrw-browsing*
 netrw-c	pi_netrw.txt	/*netrw-c*
@@ -6815,6 +6822,7 @@ netrw-history	pi_netrw.txt	/*netrw-histo
 netrw-horiz	pi_netrw.txt	/*netrw-horiz*
 netrw-i	pi_netrw.txt	/*netrw-i*
 netrw-incompatible	pi_netrw.txt	/*netrw-incompatible*
+netrw-internal-variables	pi_netrw.txt	/*netrw-internal-variables*
 netrw-intro-browse	pi_netrw.txt	/*netrw-intro-browse*
 netrw-leftmouse	pi_netrw.txt	/*netrw-leftmouse*
 netrw-list	pi_netrw.txt	/*netrw-list*
@@ -6892,8 +6900,10 @@ netrw-rexplore	pi_netrw.txt	/*netrw-rexp
 netrw-rightmouse	pi_netrw.txt	/*netrw-rightmouse*
 netrw-s	pi_netrw.txt	/*netrw-s*
 netrw-settings	pi_netrw.txt	/*netrw-settings*
+netrw-settings-window	pi_netrw.txt	/*netrw-settings-window*
 netrw-sexplore	pi_netrw.txt	/*netrw-sexplore*
 netrw-sort	pi_netrw.txt	/*netrw-sort*
+netrw-sort-sequence	pi_netrw.txt	/*netrw-sort-sequence*
 netrw-sortsequence	pi_netrw.txt	/*netrw-sortsequence*
 netrw-source	pi_netrw.txt	/*netrw-source*
 netrw-ssh-hack	pi_netrw.txt	/*netrw-ssh-hack*
@@ -6912,7 +6922,6 @@ netrw-updir	pi_netrw.txt	/*netrw-updir*
 netrw-urls	pi_netrw.txt	/*netrw-urls*
 netrw-userpass	pi_netrw.txt	/*netrw-userpass*
 netrw-v	pi_netrw.txt	/*netrw-v*
-netrw-var	pi_netrw.txt	/*netrw-var*
 netrw-variables	pi_netrw.txt	/*netrw-variables*
 netrw-vexplore	pi_netrw.txt	/*netrw-vexplore*
 netrw-write	pi_netrw.txt	/*netrw-write*
@@ -7447,6 +7456,8 @@ setuid	change.txt	/*setuid*
 setwinvar()	eval.txt	/*setwinvar()*
 sftp	pi_netrw.txt	/*sftp*
 sgml.vim	syntax.txt	/*sgml.vim*
+sh-awk	syntax.txt	/*sh-awk*
+sh-embed	syntax.txt	/*sh-embed*
 sh.vim	syntax.txt	/*sh.vim*
 shell-window	tips.txt	/*shell-window*
 shell_error-variable	eval.txt	/*shell_error-variable*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2011 Sep 21
+*todo.txt*      For Vim version 7.3.  Last change: 2011 Oct 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -34,27 +34,30 @@ not be repeated below, unless there is e
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Patch for redirection. (Yasuhiro Matsumoto, 2011 Sep 15) 2nd patch.
-Another on Sep 15?
-
-Patch for DFLT_EFM. (Ben Boeckel, 2011 Sep 14)
-
-Code style patch. (Elias Diem, 2011 Sep 19)
-
 Patch for 'transparency' option. (Ben Boeckel, 2011 Sep 14)
 Do we want this?  Also Sergiu Dotenco, 2011 Sep 17.
 
-Patch for gui_w32.c: call DefWindowProc(). (Sergiu Dotenco, 2011 Sep 15, 17)
-
-Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 15, 17)
-Addition Sep 16.
-
-Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011 Sep 15, 17)
-
-Change to #ifdef for PDP_RETVAL. (Sergiu Dotenco, 2011 Sep 17, patch 2)
+Once syntax and other runtime files have been fixed: add "set cp" to
+check.vim.  Use a function to run both with 'cp' and 'nocp'.
+
+Windows stuff:
+- Patch for gui_w32.c: call DefWindowProc(). (Sergiu Dotenco, 2011 Sep 15, 17)
+- Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 15, 17)
+  Addition Sep 16.
+- Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011 Sep
+  15, 17)
+- Patch for redirection. (Yasuhiro Matsumoto, 2011 Sep 15) 2nd patch.  Another
+  on Sep 15?  Can't reproduce it.  Only with vim.exe, compiled with Mingw?
 
 Patch for phpcomplete.vim (Benjamin Haskell) picked up by maintainer?
 
+Something weird with text formatting when 'compatible' is set.
+Only formats from Insert starting point, even when using "gqj"?
+(Peter Wagenaar, 2011 Oct 20)
+
+FocusGained event received event though it's in 'eventignore'?
+(Ben Fritz, 2011 Sep 25)
+
 Add voting item: modern plugin management (automatic updates, handle
 dependencies).
 Add links to http://vimcasts.org/ and http://vimgolf.com/
@@ -62,14 +65,13 @@ Read http://www.charlietanksley.net/phil
 
 Go through more coverity reports.
 
-Patch for Issue #9: http://code.google.com/p/vim/issues/detail?id=9
-C++ indenting. martin.gieseking
-
-Using "." to repeat a Visual delete counts bytes, not characters.  Can this be
-fixed? (Connor Lane Smith, 2011 Sep 1)
-
-Patch to allow getchar() in expression mapping.
-Why was typeahead saved and restored? (James Vega, 2011 Aug 31)
+Better D/Dtrace detection. (Jesse Phillips, 2011 Oct 18)
+
+Patch for not showing dict methods in completion. (Yasuhiro Matsumoto, 2011
+Oct 7)  Move "<" methods to the end.  Fix for compiler warnings, Oct 13.
+
+FPE exception in mbyte.c.  Stack trace: (Lomy, 2011 Sep 26)
+Can't reproduce it.
 
 Crash in autocomplete, valgrind log. (Greg Weber, 2011 Apr 22)
 
@@ -81,9 +83,20 @@ Patch to fail if configure can't find an
 Patch to support UTF-8 for Hangul. (Shawn Y.H. Kim, 2011 May 1)
 Needs more work.
 
+Other way to start Mzscheme. Tim Brown, 2011 Oct 5: change main call.
+Later patch by Sergey Khorev, 2011 Oct 9.
+
+Patch to add getsid(). (Tyru, 2011 Oct 2)  Do we want this?  Update Oct 4.
+Or use expand('<sid>')?
+
 Patch for glob() returning a list. (Christian Brabandt, 2011 Aug 24, second
 one)
 
+Patch to highlight cursor line number. (Howard Buchholz (lhb), 2011 Oct 18)
+
+Docs fix for v:register. (Ingo Karkat, 2011 Sep 26, 27)
+v:register doesn't work exactly as expected. (David Fishburn, 2011 Sep 20)
+
 Patch for: (Christian Brabandt, 2011 Aug 22)
 -   Make it possible to enter "r<C-E>" and "r<C-Y>" (get character from line
     below/above).
@@ -92,11 +105,25 @@ Patch for: (Christian Brabandt, 2011 Aug
 8   ":sign unplace * file={filename}" should work.  Also: ":sign unplace *
     buffer={bufnr}".  So one can remove all signs for one file/buffer.
 
+Patch to add "onselected" callback for completion. (Taro Muraoka, 2011 Sep 24)
+
 Problem with winfixheight and resizing. (Yukihiro Nakadaira, 2011 Sep 17)
 Patch Sep 18.
 
+Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27)
+And one for gui_x11.txt.
+
 Problem with l: dictionary being locked in a function. (ZyX, 2011 Jul 21)
 
+Patch to sort functions starting with '<' after others.  Omit dict functions,
+they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11)
+
+Updated syntax file for ssh_config, maintainer doesn't respond.
+(Leonard Ehrenfried, 2011 Sep 26)
+
+"fC" doesn't position the cursor correctly when there are concealed
+characters.  Patch by Christian Brabandt, 2011 Oct 11)
+
 'cursorline' is displayed too short when there are concealed characters and
 'list' is set.  (Dennis Preiser)
 Patch 7.3.116 was the wrong solution.
@@ -166,8 +193,6 @@ string() can't parse back "inf" and "nan
 
 Make 'formatprg' global-local. (Sung Pae)
 
-v:register doesn't work exactly as expected. (David Fishburn, 2011 Sep 20)
-
 When doing "redir => s:foo" in a script and then "redir END" somewhere else
 (e.g. in a function) it can't find s:foo.
 
@@ -299,6 +324,8 @@ the system encoding (usually utf-8).
 Problem producing tags file when hebrew.frx is present.  It has a BOM.
 Results in E670. (Tony Mechelynck, 2010 May 2)
 
+'beval' option should be global-local.
+
 Ruby: ":ruby print $buffer.number" returns zero.
 
 setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
@@ -461,15 +488,10 @@ Disable updating folds while completion 
 Using ":call foo#d.f()" doesn't autoload the "foo.vim" file.  Works OK for
 echo, just not for  ":call" and ":call call()". (Ted, 2011 Mar 17)
 
-Cannot use getchar() inside :normal and using an expression mapping.  Is this
-supposed to work?  (XyX, 2010 Sep 22)
-
 When a:base in 'completefunc' starts with a number it's passed as a number,
 not a string. (Sean Ma)  Need to add flag to call_func_retlist() to force a
 string value.
 
-There is no command line completion for ":lmap".
-
 ":e ~br<Tab>" does not complete to ":e /home/bram/".  Would need to use
 getpwent() to find all the matches.
 
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.3.  Last change: 2011 May 19
+*various.txt*   For Vim version 7.3.  Last change: 2011 Oct 1st
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -602,6 +602,10 @@ K			Run a program to lookup the keyword 
 			"gs" stands for "goto sleep".
 			While sleeping the cursor is positioned in the text,
 			if at a visible position.  {not in Vi}
+			Also process the received netbeans messages. {only
+			available when compiled with the |+netbeans_intg|
+			feature}
+
 
 							*g_CTRL-A*
 g CTRL-A		Only when Vim was compiled with MEM_PROFILING defined
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2011 Sep 07
+" Last Change:	2011 Oct 08
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -754,6 +754,11 @@ au BufNewFile,BufRead */usr/**/gnupg/opt
 " gnash(1) configuration files
 au BufNewFile,BufRead gnashrc,.gnashrc,gnashpluginrc,.gnashpluginrc setf gnash
 
+" Gitolite
+au BufNewFile,BufRead gitolite.conf		setf gitolite
+au BufNewFile,BufRead */gitolite-admin/conf/*	call s:StarSetf('gitolite')
+au BufNewFile,BufRead {,.}gitolite.rc,example.gitolite.rc 	setf perl
+
 " Gnuplot scripts
 au BufNewFile,BufRead *.gpi			setf gnuplot
 
--- a/runtime/indent/r.vim
+++ b/runtime/indent/r.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	R
 " Author:	Jakson Alves de Aquino <jalvesaq@gmail.com>
-" Last Change:	Wed Aug 31, 2011  12:24AM
+" Last Change:	Fri Oct 14, 2011  09:50PM
 
 
 " Only load this indent file when no other was loaded.
@@ -455,19 +455,29 @@ function GetRIndent()
         return ind
     endif
 
+    if g:r_indent_align_args == 0 && bb != 0
+        let ind += bb * &sw
+        return ind
+    endif
+
     if ind == pind || (ind == (pind  + &sw) && pline =~ '{$' && ppost_else == 0)
         return ind
     endif
 
-    while pind < ind && plnum > 0 && ppb == 0
+    let pline = getline(plnum)
+    let pbb = s:Get_paren_balance(pline, '[', ']')
+
+    while pind < ind && plnum > 0 && ppb == 0 && pbb == 0
         let ind = pind
         let plnum = s:Get_prev_line(plnum)
         let pline = getline(plnum)
         let ppb = s:Get_paren_balance(pline, '(', ')')
+        let pbb = s:Get_paren_balance(pline, '[', ']')
         while pline =~ '^\s*else'
             let plnum = s:Get_matching_if(plnum, 1)
             let pline = getline(plnum)
             let ppb = s:Get_paren_balance(pline, '(', ')')
+            let pbb = s:Get_paren_balance(pline, '[', ']')
         endwhile
         let pind = indent(plnum)
         if ind == (pind  + &sw) && pline =~ '{$'
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -1,8 +1,8 @@
 " VHDL indent ('93 syntax)
 " Language:    VHDL
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
-" Version:     1.56
-" Last Change: 2010 Jun 29
+" Version:     1.58
+" Last Change: 2011 Sep 27
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -95,7 +95,7 @@ function GetVHDLindent()
 
   " ****************************************************************************************
   " indent:   align generic variables & port names
-  " keywords: "generic", "map", "port" + "(", provided current line is part of mapping
+  " keywords: "procedure" + name, "generic", "map", "port" + "(", provided current line is part of mapping
   " where:    anywhere in previous 2 lines
   " find following previous non-comment line
   let pn = prevnonblank(prevn - 1)
@@ -104,7 +104,7 @@ function GetVHDLindent()
     let pn = prevnonblank(pn - 1)
     let ps = getline(pn)
   endwhile
-  if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(generic\|map\|port\)\>.*\)\@<!\S\+\s*\%(=>\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(generic\|map\|port\)'.s:ES && prevs =~ '^\s*('))
+  if (curs =~ '^\s*)' || curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@<!\w\+\s*\w*\s*\%(=>\s*\S\+\|:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)\)') && (prevs =~? s:NC.'\<\%(procedure\s\+\S\+\|generic\|map\|port\)\s*(\%(\s*\w\)\=' || (ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)'.s:ES && prevs =~ '^\s*('))
     " align closing ")" with opening "("
     if curs =~ '^\s*)'
       return ind2 + stridx(prevs_noi, '(')
@@ -160,12 +160,12 @@ function GetVHDLindent()
         " make sure one of these is true
         " keywords: variable + "<=" without ";" ending
         " where:    start of previous non-comment line
-        " keywords: "generic", "map", "port"
+        " keywords: "procedure", "generic", "map", "port"
         " where:    anywhere in previous non-comment line
         " keyword:  "("
         " where:    start of previous non-comment line
         if m < 3 && ps !~? '^\s*\S\+\s*<=[^;]*'.s:ES
-          if ps =~? s:NC.'\<\%(generic\|map\|port\)\>' || ps =~ '^\s*('
+          if ps =~? s:NC.'\<\%(procedure\|generic\|map\|port\)\>' || ps =~ '^\s*('
             let ind = t
           endif
           break
@@ -207,14 +207,26 @@ function GetVHDLindent()
   " keyword:  "begin"
   " where:    anywhere in current line
   if curs =~? s:NC.'\<begin\>'
-    let ind = ind - &sw
     " find previous opening statement of
     " keywords: "architecture", "block", "entity", "function", "generate", "procedure", "process"
     let s2 = s:NC.s:NE.'\<\%(architecture\|block\|entity\|function\|generate\|procedure\|process\)\>'
-    if (curs !~? s2.'.*'.s:NC.'\<begin\>.*'.s:ES && prevs =~? s2) || m == 1
-      let ind = ind + &sw
+
+    let pn = prevnonblank(curn - 1)
+    let ps = getline(pn)
+    while pn > 0 && (ps =~ '^\s*--' || ps !~? s2)
+      let pn = prevnonblank(pn - 1)
+      let ps = getline(pn)
+
+      if (ps =~? s:NC.'\<begin\>')
+        return indent(pn) - &sw
+      endif
+    endwhile
+
+    if (pn == 0)
+      return ind - &sw
+    else
+      return indent(pn)
     endif
-    return ind
   endif
 
   " indent:   +sw if previous line is previous opening statement
@@ -319,8 +331,13 @@ function GetVHDLindent()
   " indent:   -sw
   " keywords: "else", "elsif", "end" + "block", "for", "function", "generate", "if", "loop", "procedure", "process", "record", "units"
   " where:    start of current line
-  if curs =~? '^\s*\%(else\|elsif\|end\s\+\%(block\|for\|function\|generate\|if\|loop\|procedure\|process\|record\|units\)\)\>'
-    return ind - &sw
+  let s5 = 'block\|for\|function\|generate\|if\|loop\|procedure\|process\|record\|units'
+  if curs =~? '^\s*\%(else\|elsif\|end\s\+\%('.s5.'\)\)\>'
+    if prevs =~? '^\s*\%(elsif\|'.s5.'\)'
+      return ind
+    else
+      return ind - &sw
+    endif
   endif
 
   " indent:   backtrace previous non-comment lines
@@ -395,9 +412,9 @@ function GetVHDLindent()
 
   " ****************************************************************************************
   " indent:   maintain indent of previous opening statement
-  " keywords: without "generic", "map", "port" + ":" but not ":=" + "in", "out", "inout", "buffer", "linkage", variable & ":="
+  " keywords: without "procedure", "generic", "map", "port" + ":" but not ":=" + "in", "out", "inout", "buffer", "linkage", variable & ":="
   " where:    start of current line
-  if curs =~? '^\s*\%(\<\%(generic\|map\|port\)\>.*\)\@<!\S\+\s*:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)'
+  if curs =~? '^\s*\%(\<\%(procedure\|generic\|map\|port\)\>.*\)\@<!\w\+\s*\w*\s*:[^=]\@=\s*\%(\%(in\|out\|inout\|buffer\|linkage\)\>\|\w\+\s\+:=\)'
     return ind2
   endif
 
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -1,6 +1,6 @@
 " netrwPlugin.vim: Handles file transfer and remote directory listing across a network
 "            PLUGIN SECTION
-" Date:		Feb 10, 2011
+" Date:		Aug 24, 2011
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
@@ -20,7 +20,7 @@
 if &cp || exists("g:loaded_netrwPlugin")
  finish
 endif
-let g:loaded_netrwPlugin = "v142"
+let g:loaded_netrwPlugin = "v143"
 if v:version < 702
  echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
  finish
@@ -47,20 +47,15 @@ augroup END
 " Network Browsing Reading Writing: {{{2
 augroup Network
  au!
- if has("win32") || has("win95") || has("win64") || has("win16")
-  au BufReadCmd  file://*		call netrw#FileUrlRead(expand("<amatch>"))
- else
-  au BufReadCmd  file://*		call netrw#FileUrlRead(expand("<amatch>"))
-  au BufReadCmd  file://localhost/*	call netrw#FileUrlRead(substitute(expand("<amatch>")),'file://localhost/','file:///','')
- endif
- au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
- au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
- au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
- au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
+ au BufReadCmd   file://*		call netrw#FileUrlRead(expand("<amatch>"))
+ au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>"))
+ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(1,expand("<amatch>"))|exe "silent doau FileReadPost ".fnameescape(expand("<amatch>"))
+ au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*			exe "silent doau BufWritePre ".fnameescape(expand("<amatch>"))|exe 'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau BufWritePost ".fnameescape(expand("<amatch>"))
+ au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,davs://*,rsync://*,sftp://*			exe "silent doau FileWritePre ".fnameescape(expand("<amatch>"))|exe "'[,']".'Nwrite '.fnameescape(expand("<amatch>"))|exe "silent doau FileWritePost ".fnameescape(expand("<amatch>"))
  try
-  au SourceCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
+  au SourceCmd   ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
  catch /^Vim\%((\a\+)\)\=:E216/
-  au SourcePre   ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
+  au SourcePre   ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://*	exe 'Nsource '.fnameescape(expand("<amatch>"))
  endtry
 augroup END
 
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -16,7 +16,7 @@
 if &cp || exists("g:loaded_vimballPlugin")
  finish
 endif
-let g:loaded_vimballPlugin = "v33"
+let g:loaded_vimballPlugin = "v34"
 let s:keepcpo              = &cpo
 set cpo&vim
 
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/gitolite.vim
@@ -0,0 +1,80 @@
+" Vim syntax file
+" Language:	gitolite configuration
+" URL:		https://github.com/tmatilai/gitolite.vim
+" Maintainer:	Teemu Matilainen <teemu.matilainen@iki.fi>
+" Last Change:	2011-10-05
+
+if exists("b:current_syntax")
+  finish
+endif
+
+" Comment
+syn match	gitoliteComment		"\(^\|\s\)#.*" contains=gitoliteTodo
+syn keyword	gitoliteTodo		TODO FIXME XXX NOT contained
+
+" Groups, users and repos
+syn match	gitoliteGroupDef	"\(^\s*\)\@<=@[^=]\{-1,}\(\s*=\)\@=" contains=gitoliteSpaceError,gitoliteUserError nextgroup=gitoliteGroupDefSep
+syn match	gitoliteGroupDefSep	"\s*=" contained nextgroup=gitoliteRepoLine
+syn match	gitoliteRepoDef		"^\s*repo\s" nextgroup=gitoliteRepoLine
+
+syn match	gitoliteRepoLine	".*" contained transparent contains=gitoliteGroup,gitoliteWildRepo,gitoliteCreator,gitoliteExtCmdHelper,gitoliteRepoError,gitoliteComment
+syn match	gitoliteUserLine	".*" contained transparent contains=gitoliteGroup,gitolitePreProc,gitoliteUserError,gitoliteComment
+
+syn match	gitoliteWildRepo	"[ \t=]\@<=[^ \t]*[\\^$|()[\]*?{}][^ \t]*" contained contains=gitoliteCreator,gitoliteRepoError
+syn match	gitoliteGroup		"[ \t=]\@<=@[^ \t]\+" contained contains=gitoliteUserError
+
+syn keyword	gitoliteCreator		CREATER CREATOR contained
+syn keyword	gitolitePreProc		CREATER CREATOR READERS WRITERS contained
+
+syn match	gitoliteExtCmdHelper	"[ \t=]\@<=EXTCMD/" contained nextgroup=gitoliteExtCmd
+syn match	gitoliteExtCmd		"rsync\(\s\|$\)" contained
+
+" Illegal characters
+syn match	gitoliteRepoError	"[^ \t0-9a-zA-Z._@+/\\^$|()[\]*?{}-]\+" contained
+syn match	gitoliteUserError	"[^ \t0-9a-zA-Z._@+-]\+" contained
+syn match	gitoliteSpaceError	"\s\+" contained
+
+" Permission
+syn match	gitoliteKeyword		"^\s*\(C\|R\|RW\|RW+\|RWC\|RW+C\|RWD\|RW+D\|RWCD\|RW+CD\)[ \t=]\@=" nextgroup=gitoliteRefex
+syn match	gitoliteKeyword		"^\s*-[ \t=]\@=" nextgroup=gitoliteDenyRefex
+syn match	gitoliteRefex		"[^=]*="he=e-1 contained contains=gitoliteSpecialRefex,gitoliteGroup nextgroup=gitoliteUserLine
+syn match	gitoliteDenyRefex	"[^=]*="he=e-1 contained contains=gitoliteSpecialRefex,gitoliteGroup nextgroup=gitoliteDenyUsers
+syn match	gitoliteSpecialRefex	"\sNAME/"he=e-1 contained
+syn match	gitoliteSpecialRefex	"/USER/"hs=s+1,he=e-1 contained
+syn match	gitoliteDenyUsers	".*" contained contains=gitoliteUserError,gitoliteComment
+
+" Configuration
+syn match	gitoliteKeyword		"^\s*config\s\+" nextgroup=gitoliteConfVariable
+syn match	gitoliteConfVariable	"[^=]*" contained
+
+" Include
+syn match	gitoliteInclude		"^\s*\(include\|subconf\)\s"
+
+" String
+syn region	gitoliteString		start=+"+ end=+"+ oneline
+
+" Define the default highlighting
+hi def link gitoliteComment		Comment
+hi def link gitoliteTodo		Todo
+hi def link gitoliteGroupDef		gitoliteGroup
+hi def link gitoliteGroup		Identifier
+hi def link gitoliteWildRepo		Special
+hi def link gitoliteRepoError		gitoliteError
+hi def link gitoliteUserError		gitoliteError
+hi def link gitoliteSpaceError		gitoliteError
+hi def link gitoliteError		Error
+hi def link gitoliteCreator		gitolitePreProc
+hi def link gitolitePreProc		PreProc
+hi def link gitoliteExtCmdHelper	PreProc
+hi def link gitoliteExtCmd		Special
+hi def link gitoliteRepoDef		Type
+hi def link gitoliteKeyword		Keyword
+hi def link gitoliteRefex		String
+hi def link gitoliteDenyRefex		gitoliteRefex
+hi def link gitoliteSpecialRefex	PreProc
+hi def link gitoliteDenyUsers		WarningMsg
+hi def link gitoliteConfVariable	Identifier
+hi def link gitoliteInclude		Include
+hi def link gitoliteString		String
+
+let b:current_syntax = "gitolite"
--- a/runtime/syntax/netrw.vim
+++ b/runtime/syntax/netrw.vim
@@ -22,7 +22,7 @@ syn match  netrwDir		"\.\{1,2}/"						co
 syn match  netrwDir		"\%(\S\+ \)*\S\+/"					contains=netrwClassify,@NoSpell
 syn match  netrwSizeDate	"\<\d\+\s\d\{1,2}/\d\{1,2}/\d\{4}\s"	skipwhite	contains=netrwDateSep,@NoSpell	nextgroup=netrwTime
 syn match  netrwSymLink		"\%(\S\+ \)*\S\+@\ze\%(\s\{2,}\|$\)"  			contains=netrwClassify,@NoSpell
-syn match  netrwExe		"\%(\S\+ \)*\S\+\*\ze\%(\s\{2,}\|$\)" 			contains=netrwClassify,@NoSpell
+syn match  netrwExe		"\%(\S\+ \)*\S*[^~]\*\ze\%(\s\{2,}\|$\)" 		contains=netrwClassify,@NoSpell
 syn match  netrwTreeBar		"^\%([-+|] \)\+"					contains=netrwTreeBarSpace	nextgroup=@netrwTreeGroup
 syn match  netrwTreeBarSpace	" "					contained
 
@@ -63,7 +63,7 @@ if exists("g:netrw_special_syntax") && n
  syn match netrwObj		"\(\S\+ \)*\S*\.\%(o\|obj\)\>"			contains=netrwTreeBar,@NoSpell
  syn match netrwTags    	"\<tags\>"					contains=netrwTreeBar,@NoSpell
  syn match netrwTags		"\<\(ANmenu\|ANtags\)\>"			contains=netrwTreeBar,@NoSpell
- syn match netrwTilde		"\(\S\+ \)*\S\+\~\>"				contains=netrwTreeBar,@NoSpell
+ syn match netrwTilde		"\(\S\+ \)*\S\+\~\*\=\>"			contains=netrwTreeBar,@NoSpell
  syn match netrwTmp		"\<tmp\(\S\+ \)*\S\+\>\|\(\S\+ \)*\S*tmp\>"	contains=netrwTreeBar,@NoSpell
 endif
 
--- a/runtime/syntax/php.vim
+++ b/runtime/syntax/php.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language: php PHP 3/4/5
 " Maintainer: Jason Woofenden <jason@jasonwoof.com>
-" Last Change: July 29, 2011
+" Last Change: Oct 20, 2011
 " URL: https://gitorious.org/jasonwoof/vim-syntax/blobs/master/php.vim
 " Former Maintainers: Peter Hodge <toomuchphp-vim@yahoo.com>
 "         Debian VIM Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
@@ -110,6 +110,10 @@ if exists( "php_htmlInStrings")
   syn cluster phpAddStrings add=@htmlTop
 endif
 
+" make sure we can use \ at the begining of the line to do a continuation
+let s:cpo_save = &cpo
+set cpo&vim
+
 syn case match
 
 " Env Variables
@@ -691,4 +695,8 @@ if main_syntax == 'php'
   unlet main_syntax
 endif
 
+" put cpoptions back the way we found it
+let &cpo = s:cpo_save
+unlet s:cpo_save
+
 " vim: ts=8 sts=2 sw=2 expandtab
--- a/runtime/syntax/rhelp.vim
+++ b/runtime/syntax/rhelp.vim
@@ -2,7 +2,7 @@
 " Language:    R Help File
 " Maintainer: Jakson Aquino <jalvesaq@gmail.com>
 " Former Maintainer: Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: Sat Feb 19, 2011  02:13PM
+" Last Change: Fri Oct 14, 2011  09:54PM
 " Version:     0.7.4
 " SVN:		   $Id: rhelp.vim 90 2010-11-22 10:58:11Z ranke $
 " Remarks:     - Includes R syntax highlighting in the appropriate
@@ -192,9 +192,9 @@ syn match rhelpDelimiter "{\|\[\|(\|)\|\
 syn match rhelpComment /%.*$/
 
 " Error {{{1
-syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
-syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError
-syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError
+syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
+syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
+syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ contains=@Spell,rhelpCodeSpecial,rhelpComment,rhelpDelimiter,rhelpDots,rhelpFreesec,rhelpFreesubsec,rhelpIdentifier,rhelpKeyword,rhelpLink,rhelpPreProc,rhelpRComment,rhelpRcode,rhelpRegion,rhelpS4method,rhelpSection,rhelpSexpr,rhelpSpecialChar,rhelpString,rhelpType,rhelpVerbatim
 syn match rhelpError      /[)\]}]/
 syn match rhelpBraceError /[)}]/ contained
 syn match rhelpCurlyError /[)\]]/ contained
--- a/runtime/syntax/sqr.vim
+++ b/runtime/syntax/sqr.vim
@@ -43,11 +43,11 @@ syn keyword    sqrSection     begin-prog
 syn keyword    sqrSection     end-footing end-heading end-procedure
 syn keyword    sqrSection     end-program end-report end-setup
 
-syn keyword    sqrParagraph   alter-color-map alter-conection
+syn keyword    sqrParagraph   alter-color-map alter-connection
 syn keyword    sqrParagraph   alter-locale alter-printer alter-report
 syn keyword    sqrParagraph   begin-document begin-execute begin-select
 syn keyword    sqrParagraph   begin-sql declare-chart declare-image
-syn keyword    sqrParagraph   declare-color-map declare-conection
+syn keyword    sqrParagraph   declare-color-map declare-connection
 syn keyword    sqrParagraph   declare-layout declare-printer
 syn keyword    sqrParagraph   declare-report declare-procedure
 syn keyword    sqrParagraph   declare-toc declare-variable end-declare
@@ -224,16 +224,16 @@ if version >= 600
   " See also the sqrString section above for handling of ! characters
   " inside of strings.  (Those patterns override the ones below.)
   syn match	sqrComment	/!\@<!!\([^!=].*\|$\)/ contains=sqrTodo
-  "				  the ! can't be preceeded by another !,
+  "				  the ! can't be preceded by another !,
   "				  and must be followed by at least one
   "				  character other than ! or =, or immediately
   "				  by the end-of-line
   syn match	sqrComment	/^!=.*/ contains=sqrTodo
   syn match	sqrComment	/^!!.*/ contains=sqrTodo
   syn match	sqrError	/^\s\+\zs!=.*/
-  "				  it's an error to have "!=" preceeded by
+  "				  it's an error to have "!=" preceded by
   "				  just whitespace on the line ("!="
-  "				  preceeded by non-whitespace is treated
+  "				  preceded by non-whitespace is treated
   "				  as neither a comment nor an error, since
   "				  it is often correct, i.e.
   "				    if #count != 7
@@ -259,7 +259,7 @@ endif
 
 " Define the default highlighting.
 " For version 5.7 and earlier, only when not done already.
-" For version 5.8 and later, only when an item doesn;t have hightlighting yet.
+" For version 5.8 and later, only when an item doesn't have highlighting yet.
 if version >= 508 || !exists("did_sqr_syn_inits")
   if version < 508
     let did_sqr_syn_inits = 1
--- a/runtime/syntax/tex.vim
+++ b/runtime/syntax/tex.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	TeX
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change:	Aug 22, 2011 
-" Version:	68
+" Last Change:	Oct 12, 2011 
+" Version:	69
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Notes: {{{1
@@ -37,6 +37,8 @@ if version < 600
 elseif exists("b:current_syntax")
   finish
 endif
+let s:keepcpo= &cpo
+set cpo&vim
 scriptencoding utf-8
 
 " Define the default highlighting. {{{1
@@ -1217,7 +1219,9 @@ if did_tex_syntax_inits == 1
   delcommand HiLink
 endif
 
-" Current Syntax: {{{1
+" Cleanup: {{{1
 unlet s:extfname
 let   b:current_syntax = "tex"
+let &cpo               = s:keepcpo
+unlet s:keepcpo
 " vim: ts=8 fdm=marker
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -1700,7 +1700,7 @@ msgid ""
 "&Load File"
 msgstr ""
 "&OK\n"
-"&Lese Datei"
+"&Lies Datei"
 
 #, c-format
 msgid "E462: Could not prepare for reloading \"%s\""