changeset 2751:b0d34143ebfc

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Fri, 01 Apr 2011 18:03:16 +0200
parents 66fe19b3c59a
children 0f7f66682a55
files runtime/autoload/netrw.vim runtime/compiler/g95.vim runtime/compiler/gfortran.vim runtime/compiler/ifort.vim runtime/doc/cmdline.txt runtime/doc/pi_netrw.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/filetype.vim runtime/ftplugin/sql.vim runtime/indent/pascal.vim runtime/lang/menu_ja_jp.euc-jp.vim runtime/lang/menu_ja_jp.utf-8.vim runtime/lang/menu_japanese_japan.932.vim runtime/plugin/netrwPlugin.vim runtime/syntax/netrw.vim runtime/syntax/sh.vim runtime/syntax/tex.vim runtime/syntax/vim.vim src/po/ja.po src/po/ja.sjis.po
diffstat 22 files changed, 2402 insertions(+), 1336 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:		Jul 27, 2010
-" Version:	140
+" Date:		Apr 01, 2011
+" Version:	141
 " 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 = "v140"
+let g:loaded_netrw = "v141"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of netrw needs vim 7.2"
@@ -78,6 +78,8 @@ endif
 
 " ---------------------------------------------------------------------
 " Default values for netrw's global protocol variables {{{2
+call s:NetrwInit("g:netrw_use_errorwindow",1)
+
 if !exists("g:netrw_dav_cmd")
  if executable("cadaver")
   let g:netrw_dav_cmd	= "cadaver"
@@ -97,6 +99,7 @@ endif
 if !exists("g:netrw_ftp_cmd")
   let g:netrw_ftp_cmd	= "ftp"
 endif
+let s:netrw_ftp_cmd= g:netrw_ftp_cmd
 if !exists("g:netrw_http_cmd")
  if executable("elinks")
   let g:netrw_http_cmd = "elinks"
@@ -157,11 +160,13 @@ call s:NetrwInit("g:netrw_bufsettings" ,
 call s:NetrwInit("g:netrw_chgwin"      , -1)
 call s:NetrwInit("g:netrw_compress"    , "gzip")
 call s:NetrwInit("g:netrw_ctags"       , "ctags")
-if !exists("g:netrw_cursorline")
- let g:netrw_cursorline= 1
- let s:netrw_usercul   = &cursorline
- let s:netrw_usercuc   = &cursorcolumn
+if exists("g:netrw_cursorline") && !exists("g:netrw_cursor")
+ call netrw#ErrorMsg(s:NOTE,'g:netrw_cursorline is deprecated; use g:netrw_cursor instead',77)
+ let g:netrw_cursor= g:netrw_cursorline
 endif
+call s:NetrwInit("g:netrw_cursor"      , 2)
+let s:netrw_usercul = &cursorline
+let s:netrw_usercuc = &cursorcolumn
 " Default values - d-g ---------- {{{3
 call s:NetrwInit("g:netrw_dirhist_cnt"      , 0)
 call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }')
@@ -267,7 +272,7 @@ call s:NetrwInit("g:netrw_rmf_cmd"      
 " Default values - s ---------- {{{3
 " g:netrw_sepchr: picking a character that doesn't appear in filenames that can be used to separate priority from filename
 call s:NetrwInit("g:netrw_sepchr"        , (&enc == "euc-jp")? "\<Char-0x01>" : "\<Char-0xff>")
-call s:NetrwInit("s:netrw_silentxfer"    , (exists("g:netrw_silent") && g:netrw_silent != 0)? "silent keepj " : "keepj ")
+call s:NetrwInit("s:netrw_silentxfer"    , (exists("g:netrw_silent") && g:netrw_silent != 0)? "sil keepj " : "keepj ")
 call s:NetrwInit("g:netrw_sort_by"       , "name") " alternatives: date                                      , size
 call s:NetrwInit("g:netrw_sort_options"  , "")
 call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse  (z y x ...)
@@ -285,7 +290,6 @@ call s:NetrwInit("g:netrw_use_noswf"    
 call s:NetrwInit("g:netrw_timefmt","%c")
 call s:NetrwInit("g:netrw_xstrlen",0)
 call s:NetrwInit("g:NetrwTopLvlMenu","Netrw.")
-call s:NetrwInit("g:netrw_use_errorwindow",1)
 call s:NetrwInit("g:netrw_win95ftp",1)
 call s:NetrwInit("g:netrw_winsize",25)
 " ---------------------------------------------------------------------
@@ -305,10 +309,45 @@ call s:NetrwInit("s:netrw_map_escape","<
 "  files read by network transfer aren't appropriately highlighted.
 "let g:decho_bufenter = 1	"Decho
 
+" ======================
+"  Netrw Initialization: {{{1
+" ======================
+if v:version >= 700 && has("balloon_eval") && &beval == 0
+ let &l:bexpr= "netrw#NetrwBalloonHelp()"
+ set beval
+endif
+
 " ==============================
 "  Netrw Utility Functions: {{{1
 " ==============================
 
+" ---------------------------------------------------------------------
+" netrw#NetrwBalloonHelp: {{{2
+if v:version >= 700 && has("balloon_eval") && &beval == 1
+  fun! netrw#NetrwBalloonHelp()
+    if !exists("w:netrw_bannercnt") || v:beval_lnum >= w:netrw_bannercnt
+     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"
+    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"
+     let mesg = 's: sort by name, time, or file size   r: reverse sorting order   mt: mark target'
+    elseif v:beval_text == "Sort"   || v:beval_text == "sequence"
+     let mesg = "S: edit sorting sequence"
+    elseif v:beval_text == "Hiding" || v:beval_text == "Showing"
+     let mesg = "a: hiding-showing-all   ctrl-h: editing hiding list   mh: hide/show by suffix"
+    elseif v:beval_text == "Quick" || v:beval_text == "Help"
+     let mesg = "Help: press <F1>"
+    elseif v:beval_text == "Copy/Move" || v:beval_text == "Tgt"
+     let mesg = "mt: mark target   mc: copy marked file to target   mm: move marked file to target"
+    else
+     let mesg= ""
+    endif
+    return mesg
+  endfun
+endif
+
 " ------------------------------------------------------------------------
 " s:NetrwOptionSave: save options and set to "standard" form {{{2
 "  06/08/07 : removed call to NetrwSafeOptions(), either placed
@@ -358,8 +397,8 @@ fun! s:NetrwOptionSave(vt)
   if has("win32") && !has("win95")
    let {a:vt}netrw_swfkeep  = &l:swf          " swapfile
   endif
-  if &go =~ 'a' | silent! let {a:vt}netrw_regstar = @* | endif
-  silent! let {a:vt}netrw_regslash= @/
+  if &go =~# 'a' | sil! let {a:vt}netrw_regstar = @* | endif
+  sil! let {a:vt}netrw_regslash= @/
 
 "  call Dret("s:NetrwOptionSave : win#".winnr()." buf#".bufnr("%"))
 endfun
@@ -423,17 +462,17 @@ fun! s:NetrwOptionRestore(vt)
     " netrw will temporarily set the swapfile directory
     " to the current directory as returned by getcwd().
     let &l:directory   = getcwd()
-    silent! let &l:swf = {a:vt}netrw_swfkeep
+    sil! let &l:swf = {a:vt}netrw_swfkeep
     setlocal directory=
     unlet {a:vt}netrw_swfkeep
    elseif &l:swf != {a:vt}netrw_swfkeep
     " following line causes a Press ENTER in windows -- can't seem to work around it!!!
-    silent! let &l:swf= {a:vt}netrw_swfkeep
+    sil! let &l:swf= {a:vt}netrw_swfkeep
     unlet {a:vt}netrw_swfkeep
    endif
   endif
-  if exists("{a:vt}netrw_regstar") |silent! let @*= {a:vt}netrw_regstar |unlet {a:vt}netrw_regstar |endif
-  if exists("{a:vt}netrw_regslash")|silent! let @/= {a:vt}netrw_regslash|unlet {a:vt}netrw_regslash|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
 
 "  call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd)
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
@@ -460,13 +499,13 @@ fun! s:NetrwSafeOptions()
   if g:netrw_use_noswf && has("win32") && !has("win95")
    setlocal noswf
   endif
-  call s:NetrwCursorline()
+  call s:NetrwCursor()
 
   " allow the user to override safe options
 "  call Decho("ft<".&ft."> ei=".&ei)
   if &ft == "netrw"
 "   call Decho("do any netrw FileType autocmds")
-   silent keepalt keepjumps doau FileType netrw
+   sil keepalt keepj doau FileType netrw
   endif
 
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
@@ -604,7 +643,7 @@ fun! netrw#NetRead(mode,...)
 "     call Decho("reconstructing choice")
      if match(choice,'"$') != -1
       " case "..."
-      let choice=strpart(choice,1,strlen(choice)-2)
+      let choice= strpart(choice,1,strlen(choice)-2)
      else
        "  case "... ... ..."
       let choice      = strpart(choice,1,strlen(choice)-1)
@@ -686,7 +725,7 @@ fun! netrw#NetRead(mode,...)
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
 "     call Decho("read via ftp+.netrc (method #2)")
      let netrw_fname= b:netrw_fname
-     call s:SaveBufVars()|new|call s:RestoreBufVars()
+     keepj call s:SaveBufVars()|new|keepj call s:RestoreBufVars()
      let filtbuf= bufnr("%")
      setlocal ff=unix
      keepj put =g:netrw_ftpmode
@@ -698,17 +737,17 @@ fun! netrw#NetRead(mode,...)
      call setline(line("$")+1,'get "'.netrw_fname.'" '.tmpfile)
 "     call Decho("filter input: ".getline(line("$")))
      if exists("g:netrw_port") && g:netrw_port != ""
-"      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine." ".g:netrw_port,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine." ".g:netrw_port,1)
+"      call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
      else
-"      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+"      call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
      endif
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
       let debugkeep = &debug
       setlocal debug=msg
-      call netrw#ErrorMsg(s:ERROR,getline(1),4)
+      keepj call netrw#ErrorMsg(s:ERROR,getline(1),4)
       let &debug    = debugkeep
      endif
      call s:SaveBufVars()
@@ -727,7 +766,7 @@ fun! netrw#NetRead(mode,...)
     " Construct execution string (four lines) which will be passed through filter
 "    call Decho("read via ftp+mipf (method #3)")
     let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-    call s:SaveBufVars()|new|call s:RestoreBufVars()
+    keepj call s:SaveBufVars()|new|keepj call s:RestoreBufVars()
     let filtbuf= bufnr("%")
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -753,7 +792,7 @@ fun! netrw#NetRead(mode,...)
 "     call Decho("filter input: ".getline('.'))
     endif
     if exists("g:netrw_ftpextracmd")
-     put =g:netrw_ftpextracmd
+     keepj put =g:netrw_ftpextracmd
 "     call Decho("filter input: ".getline('.'))
     endif
     keepj put ='get \"'.netrw_fname.'\" '.tmpfile
@@ -763,9 +802,9 @@ fun! netrw#NetRead(mode,...)
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
-    norm! 1Gdd
-"    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
-    exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+    keepj norm! 1Gdd
+"    call Decho("executing: %!".s:netrw_ftp_cmd." -i -n")
+    exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i -n"
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
 "     call Decho("error<".getline(1).">")
@@ -817,7 +856,7 @@ fun! netrw#NetRead(mode,...)
 
     else
      " wget/curl/fetch plus a jump to an in-page marker (ie. http://abc/def.html#aMarker)
-"     call Decho(("wget/curl plus jump (# in b:netrw_fname<".b:netrw_fname.">)")
+"     call Decho("wget/curl plus jump (# in b:netrw_fname<".b:netrw_fname.">)")
      let netrw_html= substitute(b:netrw_fname,"#.*$","","")
      let netrw_tag = substitute(b:netrw_fname,"^.*#","","")
 "     call Decho("netrw_html<".netrw_html.">")
@@ -826,7 +865,7 @@ fun! netrw#NetRead(mode,...)
      exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1)
      let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
 "     call Decho('<\s*a\s*name=\s*"'.netrw_tag.'"/')
-     exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>"
+     exe 'keepj norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>"
     endif
     let b:netrw_lastfile = choice
     setlocal ro
@@ -883,7 +922,7 @@ fun! netrw#NetRead(mode,...)
 "    call Decho("read via fetch (method #8)")
     if g:netrw_fetch_cmd == ""
      if !exists("g:netrw_quiet")
-      call netrw#ErrorMsg(s:ERROR,"fetch command not available",7)
+      keepj call netrw#ErrorMsg(s:ERROR,"fetch command not available",7)
      endif
 "     call Dret("NetRead")
     endif
@@ -930,9 +969,9 @@ fun! netrw#NetRead(mode,...)
   endif
   if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't' && tmpfile !~ '.tar.xz$' && tmpfile !~ '.txz'
 "   call Decho("cleanup by deleting tmpfile<".tmpfile.">")
-   call s:NetrwDelete(tmpfile)
-  endif
-  call s:NetrwOptionRestore("w:")
+   keepj call s:NetrwDelete(tmpfile)
+  endif
+  keepj call s:NetrwOptionRestore("w:")
 
 "  call Dret("netrw#NetRead :5 getcwd<".getcwd().">")
 endfun
@@ -966,16 +1005,16 @@ fun! netrw#NetWrite(...) range
    " For binary writes, always write entire file.
    " (line numbers don't really make sense for that).
    " Also supports the writing of tar and zip files.
-"   call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
-   exe "silent keepj w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
+"   call Decho("(write entire file) sil exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+   exe "sil keepj w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
   elseif g:netrw_cygwin
    " write (selected portion of) file to temporary
    let cygtmpfile= substitute(tmpfile,'/cygdrive/\(.\)','\1:','')
-"   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
+"   call Decho("(write selected portion) sil exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
    exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile)
   else
    " write (selected portion of) file to temporary
-"   call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+"   call Decho("(write selected portion) sil exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
    exe "sil keepj ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
   endif
 
@@ -1043,7 +1082,7 @@ fun! netrw#NetWrite(...) range
 "   call Decho("choice<" . choice . "> ichoice=".ichoice)
 
    " Determine method of write (ftp, rcp, etc) {{{4
-   call s:NetrwMethod(choice)
+   keepj call s:NetrwMethod(choice)
    if !exists("b:netrw_method") || b:netrw_method < 0
 "    call Dfunc("netrw#NetWrite : unsupported method")
     return
@@ -1098,20 +1137,20 @@ fun! netrw#NetWrite(...) range
      keepj put =g:netrw_ftpextracmd
 "     call Decho("filter input: ".getline("$"))
     endif
-    call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"')
+    keepj call setline(line("$")+1,'put "'.tmpfile.'" "'.netrw_fname.'"')
 "    call Decho("filter input: ".getline("$"))
     if exists("g:netrw_port") && g:netrw_port != ""
-"     call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
-     exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
+"     call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
+     exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
     else
 "     call Decho("filter input window#".winnr())
-"     call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-     exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+"     call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
+     exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
     endif
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if !exists("g:netrw_quiet")
-      call netrw#ErrorMsg(s:ERROR,getline(1),14)
+      keepj call netrw#ErrorMsg(s:ERROR,getline(1),14)
      endif
      let mod=1
     endif
@@ -1170,8 +1209,8 @@ fun! netrw#NetWrite(...) range
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
     keepj norm! 1Gdd
-"    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
-    exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+"    call Decho("executing: %!".s:netrw_ftp_cmd." -i -n")
+    exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i -n"
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
      if  !exists("g:netrw_quiet")
@@ -1285,6 +1324,7 @@ fun! netrw#NetWrite(...) range
    " NetWrite: Complain {{{3
    else
     call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",17)
+    let leavemod= 1
    endif
   endwhile
 
@@ -1299,9 +1339,11 @@ fun! netrw#NetWrite(...) range
   if a:firstline == 1 && a:lastline == line("$")
    " restore modifiability; usually equivalent to set nomod
    let &mod= mod
-  endif
-
-  " restore equalalways
+  elseif !exists("leavemod")
+   " indicate that the buffer has not been modified since last written
+   set nomod
+  endif
+
 "  call Dret("netrw#NetWrite")
 endfun
 
@@ -1408,7 +1450,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
 
    " rename buffer back to remote filename
 "   call Decho("exe sil! keepalt file ".fnameescape(rfile))
-   exe "sil! keepalt file ".fnameescape(rfile)
+   exe "sil! keepj keepalt file ".fnameescape(rfile)
    filetype detect
 "   call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
    let line1 = 1
@@ -1420,7 +1462,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
    let curline = line(".")
    let lastline= line("$")
 "   call Decho("exe<".a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile).">  line#".curline)
-   exe a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile)
+   exe "keepj ".a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile)
    let line1= curline + 1
    let line2= line("$") - lastline + 1
 
@@ -1428,7 +1470,7 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
    " not readable
 "   call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
 "   call Decho("tfile<".a:tfile."> not readable")
-   call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9)
+   keepj call netrw#ErrorMsg(s:WARNING,"file <".a:tfile."> not readable",9)
 "   call Dret("NetrwGetFile : tfile<".a:tfile."> not readable")
    return
   endif
@@ -1436,14 +1478,14 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
   " User-provided (ie. optional) fix-it-up command
   if exists("*NetReadFixup")
 "   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
-   call NetReadFixup(a:method, line1, line2)
+   keepj call NetReadFixup(a:method, line1, line2)
 "  else " Decho
 "   call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
   endif
 
-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+  if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu
    " update the Buffers menu
-   call s:UpdateBuffersMenu()
+   keepj call s:UpdateBuffersMenu()
   endif
 
 "  call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".s:FileReadable(a:tfile))
@@ -1484,6 +1526,13 @@ fun! s:NetrwMethod(choice)
    else
     let curmachine= "N O T A HOST"
    endif
+   if exists("g:netrw_port")
+    let netrw_port= g:netrw_port
+   endif
+
+   " insure that netrw_ftp_cmd starts off every method determination
+   " with the current g:netrw_ftp_cmd
+   let s:netrw_ftp_cmd= g:netrw_ftp_cmd
 
   " initialization
   let b:netrw_method  = 0
@@ -1518,7 +1567,7 @@ fun! s:NetrwMethod(choice)
 
 "  call Decho("determine method:")
   " Determine Method
-  " rcp://user@hostname/...path-to-file
+  " Method#1: rcp://user@hostname/...path-to-file {{{3
   if match(a:choice,rcpurm) == 0
 "   call Decho("rcp://...")
    let b:netrw_method  = 1
@@ -1529,7 +1578,7 @@ fun! s:NetrwMethod(choice)
     let g:netrw_uid= userid
    endif
 
-  " scp://user@hostname/...path-to-file
+  " Method#4: scp://user@hostname/...path-to-file {{{3
   elseif match(a:choice,scpurm) == 0
 "   call Decho("scp://...")
    let b:netrw_method  = 4
@@ -1537,14 +1586,14 @@ fun! s:NetrwMethod(choice)
    let g:netrw_port    = substitute(a:choice,scpurm,'\2',"")
    let b:netrw_fname   = substitute(a:choice,scpurm,'\3',"")
 
-  " http://user@hostname/...path-to-file
+  " Method#5: http://user@hostname/...path-to-file {{{3
   elseif match(a:choice,httpurm) == 0
 "   call Decho("http://...")
    let b:netrw_method = 5
    let g:netrw_machine= substitute(a:choice,httpurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,httpurm,'\2',"")
 
-  " dav://hostname[:port]/..path-to-file..
+  " Method#6: dav://hostname[:port]/..path-to-file.. {{{3
   elseif match(a:choice,davurm) == 0
 "   call Decho("dav://...")
    let b:netrw_method= 6
@@ -1555,14 +1604,14 @@ fun! s:NetrwMethod(choice)
    endif
    let b:netrw_fname  = substitute(a:choice,davurm,'\3',"")
 
-  " rsync://user@hostname/...path-to-file
+   " Method#7: rsync://user@hostname/...path-to-file {{{3
   elseif match(a:choice,rsyncurm) == 0
 "   call Decho("rsync://...")
    let b:netrw_method = 7
    let g:netrw_machine= substitute(a:choice,rsyncurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,rsyncurm,'\2',"")
 
-  " ftp://[user@]hostname[[:#]port]/...path-to-file
+   " Methods 2,3: ftp://[user@]hostname[[:#]port]/...path-to-file {{{3
   elseif match(a:choice,ftpurm) == 0
 "   call Decho("ftp://...")
    let userid	      = substitute(a:choice,ftpurm,'\2',"")
@@ -1573,14 +1622,29 @@ fun! s:NetrwMethod(choice)
    if userid != ""
     let g:netrw_uid= userid
    endif
-   if exists("s:netrw_passwd") && curmachine != g:netrw_machine
-    " if there's a change in hostname, require password re-entry
-    unlet s:netrw_passwd
+   if curmachine != g:netrw_machine
+    if exists("s:netrw_passwd")
+     " if there's a change in hostname, require password re-entry
+     unlet s:netrw_passwd
+    endif
+    if exists("netrw_port")
+     unlet netrw_port
+    endif
    endif
    if exists("g:netrw_uid") && exists("s:netrw_passwd")
     let b:netrw_method = 3
    else
-    if s:FileReadable(expand("$HOME/.netrc")) && !g:netrw_ignorenetrc
+    if (has("win32") || has("win95") || has("win64") || has("win16")) && s:netrw_ftp_cmd =~ '-[sS]:'
+"     call Decho("has -s: : s:netrw_ftp_cmd<".s:netrw_ftp_cmd.">")
+"     call Decho("          g:netrw_ftp_cmd<".g:netrw_ftp_cmd.">")
+     if g:netrw_ftp_cmd =~ '-[sS]:\S*MACHINE\>'
+      let machine        = substitute(g:netrw_machine,'\([^.]\+\)\.\S*','\1','')
+      let s:netrw_ftp_cmd= substitute(g:netrw_ftp_cmd,'\<MACHINE\>',machine.".ftp",'')
+"      call Decho("s:netrw_ftp_cmd<".s:netrw_ftp_cmd.">")
+     endif
+     let b:netrw_method= 2
+    elseif s:FileReadable(expand("$HOME/.netrc")) && !g:netrw_ignorenetrc
+"     call Decho("using <".expand("$HOME/.netrc")."> (readable)")
      let b:netrw_method= 2
     else
      if !exists("g:netrw_uid") || g:netrw_uid == ""
@@ -1593,6 +1657,7 @@ fun! s:NetrwMethod(choice)
     endif
    endif
 
+  " Method#8: fetch {{{3
   elseif match(a:choice,fetchurm) == 0
 "   call Decho("fetch://...")
    let b:netrw_method = 8
@@ -1601,7 +1666,7 @@ fun! s:NetrwMethod(choice)
    let b:netrw_option = substitute(a:choice,fetchurm,'\4',"")
    let b:netrw_fname  = substitute(a:choice,fetchurm,'\5',"")
 
-  " Issue an ftp : "machine id password [path/]filename"
+   " Method#3: Issue an ftp : "machine id password [path/]filename" {{{3
   elseif match(a:choice,mipf) == 0
 "   call Decho("(ftp) host id pass file")
    let b:netrw_method  = 3
@@ -1610,7 +1675,7 @@ fun! s:NetrwMethod(choice)
    let s:netrw_passwd  = substitute(a:choice,mipf,'\3',"")
    let b:netrw_fname   = substitute(a:choice,mipf,'\4',"")
 
-  " Issue an ftp: "hostname [path/]filename"
+  " Method#3: Issue an ftp: "hostname [path/]filename" {{{3
   elseif match(a:choice,mf) == 0
 "   call Decho("(ftp) host file")
    if exists("g:netrw_uid") && exists("s:netrw_passwd")
@@ -1624,14 +1689,14 @@ fun! s:NetrwMethod(choice)
     let b:netrw_fname   = substitute(a:choice,mf,'\2',"")
    endif
 
-  " sftp://user@hostname/...path-to-file
+  " Method#9: sftp://user@hostname/...path-to-file {{{3
   elseif match(a:choice,sftpurm) == 0
 "   call Decho("sftp://...")
    let b:netrw_method = 9
    let g:netrw_machine= substitute(a:choice,sftpurm,'\1',"")
    let b:netrw_fname  = substitute(a:choice,sftpurm,'\2',"")
 
-  " Issue an rcp: hostname:filename"  (this one should be last)
+  " Method#1: Issue an rcp: hostname:filename"  (this one should be last) {{{3
   elseif match(a:choice,rcphf) == 0
 "   call Decho("(rcp) [user@]host:file) rcphf<".rcphf.">")
    let b:netrw_method  = 1
@@ -1646,16 +1711,21 @@ fun! s:NetrwMethod(choice)
     let g:netrw_uid= userid
    endif
 
+  " Cannot Determine Method {{{3
   else
    if !exists("g:netrw_quiet")
     call netrw#ErrorMsg(s:WARNING,"cannot determine method (format: protocol://[user@]hostname[:port]/[path])",45)
    endif
    let b:netrw_method  = -1
   endif
-
-  " remove any leading [:#] from port number
+  "}}}3
+
   if g:netrw_port != ""
-    let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
+   " remove any leading [:#] from port number
+   let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
+  elseif exists("netrw_port")
+   " retain port number as implicit for subsequent ftp operations
+   let g:netrw_port= netrw_port
   endif
 
 "  call Decho("a:choice       <".a:choice.">")
@@ -1669,7 +1739,7 @@ fun! s:NetrwMethod(choice)
 "   call Decho("s:netrw_passwd <".s:netrw_passwd.">")
 "  endif					"Decho
 "  call Decho("b:netrw_fname  <".b:netrw_fname.">")
-"  call Dret("NetrwMethod : b:netrw_method=".b:netrw_method)
+"  call Dret("NetrwMethod : b:netrw_method=".b:netrw_method." g:netrw_port=".g:netrw_port)
 endfun
 
 " ------------------------------------------------------------------------
@@ -1740,15 +1810,71 @@ endfun
 " ===========================================
 
 " ---------------------------------------------------------------------
-" s:BrowserMaps: {{{2
-fun! s:BrowserMaps(islocal)
-"  call Dfunc("s:BrowserMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
+" s:NetrwMaps: {{{2
+fun! s:NetrwMaps(islocal)
+"  call Dfunc("s:NetrwMaps(islocal=".a:islocal.") b:netrw_curdir<".b:netrw_curdir.">")
   if a:islocal
 "   call Decho("make local 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>
+   inoremap <buffer> <silent> %		<c-o>:call <SID>NetrwOpenFile(1)<cr>
+   inoremap <buffer> <silent> -		<c-o>:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
+   inoremap <buffer> <silent> <cr>	<c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
+   inoremap <buffer> <silent> d		<c-o>:call <SID>NetrwMakeDir("")<cr>
+   inoremap <buffer> <silent> gb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
+   inoremap <buffer> <silent> gh	<c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
+   inoremap <buffer> <silent> gp	<c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<cr>
+   inoremap <buffer> <silent> I		<c-o>:call <SID>NetrwBannerCtrl(1)<cr>
+   inoremap <buffer> <silent> i		<c-o>:call <SID>NetrwListStyle(1)<cr>
+   inoremap <buffer> <silent> mb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
+   inoremap <buffer> <silent> mB	<c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
+   inoremap <buffer> <silent> mc	<c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
+   inoremap <buffer> <silent> md	<c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
+   inoremap <buffer> <silent> me	<c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
+   inoremap <buffer> <silent> mf	<c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+   inoremap <buffer> <silent> mg	<c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
+   inoremap <buffer> <silent> mh	<c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
+   inoremap <buffer> <silent> mm	<c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
+   inoremap <buffer> <silent> mp	<c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
+   inoremap <buffer> <silent> mr	<c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
+   inoremap <buffer> <silent> ms	<c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
+   inoremap <buffer> <silent> mT	<c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
+   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> 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>
+   inoremap <buffer> <silent> p		<c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
+   inoremap <buffer> <silent> P		<c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
+   inoremap <buffer> <silent> qb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
+   inoremap <buffer> <silent> qf	<c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
+   inoremap <buffer> <silent> r		<c-o>: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>
+   inoremap <buffer> <silent> s		<c-o>:call <SID>NetrwSortStyle(1)<cr>
+   inoremap <buffer> <silent> S		<c-o>:call <SID>NetSortSequence(1)<cr>
+   inoremap <buffer> <silent> T		<c-o>:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
+   inoremap <buffer> <silent> t		<c-o>:call <SID>NetrwSplit(4)<cr>
+   inoremap <buffer> <silent> u		<c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
+   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> a		:call <SID>NetrwHide(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>
@@ -1764,75 +1890,21 @@ fun! s:BrowserMaps(islocal)
    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> gb	:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<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> c		:exe "keepjumps lcd ".fnameescape(b:netrw_curdir)<cr>
-   nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
-   nnoremap <buffer> <silent> d		:call <SID>NetrwMakeDir("")<cr>
-   nnoremap <buffer> <silent> i		:call <SID>NetrwListStyle(1)<cr>
-   nnoremap <buffer> <silent> I		:call <SID>NetrwBannerCtrl(1)<cr>
+   nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<cr>
    nnoremap <buffer> <silent> o		:call <SID>NetrwSplit(3)<cr>
-   nnoremap <buffer> <silent> O		:call <SID>NetrwObtain(1)<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> mB	:<c-u>call <SID>NetrwBookHistHandler(6,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> T		:call <SID>NetrwSplit(4)<bar>norm! gT<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>
-   nnoremap <buffer> <silent> %		:call <SID>NetrwOpenFile(1)<cr>
-   inoremap <buffer> <silent> <cr>	<c-o>:call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord()))<cr>
-   inoremap <buffer> <silent> -		<c-o>:exe "norm! 0"<bar>call netrw#LocalBrowseCheck(<SID>NetrwBrowseChgDir(1,'../'))<cr>
-   inoremap <buffer> <silent> a		<c-o>:call <SID>NetrwHide(1)<cr>
-   inoremap <buffer> <silent> mb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(0,b:netrw_curdir)<cr>
-   inoremap <buffer> <silent> mc	<c-o>:<c-u>call <SID>NetrwMarkFileCopy(1)<cr>
-   inoremap <buffer> <silent> md	<c-o>:<c-u>call <SID>NetrwMarkFileDiff(1)<cr>
-   inoremap <buffer> <silent> me	<c-o>:<c-u>call <SID>NetrwMarkFileEdit(1)<cr>
-   inoremap <buffer> <silent> mf	<c-o>:<c-u>call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
-   inoremap <buffer> <silent> mg	<c-o>:<c-u>call <SID>NetrwMarkFileGrep(1)<cr>
-   inoremap <buffer> <silent> mh	<c-o>:<c-u>call <SID>NetrwMarkHideSfx(1)<cr>
-   inoremap <buffer> <silent> mm	<c-o>:<c-u>call <SID>NetrwMarkFileMove(1)<cr>
-   inoremap <buffer> <silent> mp	<c-o>:<c-u>call <SID>NetrwMarkFilePrint(1)<cr>
-   inoremap <buffer> <silent> mr	<c-o>:<c-u>call <SID>NetrwMarkFileRegexp(1)<cr>
-   inoremap <buffer> <silent> ms	<c-o>:<c-u>call <SID>NetrwMarkFileSource(1)<cr>
-   inoremap <buffer> <silent> mT	<c-o>:<c-u>call <SID>NetrwMarkFileTag(1)<cr>
-   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> mz	<c-o>:<c-u>call <SID>NetrwMarkFileCompress(1)<cr>
-   inoremap <buffer> <silent> gb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(1,b:netrw_curdir)<cr>
-   inoremap <buffer> <silent> gh	<c-o>:<c-u>call <SID>NetrwHidden(1)<cr>
-   inoremap <buffer> <silent> gp	<c-o>:<c-u>call <SID>NetrwChgPerm(1,b:netrw_curdir)<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>
-   inoremap <buffer> <silent> d		<c-o>:call <SID>NetrwMakeDir("")<cr>
-   inoremap <buffer> <silent> i		<c-o>:call <SID>NetrwListStyle(1)<cr>
-   inoremap <buffer> <silent> I		<c-o>:call <SID>NetrwBannerCtrl(1)<cr>
-   inoremap <buffer> <silent> o		<c-o>:call <SID>NetrwSplit(3)<cr>
-   inoremap <buffer> <silent> O		<c-o>:call <SID>NetrwObtain(1)<cr>
-   inoremap <buffer> <silent> p		<c-o>:call <SID>NetrwPreview(<SID>NetrwBrowseChgDir(1,<SID>NetrwGetWord(),1))<cr>
-   inoremap <buffer> <silent> P		<c-o>:call <SID>NetrwPrevWinOpen(1)<cr>
-   inoremap <buffer> <silent> qb	<c-o>:<c-u>call <SID>NetrwBookHistHandler(2,b:netrw_curdir)<cr>
-   inoremap <buffer> <silent> mB	<c-o>:<c-u>call <SID>NetrwBookHistHandler(6,b:netrw_curdir)<cr>
-   inoremap <buffer> <silent> qf	<c-o>:<c-u>call <SID>NetrwFileInfo(1,<SID>NetrwGetWord())<cr>
-   inoremap <buffer> <silent> r		<c-o>: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>
-   inoremap <buffer> <silent> s		<c-o>:call <SID>NetrwSortStyle(1)<cr>
-   inoremap <buffer> <silent> S		<c-o>:call <SID>NetSortSequence(1)<cr>
-   inoremap <buffer> <silent> t		<c-o>:call <SID>NetrwSplit(4)<cr>
-   inoremap <buffer> <silent> T		<c-o>:call <SID>NetrwSplit(4)<bar>norm! gT<cr>
-   inoremap <buffer> <silent> u		<c-o>:<c-u>call <SID>NetrwBookHistHandler(4,expand("%"))<cr>
-   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>
-   inoremap <buffer> <silent> %		<c-o>:call <SID>NetrwOpenFile(1)<cr>
    if !hasmapto('<Plug>NetrwHideEdit')
     nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
     imap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
@@ -1856,6 +1928,7 @@ fun! s:BrowserMaps(islocal)
     nnoremap <buffer> <silent> <leftmouse>   <leftmouse>:call <SID>NetrwLeftmouse(1)<cr>
     nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(1)<cr>
     nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(1,<SID>NetrwGetWord())<cr>
+    nmap     <buffer> <silent> <2-leftmouse> -
     exe 'nnoremap <buffer> <silent> <rightmouse>  <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
     exe 'vnoremap <buffer> <silent> <rightmouse>  <leftmouse>:call <SID>NetrwLocalRm("'.mapsafecurdir.'")<cr>'
     inoremap <buffer> <silent> <leftmouse>   <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(1)<cr>
@@ -1900,6 +1973,8 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <silent> mx	:<c-u>call <SID>NetrwMarkFileExe(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>
+   nnoremap <buffer> <silent> gf	:<c-u>call <SID>NetrwForceFile(0,<SID>NetrwGetWord())<cr>
    nnoremap <buffer> <silent> gh	:<c-u>call <SID>NetrwHidden(0)<cr>
    nnoremap <buffer> <silent> gp	:<c-u>call <SID>NetrwChgPerm(0,b:netrw_curdir)<cr>
    nnoremap <buffer> <silent> C		:let g:netrw_chgwin= winnr()<cr>
@@ -1983,6 +2058,7 @@ fun! s:BrowserMaps(islocal)
     nnoremap <buffer> <silent> <leftmouse>   <leftmouse>:call <SID>NetrwLeftmouse(0)<cr>
     nnoremap <buffer> <silent> <middlemouse> <leftmouse>:call <SID>NetrwPrevWinOpen(0)<cr>
     nnoremap <buffer> <silent> <s-leftmouse> <leftmouse>:call <SID>NetrwMarkFile(0,<SID>NetrwGetWord())<cr>
+    nmap     <buffer> <silent> <2-leftmouse> -
     exe 'nnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
     exe 'vnoremap <buffer> <silent> <rightmouse> <leftmouse>:call <SID>NetrwRemoteRm("'.mapsafeusermach.'","'.mapsafepath.'")<cr>'
     inoremap <buffer> <silent> <leftmouse>   <c-o><leftmouse><c-o>:call <SID>NetrwLeftmouse(0)<cr>
@@ -2004,8 +2080,25 @@ fun! s:BrowserMaps(islocal)
    nnoremap <buffer> <F1>			:he netrw-quickhelp<cr>
    inoremap <buffer> <F1>			<c-o>:he netrw-quickhelp<cr>
   endif
-  call s:SetRexDir(a:islocal,b:netrw_curdir)
-"  call Dret("s:BrowserMaps")
+
+  " set up Rexplore and leftmouse-double-click
+  com! Rexplore call s:NetrwRexplore(w:netrw_rexlocal,exists("w:netrw_rexdir")? w:netrw_rexdir : ".")
+  if g:netrw_mousemaps && g:netrw_retmap
+   if !hasmapto("<Plug>NetrwReturn")
+    if maparg("<2-leftmouse>","n") == "" || maparg("<2-leftmouse>","n") =~ '^-$'
+"     call Decho("making map for 2-leftmouse")
+     nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
+    elseif maparg("<c-leftmouse>","n") == ""
+"     call Decho("making map for c-leftmouse")
+     nmap <unique> <silent> <c-leftmouse>	<Plug>NetrwReturn
+    endif
+   endif
+   exe 'nnoremap <silent> <Plug>NetrwReturn :Rexplore<cr>'
+"   call Decho("made <Plug>NetrwReturn map")
+  endif
+
+  keepj call s:SetRexDir(a:islocal,b:netrw_curdir)
+"  call Dret("s:NetrwMaps")
 endfun
 
 " ---------------------------------------------------------------------
@@ -2050,7 +2143,7 @@ fun! s:NetrwBookHistHandler(chg,curdir)
    " change to the bookmarked directory
 "   call Decho("(user: <".v:count."mb>) change to the bookmarked directory")
    if exists("g:netrw_bookmarklist[v:count-1]")
-    exe "e ".fnameescape(g:netrw_bookmarklist[v:count-1])
+    exe "keepj e ".fnameescape(g:netrw_bookmarklist[v:count-1])
    else
     echomsg "Sorry, bookmark#".v:count." doesn't exist!"
    endif
@@ -2075,20 +2168,24 @@ fun! s:NetrwBookHistHandler(chg,curdir)
    let cnt     = g:netrw_dirhist_cnt
    let first   = 1
    let histcnt = 0
-   while ( first || cnt != g:netrw_dirhist_cnt )
+   if g:netrw_dirhistmax > 0
+    while ( first || cnt != g:netrw_dirhist_cnt )
 "    call Decho("first=".first." cnt=".cnt." dirhist_cnt=".g:netrw_dirhist_cnt)
-    let histcnt= histcnt + 1
-    if exists("g:netrw_dirhist_{cnt}")
+     let histcnt= histcnt + 1
+     if exists("g:netrw_dirhist_{cnt}")
 "     call Decho("Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt})
-     echo "Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt}
-     let didwork= 1
-    endif
-    let first = 0
-    let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
-    if cnt < 0
-     let cnt= cnt + g:netrw_dirhistmax
-    endif
-   endwhile
+      echo "Netrw  History#".histcnt.": ".g:netrw_dirhist_{cnt}
+      let didwork= 1
+     endif
+     let first = 0
+     let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
+     if cnt < 0
+      let cnt= cnt + g:netrw_dirhistmax
+     endif
+    endwhile
+   else
+    let g:netrw_dirhist_cnt= 0
+   endif
    if didwork
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
@@ -2097,56 +2194,71 @@ fun! s:NetrwBookHistHandler(chg,curdir)
    " saves most recently visited directories (when they differ)
 "   call Decho("(browsing) record curdir history")
    if !exists("g:netrw_dirhist_cnt") || !exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}") || g:netrw_dirhist_{g:netrw_dirhist_cnt} != a:curdir
-    let g:netrw_dirhist_cnt                   = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
-    let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
+    if g:netrw_dirhistmax > 0
+     let g:netrw_dirhist_cnt                   = ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+     let g:netrw_dirhist_{g:netrw_dirhist_cnt} = a:curdir
+    endif
 "    call Decho("save dirhist#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
    endif
 
   elseif a:chg == 4
    " u: change to the previous directory stored on the history list
 "   call Decho("(user: <u>) chg to prev dir from history")
-   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
-   if g:netrw_dirhist_cnt < 0
-    let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+   if g:netrw_dirhistmax > 0
+    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+    if g:netrw_dirhist_cnt < 0
+     let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+    endif
+   else
+    let g:netrw_dirhist_cnt= 0
    endif
    if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
 "    call Decho("changedir u#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
      setlocal ma noro
 "     call Decho("setlocal ma noro")
-     keepj %d
+     sil! keepj %d
      setlocal nomod
 "     call Decho("setlocal nomod")
     endif
 "    "    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
     exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
    else
-    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+    if g:netrw_dirhistmax > 0
+     let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+    else
+     let g:netrw_dirhist_cnt= 0
+    endif
     echo "Sorry, no predecessor directory exists yet"
    endif
 
   elseif a:chg == 5
    " U: change to the subsequent directory stored on the history list
 "   call Decho("(user: <U>) chg to next dir from history")
-   let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
-   if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
+   if g:netrw_dirhistmax > 0
+    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt + 1 ) % g:netrw_dirhistmax
+    if exists("g:netrw_dirhist_{g:netrw_dirhist_cnt}")
 "    call Decho("changedir U#".g:netrw_dirhist_cnt."<".g:netrw_dirhist_{g:netrw_dirhist_cnt}.">")
-    if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
-     setlocal ma noro
+     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("b:netrw_curdir")
+      setlocal ma noro
 "     call Decho("setlocal ma noro")
-     keepj %d
+      sil! keepj %d
 "     call Decho("removed all lines from buffer (%d)")
-     setlocal nomod
+      setlocal nomod
 "     call Decho("setlocal nomod")
-    endif
+     endif
 "    call Decho("exe e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt}))
-    exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+     exe "keepj e! ".fnameescape(g:netrw_dirhist_{g:netrw_dirhist_cnt})
+    else
+     let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
+     if g:netrw_dirhist_cnt < 0
+      let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
+     endif
+     echo "Sorry, no successor directory exists yet"
+    endif
    else
-    let g:netrw_dirhist_cnt= ( g:netrw_dirhist_cnt - 1 ) % g:netrw_dirhistmax
-    if g:netrw_dirhist_cnt < 0
-     let g:netrw_dirhist_cnt= g:netrw_dirhist_cnt + g:netrw_dirhistmax
-    endif
-    echo "Sorry, no successor directory exists yet"
+    let g:netrw_dirhist_cnt= 0
+    echo "Sorry, no successor directory exists yet (g:netrw_dirhistmax is ".g:netrw_dirhistmax.")"
    endif
 
   elseif a:chg == 6
@@ -2154,10 +2266,10 @@ fun! s:NetrwBookHistHandler(chg,curdir)
 "   call Decho("delete bookmark#".v:count."<".g:netrw_bookmarklist[v:count-1].">")
    let savefile= s:NetrwHome()."/.netrwbook"
    if filereadable(savefile)
-    call s:NetrwBookHistSave() " done here to merge bookmarks first
-    call delete(savefile)
-   endif
-   call remove(g:netrw_bookmarklist,v:count-1)
+    keepj call s:NetrwBookHistSave() " done here to merge bookmarks first
+    keepj call delete(savefile)
+   endif
+   keepj call remove(g:netrw_bookmarklist,v:count-1)
   endif
   call s:NetrwBookmarkMenu()
 "  call Dret("s:NetrwBookHistHandler")
@@ -2173,15 +2285,17 @@ fun! s:NetrwBookHistRead()
    let savefile= home."/.netrwbook"
    if filereadable(savefile)
 "    call Decho("sourcing .netrwbook")
-    exe "so ".savefile
-   endif
-   let savefile= home."/.netrwhist"
-   if filereadable(savefile)
+    exe "keepj so ".savefile
+   endif
+   if g:netrw_dirhistmax > 0
+    let savefile= home."/.netrwhist"
+    if filereadable(savefile)
 "    call Decho("sourcing .netrwhist")
-    exe "so ".savefile
-   endif
-   let s:netrw_initbookhist= 1
-   au VimLeave * call s:NetrwBookHistSave()
+     exe "keepj so ".savefile
+    endif
+    let s:netrw_initbookhist= 1
+    au VimLeave * call s:NetrwBookHistSave()
+   endif
   endif
 "  call Dret("s:NetrwBookHistRead")
 endfun
@@ -2191,9 +2305,13 @@ endfun
 "                      Sister function: s:NetrwBookHistRead()
 "                      I used to do this via viminfo but that appears to
 "                      be unreliable for long-term storage
-"                      COMBAK: does $HOME work under windows???
 fun! s:NetrwBookHistSave()
 "  call Dfunc("s:NetrwBookHistSave() dirhistmax=".g:netrw_dirhistmax)
+  if g:netrw_dirhistmax <= 0
+"   call Dret("s:NetrwBookHistSave : dirhistmax=".g:netrw_dirhistmax)
+   return
+  endif
+
   let savefile= s:NetrwHome()."/.netrwhist"
   1split
   call s:NetrwEnew()
@@ -2201,10 +2319,10 @@ fun! s:NetrwBookHistSave()
   setlocal nocin noai noci magic nospell nohid wig= noaw
   setlocal ma noro write
   if exists("&acd") | setlocal noacd | endif
-  silent %d
+  sil! keepj %d
 
   " save .netrwhist -- no attempt to merge
-  silent! file .netrwhist
+  sil! file .netrwhist
   call setline(1,"let g:netrw_dirhistmax  =".g:netrw_dirhistmax)
   call setline(2,"let g:netrw_dirhist_cnt =".g:netrw_dirhist_cnt)
   let lastline = line("$")
@@ -2254,7 +2372,7 @@ fun! s:NetrwBrowse(islocal,dirname)
 "  call Decho("tab#".tabpagenr()." win#".winnr())
 "  call Dredir("ls!")
   if !exists("s:netrw_initbookhist")
-   call s:NetrwBookHistRead()
+   keepj call s:NetrwBookHistRead()
   endif
 
   " simplify the dirname (especially for ".."s in dirnames)
@@ -2271,12 +2389,12 @@ fun! s:NetrwBrowse(islocal,dirname)
    return
   endif
   if !exists("*shellescape")
-   call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69)
+   keepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing shellescape()",69)
 "   call Dret("s:NetrwBrowse : missing shellescape()")
    return
   endif
   if !exists("*fnameescape")
-   call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing fnameescape()",70)
+   keepj call netrw#ErrorMsg(s:ERROR,"netrw can't run -- your vim is missing fnameescape()",70)
 "   call Dret("s:NetrwBrowse : missing fnameescape()")
    return
   endif
@@ -2315,12 +2433,12 @@ fun! s:NetrwBrowse(islocal,dirname)
 "   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! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
-   exe "sil! keepalt doau BufReadPre ".fnameescape(s:fname)
-   silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
+   exe "sil! keepj keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
+   exe "sil! keepj keepalt doau BufReadPre ".fnameescape(s:fname)
+   sil call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
    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 keepalt doau BufReadPost ".fnameescape(s:fname)
+    exe "sil keepj keepalt doau BufReadPost ".fnameescape(s:fname)
    endif
 
    " save certain window-oriented variables into buffer-oriented variables {{{3
@@ -2333,7 +2451,7 @@ fun! s:NetrwBrowse(islocal,dirname)
    return
   endif
 
-  " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
+  " use buffer-oriented WinVars if buffer variables exist but associated window variables don't {{{3
   call s:UseBufWinVars()
 
   " set up some variables {{{3
@@ -2342,7 +2460,7 @@ fun! s:NetrwBrowse(islocal,dirname)
   let s:last_sort_by         = g:netrw_sort_by
 
   " set up menu {{{3
-  call s:NetrwMenu(1)
+  keepj call s:NetrwMenu(1)
 
   " set up buffer {{{3
   let reusing= s:NetrwGetBuffer(a:islocal,dirname)
@@ -2443,9 +2561,9 @@ fun! s:NetrwBrowse(islocal,dirname)
    let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
    if dirname !~ dirpat
     if !exists("g:netrw_quiet")
-     call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20)
-    endif
-    call s:NetrwOptionRestore("w:")
+     keepj call netrw#ErrorMsg(s:ERROR,"netrw doesn't understand your dirname<".dirname.">",20)
+    endif
+    keepj call s:NetrwOptionRestore("w:")
     setlocal noma nomod nowrap
 "    call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
 "    call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">")
@@ -2458,8 +2576,12 @@ fun! s:NetrwBrowse(islocal,dirname)
   " -----------------------
   " Directory Listing: {{{3
   " -----------------------
-  call s:BrowserMaps(a:islocal)
-  call s:PerformListing(a:islocal)
+  keepj call s:NetrwMaps(a:islocal)
+  keepj call s:PerformListing(a:islocal)
+  if v:version >= 700 && has("balloon_eval") && &l:bexpr == ""
+   let &l:bexpr= "netrw#NetrwBalloonHelp()"
+   set beval
+  endif
 
   " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
   " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
@@ -2470,7 +2592,7 @@ fun! s:NetrwBrowse(islocal,dirname)
   let s:locbrowseshellcmd= 1
 
 "  call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
-"  call Dret("s:NetrwBrowse : did PerformListing")
+"  call Dret("s:NetrwBrowse : did PerformListing  ft<".&ft.">")
   return
 endfun
 
@@ -2625,10 +2747,10 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "    call Decho("  exe sil! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
     exe 'sil! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
     set bt=nofile noswf
-    nnoremap <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
-    nnoremap <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
-    nnoremap <silent> <buffer> [[       :silent call <SID>TreeListMove('[')<cr>
-    nnoremap <silent> <buffer> ]]       :silent call <SID>TreeListMove(']')<cr>
+    nnoremap <silent> <buffer> [	:sil call <SID>TreeListMove('[')<cr>
+    nnoremap <silent> <buffer> ]	:sil call <SID>TreeListMove(']')<cr>
+    nnoremap <silent> <buffer> [[       :sil call <SID>TreeListMove('[')<cr>
+    nnoremap <silent> <buffer> ]]       :sil call <SID>TreeListMove(']')<cr>
 "    call Decho("  tree listing#".s:netrw_treelistnum." bufnr=".w:netrw_treebufnr)
    else
 "    let v:errmsg= "" " Decho
@@ -2658,14 +2780,14 @@ fun! s:NetrwGetBuffer(islocal,dirname)
    endif
    let &ei= eikeep
    if line("$") <= 1
-    call s:NetrwListSettings(a:islocal)
+    keepj call s:NetrwListSettings(a:islocal)
 "    call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but its empty, so refresh it")
     return 0
    elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
 "    call Decho("--re-use tree listing--")
 "    call Decho("  clear buffer<".expand("%")."> with :%d")
     sil keepj %d
-    call s:NetrwListSettings(a:islocal)
+    keepj call s:NetrwListSettings(a:islocal)
 "    call Dret("s:NetrwGetBuffer 0 : re-using buffer#".bufnr("%").", but treelist mode always needs a refresh")
     return 0
    else
@@ -2681,9 +2803,9 @@ fun! s:NetrwGetBuffer(islocal,dirname)
   "  fast   2         H      H
 "  call Decho("--do netrw settings: make this buffer#".bufnr("%")." not-a-file, modifiable, not line-numbered, etc--")
   let fname= expand("%")
-  call s:NetrwListSettings(a:islocal)
+  keepj call s:NetrwListSettings(a:islocal)
 "  call Decho("exe sil! keepalt file ".fnameescape(fname))
-  exe "sil! keepalt file ".fnameescape(fname)
+  exe "sil! keepj keepalt file ".fnameescape(fname)
 
   " delete all lines from buffer {{{3
 "  call Decho("--delete all lines from buffer--")
@@ -2777,7 +2899,7 @@ fun! s:NetrwGetWord()
 
    if !exists("b:netrw_cpf")
     let b:netrw_cpf= 0
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
+    exe 'sil keepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
     call histdel("/",-1)
 "   call Decho("computed cpf=".b:netrw_cpf)
    endif
@@ -2874,7 +2996,7 @@ fun! s:NetrwListStyle(islocal)
    let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
 
   else
-   call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46)
+   keepj call netrw#ErrorMsg(s:WARNING,"bad value for g:netrw_liststyle (=".w:netrw_liststyle.")",46)
    let g:netrw_liststyle = s:THINLIST
    let w:netrw_liststyle = g:netrw_liststyle
    let g:netrw_list_cmd  = substitute(g:netrw_list_cmd,' -l','','ge')
@@ -2891,9 +3013,9 @@ fun! s:NetrwListStyle(islocal)
   " refresh the listing
 "  call Decho("refresh the listing")
   let svpos= netrw#NetrwSavePosn()
-  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-  call netrw#NetrwRestorePosn(svpos)
-  call s:NetrwCursorline()
+  keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwCursor()
 
   " keep cursor on the filename
   sil! keepj $
@@ -2941,7 +3063,7 @@ fun! s:NetrwBookmarkMenu()
 "  call Dfunc("NetrwBookmarkMenu()  histcnt=".g:netrw_dirhist_cnt." menucnt=".s:netrw_menucnt)
 
   " the following test assures that gvim is running, has menus available, and has menus enabled.
-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+  if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu
    if exists("g:NetrwTopLvlMenu")
 "    call Decho("removing ".g:NetrwTopLvlMenu."Bookmarks menu item(s)")
     exe 'sil! unmenu '.g:NetrwTopLvlMenu.'Bookmarks'
@@ -2955,7 +3077,7 @@ fun! s:NetrwBookmarkMenu()
    if exists("g:netrw_bookmarklist") && g:netrw_bookmarklist != []
     let cnt= 1
     for bmd in g:netrw_bookmarklist
-"     call Decho('silent! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.'	:e '.bmd)
+"     call Decho('sil! menu '.g:NetrwMenuPriority.".2.".cnt." ".g:NetrwTopLvlMenu.'Bookmark.'.bmd.'	:e '.bmd)
      let bmd= escape(bmd,g:netrw_menu_escape)
 
      " show bookmarks for goto menu
@@ -2969,23 +3091,25 @@ fun! s:NetrwBookmarkMenu()
    endif
 
    " show directory browsing history
-   let cnt     = g:netrw_dirhist_cnt
-   let first   = 1
-   let histcnt = 0
-   while ( first || cnt != g:netrw_dirhist_cnt )
-    let histcnt  = histcnt + 1
-    let priority = g:netrw_dirhist_cnt + histcnt
-    if exists("g:netrw_dirhist_{cnt}")
-     let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
-"     call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir)
-     exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir."\<cr>"
-    endif
-    let first = 0
-    let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
-    if cnt < 0
-     let cnt= cnt + g:netrw_dirhistmax
-    endif
-   endwhile
+   if g:netrw_dirhistmax > 0
+    let cnt     = g:netrw_dirhist_cnt
+    let first   = 1
+    let histcnt = 0
+    while ( first || cnt != g:netrw_dirhist_cnt )
+     let histcnt  = histcnt + 1
+     let priority = g:netrw_dirhist_cnt + histcnt
+     if exists("g:netrw_dirhist_{cnt}")
+      let histdir= escape(g:netrw_dirhist_{cnt},g:netrw_menu_escape)
+"     call Decho('sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir)
+      exe 'sil! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.histdir.'	:e '.histdir."\<cr>"
+     endif
+     let first = 0
+     let cnt   = ( cnt - 1 ) % g:netrw_dirhistmax
+     if cnt < 0
+      let cnt= cnt + g:netrw_dirhistmax
+     endif
+    endwhile
+   endif
 
   endif
 "  call Dret("NetrwBookmarkMenu")
@@ -3009,8 +3133,8 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
    return
   endif
 
-  call s:NetrwOptionSave("s:")
-  call s:NetrwSafeOptions()
+  keepj call s:NetrwOptionSave("s:")
+  keepj call s:NetrwSafeOptions()
   let nbcd_curpos                = netrw#NetrwSavePosn()
   let s:nbcd_curpos_{bufnr('%')} = nbcd_curpos
   if (has("win32") || has("win95") || has("win64") || has("win16"))
@@ -3031,7 +3155,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
 
   if dirname !~ dirpat
    " apparently vim is "recognizing" that it is in a directory and
-   " is removing the trailing "/".  Bad idea, so I put it back.
+   " is removing the trailing "/".  Bad idea, so let's put it back.
    let dirname= dirname.'/'
 "   call Decho("adjusting dirname<".dirname.">")
   endif
@@ -3059,7 +3183,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
    " this lets NetrwBrowseX avoid the edit
    if a:0 < 1
 "    call Decho("set up windows for editing<".fnameescape(dirname).">  didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"))
-    call s:NetrwOptionRestore("s:")
+    keepj call s:NetrwOptionRestore("s:")
     if !exists("s:didsplit")
      if     g:netrw_browse_split == 1
       new
@@ -3107,12 +3231,12 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
 "     call Decho("handle optional Funcrefs")
      if type(g:Netrw_funcref) == 2
 "      call Decho("handling a g:Netrw_funcref")
-      call g:Netrw_funcref()
+      keepj call g:Netrw_funcref()
      elseif type(g:Netrw_funcref) == 3
 "      call Decho("handling a list of g:Netrw_funcrefs")
       for Fncref in g:Netrw_funcref
        if type(FncRef) == 2
-        call FncRef()
+        keepj call FncRef()
        endif
       endfor
      endif
@@ -3125,15 +3249,15 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
    " ---------------------------------
 "   call Decho('case "just go to new directory spec": newdir<'.newdir.'>')
    let dirname= newdir
-   call s:SetRexDir(a:islocal,dirname)
-   call s:NetrwOptionRestore("s:")
+   keepj call s:SetRexDir(a:islocal,dirname)
+   keepj call s:NetrwOptionRestore("s:")
 
   elseif newdir == './'
    " --------------------------
    " refresh the directory list
    " --------------------------
 "   call Decho('case "refresh directory listing": newdir == "./"')
-   call s:SetRexDir(a:islocal,dirname)
+   keepj call s:SetRexDir(a:islocal,dirname)
 
   elseif newdir == '../'
    " -------------------
@@ -3173,7 +3297,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     endif
 "    call Decho("unix: dirname<".dirname."> (go up one dir)")
    endif
-   call s:SetRexDir(a:islocal,dirname)
+   keepj call s:SetRexDir(a:islocal,dirname)
 
   elseif exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
 "   call Decho('case liststyle is TREELIST and w:netrw_treedict exists')
@@ -3231,17 +3355,17 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     let dirname= substitute(treedir,'/*$','/','')
 "    call Decho("go down one dir: treedir<".treedir.">")
    endif
-   call s:SetRexDir(a:islocal,dirname)
+   keepj call s:SetRexDir(a:islocal,dirname)
    let s:treeforceredraw = 1
 
   else
    " go down one directory
    let dirname= s:ComposePath(dirname,newdir)
 "   call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
-   call s:SetRexDir(a:islocal,dirname)
-  endif
-
-  call s:NetrwOptionRestore("s:")
+   keepj call s:SetRexDir(a:islocal,dirname)
+  endif
+
+  keepj call s:NetrwOptionRestore("s:")
   if dolockout
 "   call Decho("filewritable(dirname<".dirname.">)=".filewritable(dirname))
    if filewritable(dirname)
@@ -3380,17 +3504,17 @@ fun! netrw#NetrwBrowseX(fname,remote)
 
   elseif exists("g:netrw_browsex_viewer") && executable(viewer)
 "   call Decho("g:netrw_browsex_viewer<".g:netrw_browsex_viewer.">")
-"   call Decho("exe silent !".viewer." ".viewopt.shellescape(fname,1).redir)
-   exe "silent !".viewer." ".viewopt.shellescape(fname,1).redir
+"   call Decho("exe sil !".viewer." ".viewopt.shellescape(fname,1).redir)
+   exe "sil !".viewer." ".viewopt.shellescape(fname,1).redir
    let ret= v:shell_error
 
   elseif has("win32") || has("win64")
    if executable("start")
-"    call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
-    exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
+"    call Decho('exe sil !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+    exe 'sil !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
    elseif executable("rundll32")
-"    call Decho('exe silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
-    exe 'silent !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
+"    call Decho('exe sil !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+    exe 'sil !rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
    else
     call netrw#ErrorMsg(s:WARNING,"rundll32 not on path",74)
    endif
@@ -3398,17 +3522,17 @@ fun! netrw#NetrwBrowseX(fname,remote)
    let ret= v:shell_error
 
   elseif has("unix") && executable("gnome-open") && !s:haskdeinit
-"   call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir)
+"   call Decho("exe sil !gnome-open ".shellescape(fname,1)." ".redir)
    exe "sil !gnome-open ".shellescape(fname,1).redir
    let ret= v:shell_error
 
   elseif has("unix") && executable("kfmclient") && s:haskdeinit
-"   call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir)
+"   call Decho("exe sil !kfmclient exec ".shellescape(fname,1)." ".redir)
    exe "sil !kfmclient exec ".shellescape(fname,1)." ".redir
    let ret= v:shell_error
 
   elseif has("macunix") && executable("open")
-"   call Decho("exe silent !open ".shellescape(fname,1)." ".redir)
+"   call Decho("exe sil !open ".shellescape(fname,1)." ".redir)
    exe "sil !open ".shellescape(fname,1)." ".redir
    let ret= v:shell_error
 
@@ -3440,7 +3564,7 @@ fun! netrw#NetrwBrowseX(fname,remote)
    if g:netrw_use_noswf
     setlocal noswf
    endif
-   exe "keepj norm! \<c-o>"
+   exe "sil! keepj norm! \<c-o>"
 "   redraw!
   endif
 
@@ -3459,10 +3583,10 @@ fun! s:NetrwChgPerm(islocal,curdir)
 "  call Decho("chgperm<".chgperm.">")
   call system(chgperm)
   if v:shell_error != 0
-   call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75)
+   keepj call netrw#ErrorMsg(1,"changing permission on file<".expand("<cfile>")."> seems to have failed",75)
   endif
   if a:islocal
-   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
   endif
 "  call Dret("s:NetrwChgPerm")
 endfun
@@ -3555,7 +3679,7 @@ fun! netrw#Explore(indx,dosplit,style,..
    elseif a:style == 6  " Texplore
     call s:SaveBufVars()
 "    call Decho("style  = 6: Texplore")
-    tabnew
+    exe "tabnew ".fnameescape(curdir)
     call s:RestoreBufVars()
    endif
    call s:RestoreWinVars()
@@ -3699,7 +3823,7 @@ fun! netrw#Explore(indx,dosplit,style,..
      " Nexplore
 "     call Decho("case Nexplore with starpat=".starpat.": (indx=".indx.")")
      if !exists("w:netrw_explore_list") " sanity check
-      call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
+      keepj call netrw#ErrorMsg(s:WARNING,"using Nexplore or <s-down> improperly; see help for netrw-starstar",40)
       sil! let @* = keepregstar
       sil! let @+ = keepregstar
       sil! let @/ = keepregslash
@@ -3722,7 +3846,7 @@ fun! netrw#Explore(indx,dosplit,style,..
      " Pexplore
 "     call Decho("case Pexplore with starpat=".starpat.": (indx=".indx.")")
      if !exists("w:netrw_explore_list") " sanity check
-      call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
+      keepj call netrw#ErrorMsg(s:WARNING,"using Pexplore or <s-up> improperly; see help for netrw-starstar",41)
       sil! let @* = keepregstar
       sil! let @+ = keepregstar
       sil! let @/ = keepregslash
@@ -3745,7 +3869,7 @@ fun! netrw#Explore(indx,dosplit,style,..
      " Explore -- initialize
      " build list of files to Explore with Nexplore/Pexplore
 "     call Decho("starpat=".starpat.": case Explore: initialize (indx=".indx.")")
-     call s:NetrwClearExplore()
+     keepj call s:NetrwClearExplore()
      let w:netrw_explore_indx= 0
      if !exists("b:netrw_curdir")
       let b:netrw_curdir= getcwd()
@@ -3775,9 +3899,9 @@ fun! netrw#Explore(indx,dosplit,style,..
       catch /^Vim\%((\a\+)\)\=:E480/
        call netrw#ErrorMsg(s:WARNING,'no files matched pattern<'.pattern.'>',45)
        if &hls | let keepregslash= s:ExplorePatHls(pattern) | endif
-       silent! let @* = keepregstar
-       silent! let @+ = keepregstar
-       silent! let @/ = keepregslash
+       sil! let @* = keepregstar
+       sil! let @+ = keepregstar
+       sil! let @/ = keepregslash
 "       call Dret("netrw#Explore : no files matched pattern")
        return
       endtry
@@ -3807,7 +3931,7 @@ fun! netrw#Explore(indx,dosplit,style,..
 "     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] =~ '\*\*\/')
-      call netrw#ErrorMsg(s:WARNING,"no files matched",42)
+      keepj call netrw#ErrorMsg(s:WARNING,"no files matched",42)
       sil! let @* = keepregstar
       sil! let @+ = keepregstar
       sil! let @/ = keepregslash
@@ -3825,7 +3949,7 @@ fun! netrw#Explore(indx,dosplit,style,..
 "     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
-     call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
+     keepj call netrw#ErrorMsg(s:NOTE,"no more files match Explore pattern",43)
     endif
 
     exe "let dirfile= w:netrw_explore_list[".indx."]"
@@ -3846,13 +3970,13 @@ fun! netrw#Explore(indx,dosplit,style,..
     let w:netrw_explore_mtchcnt = indx + 1
     let w:netrw_explore_bufnr   = bufnr("%")
     let w:netrw_explore_line    = line(".")
-    call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
+    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)
 
    else
 "    call Decho("your vim does not have +path_extra")
     if !exists("g:netrw_quiet")
-     call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
+     keepj call netrw#ErrorMsg(s:WARNING,"your vim needs the +path_extra feature for Exploring with **!",44)
     endif
     sil! let @* = keepregstar
     sil! let @+ = keepregstar
@@ -3869,9 +3993,9 @@ fun! netrw#Explore(indx,dosplit,style,..
    endif
    let newdir= dirname
    if !exists("b:netrw_curdir")
-    call netrw#LocalBrowseCheck(getcwd())
+    keepj call netrw#LocalBrowseCheck(getcwd())
    else
-    call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir))
+    keepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir))
    endif
   endif
 
@@ -3944,6 +4068,42 @@ fun! s:NetrwExploreListUniq(explist)
 endfun
 
 " ---------------------------------------------------------------------
+" s:NetrwForceChgDir: (gd support) Force treatment as a directory {{{2
+fun! s:NetrwForceChgDir(islocal,newdir)
+"  call Dfunc("s:NetrwForceChgDir(islocal=".a:islocal." newdir<".a:newdir.">)")
+  if a:newdir !~ '/$'
+   " ok, looks like force is needed to get directory-style treatment
+   if a:newdir =~ '@$'
+    let newdir= substitute(a:newdir,'@$','/','')
+   elseif a:newdir =~ '[*=|\\]$'
+    let newdir= substitute(a:newdir,'.$','/','')
+   else
+    let newdir= a:newdir.'/'
+   endif
+"   call Decho("adjusting newdir<".newdir."> due to gd")
+  else
+   " should already be getting treatment as a directory
+   let newdir= a:newdir
+  endif
+  call s:NetrwBrowseChgDir(a:islocal,newdir)
+  call s:NetrwBrowse(a:islocal,newdir)
+"  call Dret("s:NetrwForceChgDir")
+endfun
+
+" ---------------------------------------------------------------------
+" s:NetrwForceFile: (gf support) Force treatment as a file {{{2
+fun! s:NetrwForceFile(islocal,newfile)
+"  "  call Dfunc("s:NetrwForceFile(islocal=".a:islocal." newdir<".a:newdir.">)")
+  if a:newfile =~ '[/@*=|\\]$'
+   let newfile= substitute(a:newfile,'.$','','')
+  else
+   let newfile= a:newfile
+  endif
+  call s:NetrwBrowseChgDir(a:islocal,newfile)
+"  call Dret("s:NetrwForceFile")
+endfun
+
+" ---------------------------------------------------------------------
 " s:NetrwHide: this function is invoked by the "a" map for browsing {{{2
 "          and switches the hiding mode.  The actual hiding is done by
 "          s:NetrwListHide().
@@ -3977,7 +4137,7 @@ fun! s:NetrwHide(islocal)
 "     call Decho("hide: g:netrw_list_hide<".g:netrw_list_hide.">")
     endif
    endfor
-   call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
+   keepj call s:NetrwUnmarkList(bufnr("%"),b:netrw_curdir)
    let g:netrw_hide= 1
 
   else
@@ -3986,14 +4146,14 @@ fun! s:NetrwHide(islocal)
    let g:netrw_hide=(g:netrw_hide+1)%3
    exe "keepj norm! 0"
    if g:netrw_hide && g:netrw_list_hide == ""
-    call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
+    keepj call netrw#ErrorMsg(s:WARNING,"your hiding list is empty!",49)
 "    call Dret("NetrwHide")
     return
    endif
   endif
 
-  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 "  call Dret("NetrwHide")
 endfun
 
@@ -4014,8 +4174,8 @@ fun! s:NetrwHidden(islocal)
   endif
 
   " refresh screen and return to saved position
-  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 "  call Dret("s:NetrwHidden")
 endfun
 
@@ -4060,8 +4220,11 @@ fun! s:NetrwLeftmouse(islocal)
 "  call Dfunc("s:NetrwLeftmouse(islocal=".a:islocal.")")
 
   " check if the status bar was clicked on instead of a file/directory name
+  while getchar(0) != 0
+   "clear the input stream
+  endwhile
   call feedkeys("\<LeftMouse>")
-  let c= getchar()
+  let c          = getchar()
   let mouse_lnum = v:mouse_lnum
   let wlastline  = line('w$')
   let lastline   = line('$')
@@ -4079,11 +4242,11 @@ fun! s:NetrwLeftmouse(islocal)
 
   if a:islocal
    if exists("b:netrw_curdir")
-    call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
+    keepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
    endif
   else
    if exists("b:netrw_curdir")
-    call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
+    keepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
    endif
   endif
 "  call Dret("s:NetrwLeftmouse")
@@ -4093,7 +4256,7 @@ endfun
 " s:NetrwListHide: uses [range]g~...~d to delete files that match comma {{{2
 " separated patterns given in g:netrw_list_hide
 fun! s:NetrwListHide()
-"  call Dfunc("NetrwListHide() hide=".g:netrw_hide." listhide<".g:netrw_list_hide.">")
+"  call Dfunc("NetrwListHide() g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
 
   " find a character not in the "hide" string to use as a separator for :g and :v commands
   " How-it-works: take the hiding command, convert it into a range.  Duplicate
@@ -4126,6 +4289,10 @@ fun! s:NetrwListHide()
    exe 'sil keepj '.w:netrw_bannercnt.',$s@^\%( /-KEEP-/ \)\+@@e'
   endif
 
+  " remove any blank lines that have somehow remained.
+  " This seems to happen under Windows.
+  exe 'sil! keepj 1,$g@^\s*$@d'
+
 "  call Dret("NetrwListHide")
 endfun
 
@@ -4145,7 +4312,7 @@ fun! s:NetrwHideEdit(islocal)
 "  call Decho("new g:netrw_list_hide<".g:netrw_list_hide.">")
 
   " refresh the listing
-  silent keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
+  sil keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,"./"))
 
   " restore cursor position
   call netrw#NetrwRestorePosn(svpos)
@@ -4165,8 +4332,8 @@ fun! s:NetSortSequence(islocal)
 
   " refresh the listing
   let g:netrw_sort_sequence= newsortseq
-  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 
 "  call Dret("NetSortSequence")
 endfun
@@ -4198,14 +4365,14 @@ fun! s:NetrwMakeDir(usrhost)
 "   call Decho("fullnewdir<".fullnewdir.">")
    if isdirectory(fullnewdir)
     if !exists("g:netrw_quiet")
-     call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24)
+     keepj call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a directory!",24)
     endif
 "    call Dret("NetrwMakeDir : directory<".newdirname."> exists previously")
     return
    endif
    if s:FileReadable(fullnewdir)
     if !exists("g:netrw_quiet")
-     call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25)
+     keepj call netrw#ErrorMsg(s:WARNING,"<".newdirname."> is already a file!",25)
     endif
 "    call Dret("NetrwMakeDir : file<".newdirname."> exists previously")
     return
@@ -4219,7 +4386,7 @@ fun! s:NetrwMakeDir(usrhost)
     let netrw_origdir= s:NetrwGetcwd(1)
     exe 'keepj lcd '.fnameescape(b:netrw_curdir)
 "    call Decho("netrw_origdir<".netrw_origdir.">: lcd b:netrw_curdir<".fnameescape(b:netrw_curdir).">")
-"    call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
+"    call Decho("exe sil! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
     exe "sil! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
     if !g:netrw_keepdir
      exe 'keepj lcd '.fnameescape(netrw_origdir)
@@ -4243,24 +4410,24 @@ fun! s:NetrwMakeDir(usrhost)
 "   call Decho("remote mkdir")
    let mkdircmd  = s:MakeSshCmd(g:netrw_mkdir_cmd)
    let newdirname= substitute(b:netrw_curdir,'^\%(.\{-}/\)\{3}\(.*\)$','\1','').newdirname
-"   call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1))
+"   call Decho("exe sil! !".mkdircmd." ".shellescape(newdirname,1))
    exe "sil! !".mkdircmd." ".shellescape(newdirname,1)
    if v:shell_error == 0
     " refresh listing
     let svpos= netrw#NetrwSavePosn()
-    call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
-    call netrw#NetrwRestorePosn(svpos)
+    keepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
+    keepj call netrw#NetrwRestorePosn(svpos)
    elseif !exists("g:netrw_quiet")
-    call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27)
+    keepj call netrw#ErrorMsg(s:ERROR,"unable to make directory<".newdirname.">",27)
    endif
 "   redraw!
 
   elseif b:netrw_method == 2
    " COMBAK -- future work
-   call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
+   keepj call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
   elseif b:netrw_method == 3
    " COMBAK -- future work
-   call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
+   keepj call netrw#ErrorMsg(s:ERROR,"making directories via ftp not currently supported",68)
   endif
 
 "  call Dret("NetrwMakeDir")
@@ -4283,14 +4450,14 @@ endfun
 "
 "  Creates a buffer version of islocal
 "    b:netrw_islocal
-"
 fun! s:NetrwMarkFile(islocal,fname)
 "  call Dfunc("s:NetrwMarkFile(islocal=".a:islocal." fname<".a:fname.">)")
   let curbufnr= bufnr("%")
   let curdir  = b:netrw_curdir
   let trailer = '[@=|\/\*]\=\>'
+
   if exists("s:netrwmarkfilelist_{curbufnr}")
-   " markfile list exists
+   " markfile list pre-exists
 "   call Decho("starting s:netrwmarkfilelist_{curbufnr}<".string(s:netrwmarkfilelist_{curbufnr}).">")
 "   call Decho("starting s:netrwmarkfilemtch_{curbufnr}<".s:netrwmarkfilemtch_{curbufnr}.">")
    let b:netrw_islocal= a:islocal
@@ -4377,7 +4544,7 @@ fun! s:NetrwMarkFile(islocal,fname)
 "   call Decho("2match none")
    2match none
   endif
-"  call Dret("s:NetrwMarkFile : netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">")
+"  call Dret("s:NetrwMarkFile : s:netrwmarkfilelist_".curbufnr."<".(exists("s:netrwmarkfilelist_{curbufnr}")? string(s:netrwmarkfilelist_{curbufnr}) : " doesn't exist").">")
 endfun
 
 " ---------------------------------------------------------------------
@@ -4413,10 +4580,10 @@ fun! s:NetrwMarkFileCompress(islocal)
        if a:islocal
 	call system(exe." ".fname)
        else
-        call s:RemoteSystem(exe." ".fname)
+        keepj call s:RemoteSystem(exe." ".fname)
        endif
       else
-       call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
+       keepj call netrw#ErrorMsg(s:WARNING,"unable to apply<".exe."> to file<".fname.">",50)
       endif
       break
      endif
@@ -4429,12 +4596,12 @@ fun! s:NetrwMarkFileCompress(islocal)
      call system(netrw#WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
     else
      " fname not a compressed file, so compress it
-     call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".shellescape(fname))
+     keepj call s:RemoteSystem(netrw#WinPath(g:netrw_compress)." ".shellescape(fname))
     endif
    endfor
    call s:NetrwUnmarkList(curbufnr,curdir)
-   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-   call netrw#NetrwRestorePosn(svpos)
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   endif
 "  call Dret("s:NetrwMarkFileCompress")
 endfun
@@ -4451,13 +4618,13 @@ fun! s:NetrwMarkFileCopy(islocal)
 
   " sanity checks
   if !exists("s:netrwmarkfilelist_{bufnr('%')}") || empty(s:netrwmarkfilelist_{bufnr('%')})
-   call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66)
+   keepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66)
 "   call Dret("s:NetrwMarkFileCopy 0")
    return 0
   endif
 "  call Decho("sanity chk passed: s:netrwmarkfilelist_".bufnr('%')."<".string(s:netrwmarkfilelist_{bufnr('%')}))
   if !exists("s:netrwmftgt")
-   call netrw#ErrorMsg(2,"your marked file target is empty! (:help netrw-mt)",67)
+   keepj call netrw#ErrorMsg(2,"your marked file target is empty! (:help netrw-mt)",67)
 "   call Dret("s:NetrwMarkFileCopy 0")
    return 0
   endif
@@ -4475,11 +4642,11 @@ fun! s:NetrwMarkFileCopy(islocal)
   elseif  a:islocal && !s:netrwmftgt_islocal
    " Copy marked files, local directory to remote directory
 "   call Decho("copy from local to remote")
-   call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
+   keepj call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
 
   elseif !a:islocal &&  s:netrwmftgt_islocal
 "   call Decho("copy from remote to local")
-   call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
+   keepj call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt)
 
   elseif !a:islocal && !s:netrwmftgt_islocal
 "   call Decho("copy from remote to remote")
@@ -4495,12 +4662,12 @@ fun! s:NetrwMarkFileCopy(islocal)
    endif
    if isdirectory(tmpdir)
     exe "keepj lcd ".fnameescape(tmpdir)
-    call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
+    keepj call netrw#NetrwObtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir)
     let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")')
-    call s:NetrwUpload(localfiles,s:netrwmftgt)
+    keepj call s:NetrwUpload(localfiles,s:netrwmftgt)
     if getcwd() == tmpdir
      for fname in s:netrwmarkfilelist_{bufnr('%')}
-      call s:NetrwDelete(fname)
+      keepj call s:NetrwDelete(fname)
      endfor
      exe "keepj lcd ".fnameescape(curdir)
      exe "sil !".g:netrw_local_rmdir." ".shellescape(tmpdir,1)
@@ -4523,10 +4690,10 @@ fun! s:NetrwMarkFileCopy(islocal)
    call s:NetrwRefreshDir(s:netrwmftgt_islocal,s:netrwmftgt)
   endif
   if a:islocal
-   call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
+   keepj call s:NetrwRefreshDir(a:islocal,curdir)
   endif
   if g:netrw_fastbrowse <= 1
-   call s:LocalBrowseShellCmdRefresh()
+   keepj call s:LocalBrowseShellCmdRefresh()
   endif
   
 "  call Dret("s:NetrwMarkFileCopy 1")
@@ -4581,8 +4748,8 @@ fun! s:NetrwMarkFileEdit(islocal)
    " unmark markedfile list
 "   call s:NetrwUnmarkList(curbufnr,curdir)
    call s:NetrwUnmarkAll()
-"   call Decho("exe silent args ".flist)
-   exe "silent args ".flist
+"   call Decho("exe sil args ".flist)
+   exe "sil args ".flist
   endif
   
 "  call Dret("s:NetrwMarkFileEdit")
@@ -4627,7 +4794,7 @@ fun! s:NetrwMarkFileExe(islocal)
      let ret= s:RemoteSystem(xcmd)
     endif
     if v:shell_error < 0
-     call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54)
+     keepj call netrw#ErrorMsg(s:ERROR,"command<".xcmd."> failed, aborting",54)
      break
     else
      echo ret
@@ -4638,10 +4805,10 @@ fun! s:NetrwMarkFileExe(islocal)
    call s:NetrwUnmarkList(curbufnr,curdir)
 
    " refresh the listing
-   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-   call netrw#NetrwRestorePosn(svpos)
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   else
-   call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
+   keepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
   endif
   
 "  call Dret("s:NetrwMarkFileExe")
@@ -4695,10 +4862,10 @@ fun! s:NetrwMarkHideSfx(islocal)
     endfor
 
    " refresh the listing
-   call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-   call netrw#NetrwRestorePosn(svpos)
+   keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   else
-   call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
+   keepj call netrw#ErrorMsg(s:ERROR,"no files marked!",59)
   endif
 
 "  call Dret("s:NetrwMarkHideSfx")
@@ -4733,13 +4900,13 @@ fun! s:NetrwMarkFileGrep(islocal)
    try
     exe "keepj noautocmd vimgrep".pat." ".netrwmarkfilelist
     catch /^Vim\%((\a\+)\)\=:E480/
-     call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
+     keepj call netrw#ErrorMsg(s:WARNING,"no match with pattern<".pattern.">",76)
 "     call Dret("s:NetrwMarkFileGrep : unable to find pattern<".pattern.">")
      return
    endtry
 
    2match none
-   call netrw#NetrwRestorePosn(svpos)
+   keepj call netrw#NetrwRestorePosn(svpos)
   endif
 
 "  call Dret("s:NetrwMarkFileGrep")
@@ -4757,13 +4924,13 @@ fun! s:NetrwMarkFileMove(islocal)
 
   " sanity check
   if !exists("s:netrwmarkfilelist_{bufnr('%')}") || empty(s:netrwmarkfilelist_{bufnr('%')})
-   call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66)
+   keepj call netrw#ErrorMsg(2,"there are no marked files in this window (:help netrw-mf)",66)
 "   call Dret("s:NetrwMarkFileMove")
    return
   endif
 "  call Decho("sanity chk passed: s:netrwmarkfilelist_".bufnr('%')."<".string(s:netrwmarkfilelist_{bufnr('%')}))
   if !exists("s:netrwmftgt")
-   call netrw#ErrorMsg(2,"your marked file target is empty! (:help netrw-mt)",67)
+   keepj call netrw#ErrorMsg(2,"your marked file target is empty! (:help netrw-mt)",67)
 "   call Dret("s:NetrwMarkFileCopy 0")
    return 0
   endif
@@ -4783,7 +4950,7 @@ fun! s:NetrwMarkFileMove(islocal)
      endif
     endfor
    else
-    call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localmovecmd."> is not executable!",57)
+    keepj call netrw#ErrorMsg(s:ERROR,"command<".g:netrw_localmovecmd."> is not executable!",57)
    endif
 
   elseif  a:islocal && !s:netrwmftgt_islocal
@@ -4791,7 +4958,7 @@ fun! s:NetrwMarkFileMove(islocal)
 "   call Decho("move from local to remote")
 "   call Decho("copy")
    let mflist= s:netrwmarkfilelist_{bufnr("%")}
-   call s:NetrwMarkFileCopy(a:islocal)
+   keepj call s:NetrwMarkFileCopy(a:islocal)
 "   call Decho("remove")
    for fname in mflist
     let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
@@ -4804,7 +4971,7 @@ fun! s:NetrwMarkFileMove(islocal)
 "   call Decho("move from remote to local")
 "   call Decho("copy")
    let mflist= s:netrwmarkfilelist_{bufnr("%")}
-   call s:NetrwMarkFileCopy(a:islocal)
+   keepj call s:NetrwMarkFileCopy(a:islocal)
 "   call Decho("remove")
    for fname in mflist
     let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
@@ -4817,7 +4984,7 @@ fun! s:NetrwMarkFileMove(islocal)
 "   call Decho("move from remote to remote")
 "   call Decho("copy")
    let mflist= s:netrwmarkfilelist_{bufnr("%")}
-   call s:NetrwMarkFileCopy(a:islocal)
+   keepj call s:NetrwMarkFileCopy(a:islocal)
 "   call Decho("remove")
    for fname in mflist
     let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','')
@@ -4836,13 +5003,16 @@ fun! s:NetrwMarkFileMove(islocal)
 
   " refresh buffers
   if !s:netrwmftgt_islocal
-   call s:NetrwRefreshDir(s:netrwmftgt_islocal,s:netrwmftgt)
+"   call Decho("refresh netrwmftgt<".s:netrwmftgt.">")
+   keepj call s:NetrwRefreshDir(s:netrwmftgt_islocal,s:netrwmftgt)
   endif
   if a:islocal
-   call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
+"   call Decho("refresh b:netrw_curdir<".b:netrw_curdir.">")
+   keepj call s:NetrwRefreshDir(a:islocal,b:netrw_curdir)
   endif
   if g:netrw_fastbrowse <= 1
-   call s:LocalBrowseShellCmdRefresh()
+"   call Decho("since g:netrw_fastbrowse=".g:netrw_fastbrowse.", perform shell cmd refresh")
+   keepj call s:LocalBrowseShellCmdRefresh()
   endif
   
 "  call Dret("s:NetrwMarkFileMove")
@@ -4868,8 +5038,8 @@ fun! s:NetrwMarkFilePrint(islocal)
     endif
     1split
     " the autocmds will handle both local and remote files
-"    call Decho("exe silent e ".escape(fname,' '))
-    exe "silent e ".fnameescape(fname)
+"    call Decho("exe sil e ".escape(fname,' '))
+    exe "sil e ".fnameescape(fname)
 "    call Decho("hardcopy")
     hardcopy
     q
@@ -4902,7 +5072,7 @@ fun! s:NetrwMarkFileRegexp(islocal)
   " mark the list of files
   for fname in filelist
 "   call Decho("fname<".fname.">")
-   call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','',''))
+   keepj call s:NetrwMarkFile(a:islocal,substitute(fname,'^.*/','',''))
   endfor
 
   else
@@ -4915,8 +5085,8 @@ fun! s:NetrwMarkFileRegexp(islocal)
    set ei=all ma
 "   call Decho("set ei=all ma")
    1split
-   call s:NetrwEnew()
-   call s:NetrwSafeOptions()
+   keepj call s:NetrwEnew()
+   keepj call s:NetrwSafeOptions()
    sil keepj norm! "ap
    keepj 2
    let bannercnt= search('^" =====','W')
@@ -4942,7 +5112,7 @@ fun! s:NetrwMarkFileRegexp(islocal)
    let filelist= getline(1,line("$"))
    q!
    for filename in filelist
-    call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','',''))
+    keepj call s:NetrwMarkFile(a:islocal,substitute(filename,'^.*/','',''))
    endfor
    unlet filelist
    let @a  = areg
@@ -5144,7 +5314,7 @@ fun! s:NetrwUnmarkAll()
   if exists("s:netrwmarkfilelist")
    unlet s:netrwmarkfilelist
   endif
-  silent call s:NetrwUnmarkAll2()
+  sil call s:NetrwUnmarkAll2()
   2match none
 "  call Dret("s:NetrwUnmarkAll")
 endfun
@@ -5197,7 +5367,7 @@ fun! s:NetrwMenu(domenu)
    let g:NetrwMenuPriority= 80
   endif
 
-  if has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+  if has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu
 "   call Dfunc("NetrwMenu(domenu=".a:domenu.")")
 
    if !exists("s:netrw_menu_enabled") && a:domenu
@@ -5265,7 +5435,7 @@ fun! s:NetrwMenu(domenu)
     if s:netrwcnt <= 1
 "     call Decho("clear menus")
      exe 'sil! unmenu '.g:NetrwTopLvlMenu
-"     call Decho('exe silent! unmenu '.g:NetrwTopLvlMenu.'*')
+"     call Decho('exe sil! unmenu '.g:NetrwTopLvlMenu.'*')
      sil! unlet s:netrw_menu_enabled
     endif
    endif
@@ -5372,7 +5542,7 @@ fun! netrw#NetrwObtain(islocal,fname,...
    elseif b:netrw_method == 2
     " obtain file using ftp + .netrc
 "     call Decho("obtain via ftp+.netrc (method #2)")
-     call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
+     call s:SaveBufVars()|sil keepjumps new|call s:RestoreBufVars()
      let tmpbufnr= bufnr("%")
      setlocal ff=unix
      if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
@@ -5394,11 +5564,11 @@ fun! netrw#NetrwObtain(islocal,fname,...
 "      call Decho("filter input: ".getline('$'))
      endfor
      if exists("g:netrw_port") && g:netrw_port != ""
-"      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
+"      call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
      else
-"      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+"      call Decho("executing: %!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
      endif
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
@@ -5411,7 +5581,7 @@ fun! netrw#NetrwObtain(islocal,fname,...
    elseif b:netrw_method == 3
     " obtain with ftp + machine, id, passwd, and fname (ie. no .netrc)
 "    call Decho("obtain via ftp+mipf (method #3)")
-    call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
+    call s:SaveBufVars()|sil keepjumps new|call s:RestoreBufVars()
     let tmpbufnr= bufnr("%")
     setlocal ff=unix
 
@@ -5462,13 +5632,13 @@ fun! netrw#NetrwObtain(islocal,fname,...
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
     keepj norm! 1Gdd
-"    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
-    exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+"    call Decho("executing: %!".s:netrw_ftp_cmd." -i -n")
+    exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i -n"
     " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
     if getline(1) !~ "^$"
 "     call Decho("error<".getline(1).">")
      if !exists("g:netrw_quiet")
-      call netrw#ErrorMsg(s:ERROR,getline(1),5)
+      keepj call netrw#ErrorMsg(s:ERROR,getline(1),5)
      endif
     endif
    elseif !exists("b:netrw_method") || b:netrw_method < 0
@@ -5478,7 +5648,7 @@ fun! netrw#NetrwObtain(islocal,fname,...
 
    " restore status line
    if type(a:fname) == 1 && exists("s:netrw_users_stl")
-    call s:SetupNetrwStatusLine(s:netrw_users_stl)
+    keepj call s:SetupNetrwStatusLine(s:netrw_users_stl)
    endif
 
   endif
@@ -5529,10 +5699,10 @@ fun! s:NetrwPrevWinOpen(islocal)
    let didsplit  = 1
 
   else
-   call s:SaveBufVars()
+   keepj call s:SaveBufVars()
 "   call Decho("wincmd p")
    wincmd p
-   call s:RestoreBufVars()
+   keepj call s:RestoreBufVars()
    " if the previous window's buffer has been changed (is modified),
    " and it doesn't appear in any other extant window, then ask the
    " user if s/he wants to abandon modifications therein.
@@ -5554,7 +5724,7 @@ fun! s:NetrwPrevWinOpen(islocal)
      if choice == 1
       " Yes -- write file & then browse
       let v:errmsg= ""
-      silent w
+      sil w
       if v:errmsg != ""
        call netrw#ErrorMsg(s:ERROR,"unable to write <".bufname.">!",30)
        if didsplit
@@ -5569,7 +5739,7 @@ fun! s:NetrwPrevWinOpen(islocal)
      elseif choice == 2
       " No -- don't worry about changed file, just browse anyway
       setlocal nomod
-      call netrw#ErrorMsg(s:WARNING,bufname." changes to ".bufname." abandoned",31)
+      keepj call netrw#ErrorMsg(s:WARNING,bufname." changes to ".bufname." abandoned",31)
       wincmd p
 
      else
@@ -5644,7 +5814,7 @@ fun! s:NetrwUpload(fname,tgt,...)
 "   call Decho("handle uploading a list of files via scp")
    let curdir= getcwd()
    if a:tgt =~ '^scp:'
-    exe "keepjumps silent lcd ".fnameescape(fromdir)
+    exe "keepjumps sil lcd ".fnameescape(fromdir)
     let filelist= deepcopy(s:netrwmarkfilelist_{bufnr('%')})
     let args    = join(map(filelist,"shellescape(v:val, 1)"))
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -5656,7 +5826,7 @@ fun! s:NetrwUpload(fname,tgt,...)
     let tgt     = substitute(a:tgt,'^scp://[^/]\+/\(.*\)$','\1','')
 "    call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".args." ".shellescape(machine.":".tgt,1))
     exe s:netrw_silentxfer."!".g:netrw_scp_cmd.shellescape(useport,1)." ".args." ".shellescape(machine.":".tgt,1)
-    exe "keepjumps silent lcd ".fnameescape(curdir)
+    exe "keepjumps sil lcd ".fnameescape(curdir)
 
    elseif a:tgt =~ '^ftp:'
     call s:NetrwMethod(a:tgt)
@@ -5678,6 +5848,9 @@ fun! s:NetrwUpload(fname,tgt,...)
      keepj call setline(line("$")+1,'lcd "'.fromdir.'"')
 "     call Decho("filter input: ".getline('$'))
 
+     if tgtdir == ""
+      let tgtdir= '/'
+     endif
      keepj call setline(line("$")+1,'cd "'.tgtdir.'"')
 "     call Decho("filter input: ".getline('$'))
 
@@ -5687,12 +5860,12 @@ fun! s:NetrwUpload(fname,tgt,...)
      endfor
 
      if exists("g:netrw_port") && g:netrw_port != ""
-"      call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
+"      call Decho("executing: ".s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
      else
 "      call Decho("filter input window#".winnr())
-"      call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-      exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+"      call Decho("executing: ".s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
+      exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
      endif
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      sil keepj g/Local directory now/d
@@ -5706,7 +5879,7 @@ fun! s:NetrwUpload(fname,tgt,...)
     elseif b:netrw_method == 3
      " upload with ftp + machine, id, passwd, and fname (ie. no .netrc)
      let netrw_fname= b:netrw_fname
-     call s:SaveBufVars()|silent keepjumps new|call s:RestoreBufVars()
+     keepj call s:SaveBufVars()|sil keepj new|keepj call s:RestoreBufVars()
      let tmpbufnr= bufnr("%")
      setlocal ff=unix
 
@@ -5751,8 +5924,8 @@ fun! s:NetrwUpload(fname,tgt,...)
      " -n  unix : DON'T use <.netrc>, even though it exists
      " -n  win32: quit being obnoxious about password
      keepj norm! 1Gdd
-"     call Decho("executing: ".s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n")
-     exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
+"     call Decho("executing: ".s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i -n")
+     exe s:netrw_silentxfer."%!".s:netrw_ftp_cmd." -i -n"
      " If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
      sil keepj g/Local directory now/d
      call histdel("/",-1)
@@ -5781,8 +5954,8 @@ endfun
 " s:NetrwPreview: {{{2
 fun! s:NetrwPreview(path) range
 "  call Dfunc("NetrwPreview(path<".a:path.">)")
-  call s:NetrwOptionSave("s:")
-  call s:NetrwSafeOptions()
+  keepj call s:NetrwOptionSave("s:")
+  keepj call s:NetrwSafeOptions()
   if has("quickfix")
    if !isdirectory(a:path)
     if g:netrw_preview && !g:netrw_alto
@@ -5794,12 +5967,12 @@ fun! s:NetrwPreview(path) range
      let &pvh= pvhkeep
     endif
    elseif !exists("g:netrw_quiet")
-    call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
+    keepj call netrw#ErrorMsg(s:WARNING,"sorry, cannot preview a directory such as <".a:path.">",38)
    endif
   elseif !exists("g:netrw_quiet")
-   call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39)
-  endif
-  call s:NetrwOptionRestore("s:")
+   keepj call netrw#ErrorMsg(s:WARNING,"sorry, to preview your vim needs the quickfix feature compiled in",39)
+  endif
+  keepj call s:NetrwOptionRestore("s:")
 "  call Dret("NetrwPreview")
 endfun
 
@@ -5815,11 +5988,11 @@ fun! s:NetrwRefresh(islocal,dirname)
 "  call Decho("clear buffer<".expand("%")."> with :%d")
   sil! keepj %d
   if a:islocal
-   call netrw#LocalBrowseCheck(a:dirname)
+   keepj call netrw#LocalBrowseCheck(a:dirname)
   else
-   call s:NetrwBrowse(a:islocal,a:dirname)
-  endif
-  call netrw#NetrwRestorePosn()
+   keepj call s:NetrwBrowse(a:islocal,a:dirname)
+  endif
+  keepj call netrw#NetrwRestorePosn()
 
   " restore file marks
   if exists("s:netrwmarkfilemtch_{bufnr('%')}") && s:netrwmarkfilemtch_{bufnr("%")} != ""
@@ -5851,18 +6024,18 @@ fun! s:NetrwRefreshDir(islocal,dirname)
     let curwin= winnr()
 "    call Decho("refresh tgtwin#".tgtwin." (curwin#".curwin.")")
     exe tgtwin."wincmd w"
-    call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 
+    keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./')) 
     exe curwin."wincmd w"
 
    elseif bufnr(a:dirname) > 0
     let bn= bufnr(a:dirname)
 "    call Decho("bd bufnr(".a:dirname.")=".bn)
-    exe "silent bd ".bn
+    exe "sil bd ".bn
    endif
 
   elseif g:netrw_fastbrowse <= 1
 "   call Decho("medium-speed mode: refresh local buffers only")
-   call s:LocalBrowseShellCmdRefresh()
+   keepj call s:LocalBrowseShellCmdRefresh()
   endif
 "  call Dret("s:NetrwRefreshDir")
 endfun
@@ -5918,13 +6091,13 @@ fun! s:NetrwSetSort()
     " sometimes multiple sorting patterns will match the same file or directory.
     " The following substitute is intended to remove the excess matches.
     exe 'sil keepj '.w:netrw_bannercnt.',$g/^\d\{3}'.g:netrw_sepchr.'\d\{3}\//s/^\d\{3}'.g:netrw_sepchr.'\(\d\{3}\/\).\@=/\1/e'
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
    endif
    let priority = priority + 1
   endwhile
   if exists("starpriority")
    exe 'sil keepj '.w:netrw_bannercnt.',$v/^\d\{3}'.g:netrw_sepchr.'/s/^/'.starpriority.'/'
-   call histdel("/",-1)
+   keepj call histdel("/",-1)
   endif
 
   " Following line associated with priority -- items that satisfy a priority
@@ -5934,7 +6107,7 @@ fun! s:NetrwSetSort()
   " priority prefixes need to be removed, but not directories that happen to
   " be just digits themselves.
   exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\d\{3}'.g:netrw_sepchr.'\)\%(\d\{3}'.g:netrw_sepchr.'\)\+\ze./\1/e'
-  call histdel("/",-1)
+  keepj call histdel("/",-1)
 
 "  call Dret("SetSort")
 endfun
@@ -5943,13 +6116,13 @@ endfun
 " s:NetrwSortStyle: change sorting style (name - time - size) and refresh display {{{2
 fun! s:NetrwSortStyle(islocal)
 "  call Dfunc("s:NetrwSortStyle(islocal=".a:islocal.") netrw_sort_by<".g:netrw_sort_by.">")
-  call s:NetrwSaveWordPosn()
+  keepj call s:NetrwSaveWordPosn()
   let svpos= netrw#NetrwSavePosn()
 
   let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'
   keepj norm! 0
-  call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 
 "  call Dret("s:NetrwSortStyle : netrw_sort_by<".g:netrw_sort_by.">")
 endfun
@@ -5972,8 +6145,8 @@ fun! s:NetrwSplit(mode)
 "   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 s:didsplit= 1
-   call s:RestoreWinVars()
-   call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
+   keepj call s:RestoreWinVars()
+   keepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
    unlet s:didsplit
 
   elseif a:mode == 1
@@ -5982,8 +6155,8 @@ fun! s:NetrwSplit(mode)
 "   call Decho("tabnew")
    tabnew
    let s:didsplit= 1
-   call s:RestoreWinVars()
-   call s:NetrwBrowse(0,newdir)
+   keepj call s:RestoreWinVars()
+   keepj call s:NetrwBrowse(0,newdir)
    unlet s:didsplit
 
   elseif a:mode == 2
@@ -5991,8 +6164,8 @@ fun! s:NetrwSplit(mode)
 "   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v")
    exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
    let s:didsplit= 1
-   call s:RestoreWinVars()
-   call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
+   keepj call s:RestoreWinVars()
+   keepj call s:NetrwBrowse(0,s:NetrwBrowseChgDir(0,s:NetrwGetWord()))
    unlet s:didsplit
 
   elseif a:mode == 3
@@ -6000,8 +6173,8 @@ fun! s:NetrwSplit(mode)
 "   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 s:didsplit= 1
-   call s:RestoreWinVars()
-   call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
+   keepj call s:RestoreWinVars()
+   keepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
    unlet s:didsplit
 
   elseif a:mode == 4
@@ -6012,8 +6185,8 @@ fun! s:NetrwSplit(mode)
    tabnew
    let b:netrw_curdir= netrw_curdir
    let s:didsplit= 1
-   call s:RestoreWinVars()
-   call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,cursorword))
+   keepj call s:RestoreWinVars()
+   keepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,cursorword))
    unlet s:didsplit
 
   elseif a:mode == 5
@@ -6021,12 +6194,12 @@ fun! s:NetrwSplit(mode)
 "   call Decho("exe ".(g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v")
    exe (g:netrw_altv? "rightb " : "lefta ").g:netrw_winsize."wincmd v"
    let s:didsplit= 1
-   call s:RestoreWinVars()
-   call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
+   keepj call s:RestoreWinVars()
+   keepj call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,s:NetrwGetWord()))
    unlet s:didsplit
 
   else
-   call netrw#ErrorMsg(s:ERROR,"(NetrwSplit) unsupported mode=".a:mode,45)
+   keepj call netrw#ErrorMsg(s:ERROR,"(NetrwSplit) unsupported mode=".a:mode,45)
   endif
 
 "  call Dret("s:NetrwSplit")
@@ -6167,10 +6340,10 @@ fun! s:NetrwTreeDisplay(dir,depth)
 "   call Decho("dir<".dir."> entry<".entry."> direntry<".direntry.">")
    if entry =~ '/$' && has_key(w:netrw_treedict,direntry)
 "    call Decho("<".direntry."> is a key in treedict - display subtree for it")
-    call s:NetrwTreeDisplay(direntry,depth)
+    keepj call s:NetrwTreeDisplay(direntry,depth)
    elseif entry =~ '/$' && has_key(w:netrw_treedict,direntry.'/')
 "    call Decho("<".direntry."/> is a key in treedict - display subtree for it")
-    call s:NetrwTreeDisplay(direntry.'/',depth)
+    keepj call s:NetrwTreeDisplay(direntry.'/',depth)
    else
 "    call Decho("<".entry."> is not a key in treedict (no subtree)")
     sil! keepj call setline(line("$")+1,depth.entry)
@@ -6219,7 +6392,7 @@ fun! s:NetrwTreeListing(dirname)
 "   call Decho("fname<".fname.">")
 
    " display from treetop on down
-   call s:NetrwTreeDisplay(w:netrw_treetop,"")
+   keepj call s:NetrwTreeDisplay(w:netrw_treetop,"")
 
 "   call Dret("NetrwTreeListing : bufname<".expand("%").">")
   endif
@@ -6240,7 +6413,7 @@ fun! s:NetrwWideListing()
    let b:netrw_cpf= 0
    if line("$") >= w:netrw_bannercnt
     exe 'sil keepj '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
    else
 "    call Dret("NetrwWideListing")
     return
@@ -6257,7 +6430,7 @@ fun! s:NetrwWideListing()
 
    " make wide display
    exe 'sil keepj '.w:netrw_bannercnt.',$s/^.*$/\=escape(printf("%-'.b:netrw_cpf.'s",submatch(0)),"\\")/'
-   call histdel("/",-1)
+   keepj call histdel("/",-1)
    let fpc         = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
    let newcolstart = w:netrw_bannercnt + fpc
    let newcolend   = newcolstart + fpc - 1
@@ -6275,9 +6448,9 @@ fun! s:NetrwWideListing()
     exe "sil! keepj ".newcolstart.','.newcolend.'d'
     exe 'sil! keepj '.w:netrw_bannercnt
    endwhile
-   silent! let @*= keepregstar
+   sil! let @*= keepregstar
    exe "sil! keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
-   call histdel("/",-1)
+   keepj call histdel("/",-1)
    setlocal noma nomod ro
 "   call Dret("NetrwWideListing")
   endif
@@ -6289,7 +6462,7 @@ endfun
 fun! s:PerformListing(islocal)
 "  call Dfunc("s:PerformListing(islocal=".a:islocal.") bufnr(%)=".bufnr("%")."<".bufname("%").">")
 
-  call s:NetrwSafeOptions()
+  keepj call s:NetrwSafeOptions()
   setlocal noro ma
 "  call Decho("setlocal noro ma")
 
@@ -6305,17 +6478,16 @@ fun! s:PerformListing(islocal)
   endif
 
   " save current directory on directory history list
-  call s:NetrwBookHistHandler(3,b:netrw_curdir)
+  keepj call s:NetrwBookHistHandler(3,b:netrw_curdir)
 
   " Set up the banner {{{3
   if g:netrw_banner
 "   call Decho("set up banner")
-   keepj put ='\" ============================================================================'
-   keepj put ='\" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')'
-   keepj put ='\"   '.b:netrw_curdir
-   keepj 1d
+   keepj call setline(1,'" ============================================================================')
+   keepj call setline(2,'" Netrw Directory Listing                                        (netrw '.g:loaded_netrw.')')
+   keepj call setline(3,'"   '.b:netrw_curdir)
    let w:netrw_bannercnt= 3
-   exe "sil! keepj ".w:netrw_bannercnt
+   keepj exe "sil! keepj ".w:netrw_bannercnt
   else
    keepj 1
    let w:netrw_bannercnt= 1
@@ -6388,18 +6560,20 @@ fun! s:PerformListing(islocal)
   " set up syntax highlighting {{{3
 "  call Decho("set up syntax highlighting")
   if has("syntax")
-   setf netrw
    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
-   call s:LocalListing()
+   keepj call s:LocalListing()
   else " remote
-   call s:NetrwRemoteListing()
+   keepj call s:NetrwRemoteListing()
   endif
 "  call Decho("g:netrw_banner=".g:netrw_banner." w:netrw_bannercnt=".w:netrw_bannercnt." (banner complete)")
 
@@ -6408,14 +6582,14 @@ fun! s:PerformListing(islocal)
 "   call Decho("manipulate directory listing (hide)")
 "   call Decho("g:netrw_hide=".g:netrw_hide." g:netrw_list_hide<".g:netrw_list_hide.">")
    if g:netrw_hide && g:netrw_list_hide != ""
-    call s:NetrwListHide()
+    keepj call s:NetrwListHide()
    endif
    if !g:netrw_banner || line("$") >= w:netrw_bannercnt
 "    call Decho("manipulate directory listing (sort) : g:netrw_sort_by<".g:netrw_sort_by.">")
 
     if g:netrw_sort_by =~ "^n"
      " sort by name
-     call s:NetrwSetSort()
+     keepj call s:NetrwSetSort()
 
      if !g:netrw_banner || w:netrw_bannercnt < line("$")
 "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction." (bannercnt=".w:netrw_bannercnt.")")
@@ -6430,20 +6604,20 @@ fun! s:PerformListing(islocal)
      " remove priority pattern prefix
 "     call Decho("remove priority pattern prefix")
      exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
 
     elseif a:islocal
      if !g:netrw_banner || w:netrw_bannercnt < line("$")
 "      call Decho("g:netrw_sort_direction=".g:netrw_sort_direction)
       if g:netrw_sort_direction =~ 'n'
-"       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort')
+"       call Decho('exe sil keepjumps '.w:netrw_bannercnt.',$sort')
        exe 'sil! keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
       else
-"       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
+"       call Decho('exe sil keepjumps '.w:netrw_bannercnt.',$sort!')
        exe 'sil! keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
       endif
      exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
      endif
     endif
 
@@ -6458,8 +6632,8 @@ fun! s:PerformListing(islocal)
 
   " convert to wide/tree listing {{{3
 "  call Decho("modify display if wide/tree listing style")
-  call s:NetrwWideListing()
-  call s:NetrwTreeListing(b:netrw_curdir)
+  keepj call s:NetrwWideListing()
+  keepj call s:NetrwTreeListing(b:netrw_curdir)
 
   if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
    " place cursor on the top-left corner of the file listing
@@ -6473,15 +6647,15 @@ fun! s:PerformListing(islocal)
 "  call Decho("record netrw_prvdir<".w:netrw_prvdir.">")
 
   " save certain window-oriented variables into buffer-oriented variables {{{3
-  call s:SetBufWinVars()
-  call s:NetrwOptionRestore("w:")
+  keepj call s:SetBufWinVars()
+  keepj call s:NetrwOptionRestore("w:")
 
   " set display to netrw display settings
 "  call Decho("set display to netrw display settings (noma nomod etc)")
   exe "setl ".g:netrw_bufsettings
   if exists("s:treecurpos")
 
-   call netrw#NetrwRestorePosn(s:treecurpos)
+   keepj call netrw#NetrwRestorePosn(s:treecurpos)
    unlet s:treecurpos
   endif
 
@@ -6557,13 +6731,13 @@ fun! s:NetrwRemoteListing()
   elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
    if !exists("g:netrw_quiet")
     if g:netrw_list_cmd == ""
-     call netrw#ErrorMsg(s:ERROR,g:netrw_ssh_cmd." is not executable on your system",47)
+     keepj call netrw#ErrorMsg(s:ERROR,g:netrw_ssh_cmd." is not executable on your system",47)
     else
-     call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19)
-    endif
-   endif
-
-   call s:NetrwOptionRestore("w:")
+     keepj call netrw#ErrorMsg(s:ERROR,"this system doesn't support remote directory listing via ".g:netrw_list_cmd,19)
+    endif
+   endif
+
+   keepj call s:NetrwOptionRestore("w:")
 "   call Dret("s:NetrwRemoteListing")
    return
   endif  " (remote handling sanity check)
@@ -6574,7 +6748,7 @@ fun! s:NetrwRemoteListing()
   endif
 
   if s:method == "ftp"
-   " use ftp to get remote file listing
+   " use ftp to get remote file listing {{{3
 "   call Decho("use ftp to get remote file listing")
    let s:method  = "ftp"
    let listcmd = g:netrw_ftp_list_cmd
@@ -6595,10 +6769,10 @@ fun! s:NetrwRemoteListing()
     " cleanup
     if g:netrw_ftp_browse_reject != ""
      exe "sil! keepalt keepj g/".g:netrw_ftp_browse_reject."/keepj d"
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
     endif
     sil! keepj %s/\r$//e
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
 
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
@@ -6616,15 +6790,15 @@ fun! s:NetrwRemoteListing()
     if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
 "     call Decho("M$ ftp cleanup")
      exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{2}-\d\{2}-\d\{2}\s\+\d\+:\d\+[AaPp][Mm]\s\+\%(<DIR>\|\d\+\)\s\+//'
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
     else " normal ftp cleanup
 "     call Decho("normal ftp cleanup")
      exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
      exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
      exe "sil! keepj ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
-     call histdel("/",-1)
-     call histdel("/",-1)
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
+     keepj call histdel("/",-1)
+     keepj call histdel("/",-1)
     endif
    endif
 
@@ -6634,25 +6808,25 @@ fun! s:NetrwRemoteListing()
    let listcmd= s:MakeSshCmd(g:netrw_list_cmd)
 "   call Decho("listcmd<".listcmd."> (using g:netrw_list_cmd)")
    if g:netrw_scp_cmd =~ '^pscp'
-"    call Decho("1: exe silent r! ".shellescape(listcmd.s:path, 1))
+"    call Decho("1: exe sil r! ".shellescape(listcmd.s:path, 1))
     exe "sil! keepj r! ".listcmd.shellescape(s:path, 1)
     " remove rubbish and adjust listing format of 'pscp' to 'ssh ls -FLa' like
     sil! keepj g/^Listing directory/keepj d
     sil! keepj g/^d[-rwx][-rwx][-rwx]/keepj s+$+/+e
     sil! keepj g/^l[-rwx][-rwx][-rwx]/keepj s+$+@+e
-    call histdel("/",-1)
-    call histdel("/",-1)
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
+    keepj call histdel("/",-1)
+    keepj call histdel("/",-1)
     if g:netrw_liststyle != s:LONGLIST
      sil! keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
-     call histdel("/",-1)
+     keepj call histdel("/",-1)
     endif
    else
     if s:path == ""
-"     call Decho("2: exe silent r! ".listcmd)
+"     call Decho("2: exe sil r! ".listcmd)
      exe "sil! keepalt r! ".listcmd
     else
-"     call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1))
+"     call Decho("3: exe sil r! ".listcmd.' '.shellescape(s:path,1))
      exe "sil! keepalt r! ".listcmd.' '.shellescape(s:path,1)
 "     call Decho("listcmd<".listcmd."> path<".s:path.">")
     endif
@@ -6660,9 +6834,9 @@ fun! s:NetrwRemoteListing()
 
    " cleanup
    if g:netrw_ftp_browse_reject != ""
-"    call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
+"    call Decho("(cleanup) exe sil! g/".g:netrw_ssh_browse_reject."/keepjumps d")
     exe "sil! g/".g:netrw_ssh_browse_reject."/keepj d"
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
    endif
   endif
 
@@ -6699,9 +6873,9 @@ fun! s:NetrwRemoteListing()
     exe 'sil keepj '.w:netrw_bannercnt.',$s/ -> .*$//e'
     exe 'sil keepj '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
     exe 'sil keepj '.w:netrw_bannercnt
-    call histdel("/",-1)
-    call histdel("/",-1)
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
+    keepj call histdel("/",-1)
+    keepj call histdel("/",-1)
    endif
   endif
 
@@ -6754,8 +6928,8 @@ fun! s:NetrwRemoteRm(usrhost,path) range
 
   " refresh the (remote) directory listing
 "  call Decho("refresh remote directory listing")
-  call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 
 "  call Dret("s:NetrwRemoteRm")
 endfun
@@ -6802,7 +6976,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
      let netrw_rm_cmd= s:MakeSshCmd(g:netrw_rm_cmd)
 "     call Decho("netrw_rm_cmd<".netrw_rm_cmd.">")
      if !exists("b:netrw_curdir")
-      call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53)
+      keepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53)
       let ok="q"
      else
       let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','')
@@ -6817,7 +6991,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
 "      call Decho("call system(".netrw_rm_cmd.")")
       let ret= system(netrw_rm_cmd)
       if ret != 0
-       call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60)
+       keepj call netrw#ErrorMsg(s:WARNING,"cmd<".netrw_rm_cmd."> failed",60)
       endif
 "      call Decho("returned=".ret." errcode=".v:shell_error)
      endif
@@ -6845,7 +7019,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
 
    if all || ok =~ 'y\%[es]' || ok == ""
     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
-     call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile)
+     keepj call s:NetrwRemoteFtpCmd(a:path,"rmdir ".a:rmfile)
     else
      let rmfile          = substitute(a:path.a:rmfile,'/$','','')
      let netrw_rmdir_cmd = s:MakeSshCmd(netrw#WinPath(g:netrw_rmdir_cmd)).' '.shellescape(netrw#WinPath(rmfile))
@@ -6861,7 +7035,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
 "      call Decho("returned=".ret." errcode=".v:shell_error)
 
       if v:shell_error != 0 && !exists("g:netrw_quiet")
-      	call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22)
+      	keepj call netrw#ErrorMsg(s:ERROR,"unable to remove directory<".rmfile."> -- is it empty?",22)
       endif
      endif
     endif
@@ -6891,8 +7065,8 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
 
   " clear off any older non-banner lines
   " note that w:netrw_bannercnt indexes the line after the banner
-"  call Decho('exe silent! keepjumps '.w:netrw_bannercnt.",$d  (clear off old non-banner lines)")
-  exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
+"  call Decho('exe sil! keepjumps '.w:netrw_bannercnt.",$d  (clear off old non-banner lines)")
+  exe "sil! keepjumps ".w:netrw_bannercnt.",$d"
 
   ".........................................
   if w:netrw_method == 2 || w:netrw_method == 5
@@ -6904,14 +7078,14 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
     keepj put =g:netrw_ftpextracmd
 "    call Decho("filter input: ".getline('.'))
    endif
-   call setline(line("$")+1,a:listcmd)
+   keepj call setline(line("$")+1,a: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.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1))
-    exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)." ".shellescape(g:netrw_port,1)
+"    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)
    else
-"    call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1))
-    exe s:netrw_silentxfer." keepjumps ".w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i ".shellescape(g:netrw_machine,1)
+"    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)
    endif
 
    ".........................................
@@ -6945,28 +7119,28 @@ fun! s:NetrwRemoteFtpCmd(path,listcmd)
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
 "    exe w:netrw_bannercnt.',$g/^./call Decho("ftp#".line(".").": ".getline("."))'
-"    call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n")
-    exe s:netrw_silentxfer.w:netrw_bannercnt.",$!".g:netrw_ftp_cmd." -i -n"
+"    call Decho("exe ".s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i -n")
+    exe s:netrw_silentxfer.w:netrw_bannercnt.",$!".s:netrw_ftp_cmd." -i -n"
 
    ".........................................
   else
-   call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23)
+   keepj call netrw#ErrorMsg(s:WARNING,"unable to comply with your request<" . choice . ">",23)
   endif
 
   " cleanup for Windows
   if has("win32") || has("win95") || has("win64") || has("win16")
    sil! keepj %s/\r$//e
-   call histdel("/",-1)
+   keepj call histdel("/",-1)
   endif
   if a:listcmd == "dir"
    " infer directory/link based on the file permission string
    sil! keepj g/d\%([-r][-w][-x]\)\{3}/keepj s@$@/@
    sil! keepj g/l\%([-r][-w][-x]\)\{3}/keepj s/$/@/
-   call histdel("/",-1)
-   call histdel("/",-1)
+   keepj call histdel("/",-1)
+   keepj call histdel("/",-1)
    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
     exe "sil! keepj ".w:netrw_bannercnt.',$s/^\%(\S\+\s\+\)\{8}//e'
-    call histdel("/",-1)
+    keepj call histdel("/",-1)
    endif
   endif
 
@@ -7015,7 +7189,7 @@ fun! s:NetrwRemoteRename(usrhost,path) r
     endif
    
     if exists("w:netrw_method") && (w:netrw_method == 2 || w:netrw_method == 3)
-     call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname)
+     keepj call s:NetrwRemoteFtpCmd(a:path,"rename ".oldname." ".newname)
     else
      let oldname= shellescape(a:path.oldname)
      let newname= shellescape(a:path.newname)
@@ -7053,8 +7227,8 @@ fun! s:NetrwRemoteRename(usrhost,path) r
   endif
 
   " refresh the directory
-  call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(0,s:NetrwBrowseChgDir(0,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 
 "  call Dret("NetrwRemoteRename")
 endfun
@@ -7074,15 +7248,16 @@ fun! netrw#LocalBrowseCheck(dirname)
   " would hit when re-entering netrw windows, creating unexpected
   " refreshes (and would do so in the middle of NetrwSaveOptions(), too)
 "  call Decho("netrw#LocalBrowseCheck: isdir<".a:dirname.">=".isdirectory(a:dirname).((exists("s:treeforceredraw")? " treeforceredraw" : "")))
+"  call Dredir("LocalBrowseCheck","ls!")|redraw!|sleep 3
   if isdirectory(a:dirname)
 "   call Decho(" ft<".&ft."> b:netrw_curdir<".(exists("b:netrw_curdir")? b:netrw_curdir : " doesn't exist")."> dirname<".a:dirname.">"." line($)=".line("$"))
    if &ft != "netrw" || (exists("b:netrw_curdir") && b:netrw_curdir != a:dirname)
-    silent! call s:NetrwBrowse(1,a:dirname)
+    sil! keepj call s:NetrwBrowse(1,a:dirname)
    elseif &ft == "netrw" && line("$") == 1
-    silent! call s:NetrwBrowse(1,a:dirname)
+    sil! keepj call s:NetrwBrowse(1,a:dirname)
    elseif exists("s:treeforceredraw")
     unlet s:treeforceredraw
-    silent! call s:NetrwBrowse(1,a:dirname)
+    sil! keepj call s:NetrwBrowse(1,a:dirname)
    endif
   endif
   " not a directory, ignore it
@@ -7101,7 +7276,7 @@ fun! s:LocalListing()
 "  if exists("g:netrw_sort_by")|call Decho('g:netrw_sort_by<'.g:netrw_sort_by.">")|else|call Decho("g:netrw_sort_by doesn't exist")|endif
 
   " get the list of files contained in the current directory
-  let dirname    = escape(b:netrw_curdir,g:netrw_glob_escape)
+  let dirname    = b:netrw_curdir
   let dirnamelen = s:Strlen(b:netrw_curdir)
   let filelist   = glob(s:ComposePath(dirname,"*"))
 "  call Decho("glob(dirname<".dirname."/*>)=".filelist)
@@ -7309,7 +7484,7 @@ fun! s:LocalBrowseShellCmdRefresh()
     " refresh any netrw buffer
 "    call Decho("refresh buf#".ibuf.'-> win#'.bufwinnr(ibuf))
     exe bufwinnr(ibuf)."wincmd w"
-    call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
+    keepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
    endif
    let ibl= ibl + 1
   endfor
@@ -7373,8 +7548,8 @@ fun! s:NetrwLocalRm(path) range
   " refresh the directory
 "  call Decho("bufname<".bufname("%").">")
   if bufname("%") != "NetrwMessage"
-   call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
-   call netrw#NetrwRestorePosn(svpos)
+   keepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
+   keepj call netrw#NetrwRestorePosn(svpos)
   endif
 
 "  call Dret("s:NetrwLocalRm")
@@ -7530,8 +7705,8 @@ fun! s:NetrwLocalRename(path) range
 
   " refresh the directory
 "  call Decho("refresh the directory listing")
-  call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
-  call netrw#NetrwRestorePosn(svpos)
+  keepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./'))
+  keepj call netrw#NetrwRestorePosn(svpos)
 
 "  call Dret("NetrwLocalRename")
 endfun
@@ -7597,6 +7772,24 @@ fun! s:LocalFastBrowser()
 endfun
 
 " ---------------------------------------------------------------------
+" netrw#FileUrlRead: handles reading file:///* files {{{2
+fun! netrw#FileUrlRead(fname)
+"  call Dfunc("netrw#FileUrlRead()")
+  let fname2396 = netrw#RFC2396(a:fname)
+  let fname2396e= fnameescape(fname2396)
+  let plainfname= substitute(fname2396,'file://\(.*\)','\1',"")
+"  call Decho("fname2396<".fname2396.">")
+"  call Decho("plainfname<".plainfname.">")
+  exe "sil doau BufReadPre ".fname2396e
+  exe 'r '.plainfname
+  exe 'file! '.plainfname
+  1d
+  setlocal nomod
+"  call Dret("netrw#FileUrlRead")
+  exe "sil doau BufReadPost ".fname2396e
+endfun
+
+" ---------------------------------------------------------------------
 " Support Functions: {{{1
 
 " ---------------------------------------------------------------------
@@ -7604,7 +7797,7 @@ endfun
 "   0=note     = s:NOTE
 "   1=warning  = s:WARNING
 "   2=error    = s:ERROR
-"  Dec 03, 2009 : max errnum currently is 76
+"  Dec 03, 2009 : max errnum currently is 77
 fun! netrw#ErrorMsg(level,msg,errnum)
 "  call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
 
@@ -7632,15 +7825,15 @@ fun! netrw#ErrorMsg(level,msg,errnum)
     exe bufwinnr("NetrwMessage")."wincmd w"
 "    call Decho("setlocal ma noro")
     setlocal ma noro
-    call setline(line("$")+1,level.a:msg)
+    keepj call setline(line("$")+1,level.a:msg)
     keepj $
    else
 "    call Decho("create a NetrwMessage buffer window")
     bo 1split
     call s:NetrwEnew()
-    call s:NetrwSafeOptions()
+    keepj call s:NetrwSafeOptions()
     setlocal bt=nofile
-    file NetrwMessage
+    keepj file NetrwMessage
 "    call Decho("setlocal ma noro")
     setlocal ma noro
     call setline(line("$"),level.a:msg)
@@ -7689,7 +7882,7 @@ fun! netrw#NetrwRestorePosn(...)
 
   " restore window
   if exists("w:netrw_winnr")
-"   call Decho("restore window: exe silent! ".w:netrw_winnr."wincmd w")
+"   call Decho("restore window: exe sil! ".w:netrw_winnr."wincmd w")
    exe "sil! ".w:netrw_winnr."wincmd w"
   endif
   if v:shell_error == 0
@@ -7731,7 +7924,7 @@ fun! netrw#NetrwSavePosn()
   " set up string holding position parameters
   let ret          = "let w:netrw_winnr=".w:netrw_winnr."|let w:netrw_line=".w:netrw_line."|let w:netrw_col=".w:netrw_col."|let w:netrw_hline=".w:netrw_hline
 
-  call netrw#NetrwRestorePosn()
+  keepj call netrw#NetrwRestorePosn()
 "  call Dret("netrw#NetrwSavePosn : winnr=".w:netrw_winnr." line=".w:netrw_line." col=".w:netrw_col." hline=".w:netrw_hline)
   return ret
 endfun
@@ -7836,7 +8029,7 @@ fun! s:GetTempfile(fname)
    " sanity check -- does the temporary file's directory exist?
    if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
 "    call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
-    call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2)
+    keepj call netrw#ErrorMsg(s:ERROR,"your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!",2)
 "    call Dret("s:GetTempfile getcwd<".getcwd().">")
     return ""
    endif
@@ -7918,7 +8111,7 @@ fun! s:NetrwBMShow()
    if bmshowfuncs != []
     let bmshowfunc = substitute(bmshowfuncs[0],'^.*:\(call.*BMShow()\).*$','\1','')
     if bmshowfunc =~ '^call.*BMShow()'
-     exe "sil! ".bmshowfunc
+     exe "sil! keepj ".bmshowfunc
     endif
    endif
   endif
@@ -7926,43 +8119,70 @@ fun! s:NetrwBMShow()
 endfun
 
 " ---------------------------------------------------------------------
-" s:NetrwCursorline: {{{2
-fun! s:NetrwCursorline()
+" s:NetrwCursor: responsible for setting cursorline/cursorcolumn based upon g:netrw_cursor {{{2
+fun! s:NetrwCursor()
   if !exists("w:netrw_liststyle")
    let w:netrw_liststyle= g:netrw_liststyle
   endif
-"  call Dfunc("s:NetrwCursorline() liststyle=".w:netrw_liststyle." g:netrw_cursorline=".g:netrw_cursorline." s:netrw_usercuc=".s:netrw_usercuc." s:netrw_usercul=".s:netrw_usercul)
-  "
-  if w:netrw_liststyle != s:WIDELIST
-   " thin-long-tree listings
-   if g:netrw_cursorline == 2
+"  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)
+
+  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.
+   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
+
+  elseif g:netrw_cursor == 3
+   " thin-long-tree: cursorline, user's cursorcolumn
+   " wide          : cursorline, cursorcolumn
+   if w:netrw_liststyle == s:WIDELIST
     setlocal cursorline
-    let &l:cursorcolumn= s:netrw_usercuc
-"    call Decho("setlocal cursorline  (cursorcolumn is ".((s:netrw_usercuc)? "on" : "off").")")
-   elseif g:netrw_cursorline
+    setlocal cursorcolumn
+   else
     setlocal cursorline
-"    call Decho("setlocal 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
+   let &l:cursorcolumn = s:netrw_usercuc
+   setlocal 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
+   else
+    let &l:cursorline   = s:netrw_usercul
    endif
 
   else
-   " wide listings
-   if g:netrw_cursorline == 2
-    setlocal cursorline cursorcolumn
-"    call Decho("setlocal cursorline cursorcolumn")
-   elseif g:netrw_cursorline
-    let &l:cursorline= s:netrw_usercul
-"    call Decho("cursorline is ".((s:netrw_usercul)? "on" : "off").")")
-   endif
-  endif
-"  call Dret("s:NetrwCursorline : l:cursorline=".&l:cursorline." l:cursorcolumn=".&l:cursorcolumn)
+   " all styles: user's cursorline, user's cursorcolumn
+   let &l:cursorline   = s:netrw_usercul
+   let &l:cursorcolumn = s:netrw_usercuc
+  endif
+
+"  call Dret("s:NetrwCursor : l:cursorline=".&l:cursorline." l:cursorcolumn=".&l:cursorcolumn)
 endfun
 
 " ---------------------------------------------------------------------
 " s:RestoreCursorline: restores cursorline/cursorcolumn to original user settings {{{2
 fun! s:RestoreCursorline()
 "  call Dfunc("s:RestoreCursorline() currently, cul=".&l:cursorline." cuc=".&l:cursorcolumn." win#".winnr()." buf#".bufnr("%"))
-  let &l:cursorline   = s:netrw_usercul
-  let &l:cursorcolumn = s:netrw_usercuc
+  if exists("s:netrw_usercul")
+   let &l:cursorline   = s:netrw_usercul
+  endif
+  if exists("s:netrw_usercuc")
+   let &l:cursorcolumn = s:netrw_usercuc
+  endif
 "  call Dret("s:RestoreCursorline : restored cul=".&l:cursorline." cuc=".&l:cursorcolumn)
 endfun
 
@@ -7990,7 +8210,7 @@ fun! s:NetrwDelete(path)
    let result= delete(path)
   endif
   if result < 0
-   call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
+   keepj call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
   endif
 
 "  call Dret("s:NetrwDelete ".result)
@@ -8022,13 +8242,17 @@ fun! s:NetrwEnew(...)
   if exists("b:netrw_option")         |let netrw_option          = b:netrw_option         |endif
   if exists("b:netrw_prvdir")         |let netrw_prvdir          = b:netrw_prvdir         |endif
 
-  call s:NetrwOptionRestore("w:")
+  keepj call s:NetrwOptionRestore("w:")
 "  call Decho("generate a buffer with keepjumps keepalt enew!")
   let netrw_keepdiff= &l:diff
+  " COMBAK: Benzinger: using tree mode, vim -o Foo/ file shows Foo/ Foo/ instead.  Place return here, problem goes away (beeps result, but who knows)
+"  call Dredir("Benzinger 1:","ls!")
   keepj keepalt enew!
+"  call Dredir("Benzinger 2:","ls!")
+  " COMBAK: Benzinger: using tree mode, vim -o Foo/ file shows Foo/ Foo/ instead.  Place return here, problem remains.
   let &l:diff= netrw_keepdiff
 "  call Decho("bufnr($)=".bufnr("$"))
-  call s:NetrwOptionSave("w:")
+  keepj call s:NetrwOptionSave("w:")
 
   " copy function-local-variables to buffer variable equivalents
 "  call Decho("copy function-local variables back to buffer netrw variables")
@@ -8055,8 +8279,8 @@ fun! s:NetrwEnew(...)
     if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST
      file NetrwTreeListing
      set bt=nowrite noswf
-     nno <silent> <buffer> [	:silent call <SID>TreeListMove('[')<cr>
-     nno <silent> <buffer> ]	:silent call <SID>TreeListMove(']')<cr>
+     nno <silent> <buffer> [	:sil call <SID>TreeListMove('[')<cr>
+     nno <silent> <buffer> ]	:sil call <SID>TreeListMove(']')<cr>
     else
      exe "sil! keepalt file ".fnameescape(b:netrw_curdir)
     endif
@@ -8080,7 +8304,7 @@ endfun
 "  changed sorting, etc.  Also see s:NetrwSaveWordPosn().
 fun! s:NetrwRestoreWordPosn()
 "  call Dfunc("NetrwRestoreWordPosn()")
-  silent! call search(s:netrw_saveword,'w')
+  sil! call search(s:netrw_saveword,'w')
 "  call Dret("NetrwRestoreWordPosn")
 endfun
 
@@ -8131,9 +8355,9 @@ endfun
 fun! s:RemoteSystem(cmd)
 "  call Dfunc("s:RemoteSystem(cmd<".a:cmd.">)")
   if !executable(g:netrw_ssh_cmd)
-   call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52)
+   keepj call netrw#ErrorMsg(s:ERROR,"g:netrw_ssh_cmd<".g:netrw_ssh_cmd."> is not executable!",52)
   elseif !exists("b:netrw_curdir")
-   call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53)
+   keepj call netrw#ErrorMsg(s:ERROR,"for some reason b:netrw_curdir doesn't exist!",53)
   else
    let cmd      = s:MakeSshCmd(g:netrw_ssh_cmd." USEPORT HOSTNAME")
    let remotedir= substitute(b:netrw_curdir,'^.*//[^/]\+/\(.*\)$','\1','')
@@ -8183,14 +8407,14 @@ endfun
 "
 "             s:nbcd_curpos_{bufnr('%')} is set up by s:NetrwBrowseChgDir()
 fun! s:NetrwRexplore(islocal,dirname)
-"  call Dfunc("s:NetrwRexplore(islocal=".a:islocal." dirname<".a:dirname.">)")
-  if a:islocal
-   call netrw#LocalBrowseCheck(a:dirname)
+"  call Dfunc("s:NetrwRexplore() w:netrw_rexlocal=".w:netrw_rexlocal." w:netrw_rexdir<".w:netrw_rexdir.">")
+  if w:netrw_rexlocal
+   keepj call netrw#LocalBrowseCheck(w:netrw_rexdir)
   else
-   call s:NetrwBrowse(0,a:dirname)
+   keepj call s:NetrwBrowse(0,w:netrw_rexdir)
   endif
   if exists("s:nbcd_curpos_{bufnr('%')}")
-   call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
+   keepj call netrw#NetrwRestorePosn(s:nbcd_curpos_{bufnr('%')})
    unlet s:nbcd_curpos_{bufnr('%')}
   endif
   if exists("s:explore_match")
@@ -8265,26 +8489,8 @@ endfun
 " s:SetRexDir: set directory for :Rexplore {{{2
 fun! s:SetRexDir(islocal,dirname)
 "  call Dfunc("s:SetRexDir(islocal=".a:islocal." dirname<".a:dirname.">)")
-  " set up Rex and leftmouse-double-click
-  if a:islocal
-   exe 'com! Rexplore call s:NetrwRexplore(1,"'.escape(a:dirname,'"\').'")'
-   if g:netrw_retmap
-    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
-     nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
-    endif
-    let dir = escape(a:dirname, s:netrw_map_escape)
-    exe 'nnoremap <silent> <Plug>NetrwReturn :call <SID>NetrwRexplore(1,"'.dir.'")<cr>'
-   endif
-  else
-   exe 'com! Rexplore call s:NetrwRexplore(0,"'.escape(a:dirname,'"\').'")'
-   if g:netrw_retmap
-    if !hasmapto("<Plug>NetrwReturn") && maparg("<2-leftmouse>","n") == ""
-     nmap <unique> <silent> <2-leftmouse>	<Plug>NetrwReturn
-    endif
-    let dir = escape(a:dirname, s:netrw_map_escape)
-    exe 'nnoremap <silent> <Plug>NetrwReturn :call <SID>NetrwRexplore(0,"'.dir.'")<cr>'
-   endif
-  endif
+  let w:netrw_rexdir   = a:dirname
+  let w:netrw_rexlocal = a:islocal
 "  call Dret("s:SetRexDir")
 endfun
 
@@ -8390,12 +8596,12 @@ endfun
 "                      Buffers.Refresh; hence, s:NetrwBMShow() utilizes a "cheat" to call that function anyway.
 fun! s:UpdateBuffersMenu()
 "  call Dfunc("s:UpdateBuffersMenu()")
-  if has("gui") && has("menu") && has("gui_running") && &go =~ 'm' && g:netrw_menu
+  if has("gui") && has("menu") && has("gui_running") && &go =~# 'm' && g:netrw_menu
    try
-    silent emenu Buffers.Refresh\ menu
+    sil emenu Buffers.Refresh\ menu
    catch /^Vim\%((\a\+)\)\=:E/
     let v:errmsg= ""
-    silent call s:NetrwBMShow()
+    sil keepj call s:NetrwBMShow()
    endtry
   endif
 "  call Dret("s:UpdateBuffersMenu")
@@ -8403,7 +8609,7 @@ endfun
 
 " ---------------------------------------------------------------------
 " s:UseBufWinVars: (used by NetrwBrowse() and LocalBrowseCheck() {{{2
-"              Matching function to BufferWinVars()
+"              Matching function to s:SetBufWinVars()
 fun! s:UseBufWinVars()
 "  call Dfunc("s:UseBufWinVars()")
   if exists("b:netrw_liststyle")       && !exists("w:netrw_liststyle")      |let w:netrw_liststyle       = b:netrw_liststyle      |endif
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/g95.vim
@@ -0,0 +1,23 @@
+" Compiler: G95
+" Maintainer: H Xu <xuhdev@gmail.com>
+" Version: 0.1.3
+" Last Change: 2011 Apr 01
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3492
+"           https://bitbucket.org/xuhdev/compiler-g95.vim
+" License: Same as Vim
+
+if exists('current_compiler')
+    finish
+endif
+let current_compiler = 'g95'
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+CompilerSet errorformat=
+            \%AIn\ file\ %f:%l,
+            \%-C%p1,
+            \%-Z%trror:\ %m,
+            \%-Z%tarning\ (%n):\ %m,
+            \%-C%.%#
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/gfortran.vim
@@ -0,0 +1,22 @@
+" Compiler: GNU Fortran Compiler
+" Maintainer: H Xu <xuhdev@gmail.com>
+" Version: 0.1.3
+" Last Change: 19 March 2011
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3496
+"           https://bitbucket.org/xuhdev/compiler-gfortran.vim
+" License: Same as Vim
+
+if exists('current_compiler')
+    finish
+endif
+let current_compiler = 'gfortran'
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+CompilerSet errorformat=
+            \%A%f:%l.%c:,
+            \%-Z%trror:\ %m,
+            \%-Z%tarning:\ %m,
+            \%-C%.%#
new file mode 100644
--- /dev/null
+++ b/runtime/compiler/ifort.vim
@@ -0,0 +1,22 @@
+" Compiler: Intel Fortran Compiler
+" Maintainer: H Xu <xuhdev@gmail.com>
+" Version: 0.1.1
+" Last Change: 19 March 2011
+" Homepage: http://www.vim.org/scripts/script.php?script_id=3497
+"           https://bitbucket.org/xuhdev/compiler-ifort.vim
+" License: Same as Vim
+
+if exists('current_compiler')
+    finish
+endif
+let current_compiler = 'ifort'
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+CompilerSet errorformat=
+            \%A%f(%l):\ %trror\ \#%n:\ %m,
+            \%A%f(%l):\ %tarning\ \#%n:\ %m,
+            \%-Z%p^,
+            \%-G%.%#
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.3.  Last change: 2011 Feb 10
+*cmdline.txt*   For Vim version 7.3.  Last change: 2011 Mar 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -83,9 +83,9 @@ CTRL-V		Insert next non-digit literally.
 CTRL-Q		Same as CTRL-V.  But with some terminals it is used for
 		control flow, it doesn't work then.
 
-							*c_<Left>*
+							*c_<Left>* *c_Left*
 <Left>		cursor left
-							*c_<Right>*
+							*c_<Right>* *c_Right*
 <Right>		cursor right
 							*c_<S-Left>*
 <S-Left> or <C-Left>					*c_<C-Left>*
@@ -93,18 +93,18 @@ CTRL-Q		Same as CTRL-V.  But with some t
 							*c_<S-Right>*
 <S-Right> or <C-Right>					*c_<C-Right>*
 		cursor one WORD right
-CTRL-B or <Home>					*c_CTRL-B* *c_<Home>*
+CTRL-B or <Home>				*c_CTRL-B* *c_<Home>* *c_Home*
 		cursor to beginning of command-line
-CTRL-E or <End>						*c_CTRL-E* *c_<End>*
+CTRL-E or <End>					*c_CTRL-E* *c_<End>* *c_End*
 		cursor to end of command-line
 
 							*c_<LeftMouse>*
 <LeftMouse>	Move the cursor to the position of the mouse click.
 
-CTRL-H							*c_<BS>* *c_CTRL-H*
+CTRL-H						*c_<BS>* *c_CTRL-H* *c_BS*
 <BS>		Delete the character in front of the cursor (see |:fixdel| if
 		your <BS> key does not do what you want).
-							*c_<Del>*
+							*c_<Del>* *c_Del*
 <Del>		Delete the character under the cursor (at end of line:
 		character before the cursor) (see |:fixdel| if your <Del>
 		key does not do what you want).
@@ -118,7 +118,7 @@ CTRL-U		Remove all characters between th
 		preferred behavior, add the following to your .vimrc: >
 			:cnoremap <C-U> <C-E><C-U>
 <
-							*c_<Insert>*
+						*c_<Insert>* *c_Insert*
 <Insert>	Toggle between insert and overstrike.  {not in Vi}
 
 {char1} <BS> {char2}	or				*c_digraph*
@@ -224,9 +224,9 @@ CTRL-Y		When there is a modeless selecti
 		the clipboard. |modeless-selection|
 		If there is no selection CTRL-Y is inserted as a character.
 
-CTRL-J						*c_CTRL-J* *c_<NL>* *c_<CR>*
+CTRL-J					*c_CTRL-J* *c_<NL>* *c_<CR>* *c_CR*
 <CR> or <NL>	start entered command
-							*c_<Esc>*
+							*c_<Esc>* *c_Esc*
 <Esc>		When typed and 'x' not present in 'cpoptions', quit
 		Command-line mode without executing.  In macros or when 'x'
 		present in 'cpoptions', start entered command.
@@ -235,12 +235,12 @@ CTRL-J						*c_CTRL-J* *c_<NL>* *c_<CR>*
 							*c_CTRL-C*
 CTRL-C		quit command-line without executing
 
-							*c_<Up>*
+							*c_<Up>* *c_Up*
 <Up>		recall older command-line from history, whose beginning
 		matches the current command-line (see below).
 		{not available when compiled without the |+cmdline_hist|
 		feature}
-							*c_<Down>*
+							*c_<Down>* *c_Down*
 <Down>		recall more recent command-line from history, whose beginning
 		matches the current command-line (see below).
 		{not available when compiled without the |+cmdline_hist|
@@ -865,7 +865,7 @@ These modifiers can be given, in this or
 		After this, the previous modifiers can be used again.  For
 		example ":p", to make a full path after the substitution.
 	:gs?pat?sub?
-		Substitute all occurrences of "path" with "sub".  Otherwise
+		Substitute all occurrences of "pat" with "sub".  Otherwise
 		this works like ":s".
 
 Examples, when the file name is "src/version.c", current dir
--- 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: 2010 Jul 28
+*pi_netrw.txt*  For Vim version 7.3.  Last change: 2011 Apr 01
 
 	    -----------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
@@ -6,7 +6,7 @@
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
 	  (remove NOSPAM from Campbell's email first)
 
-Copyright: Copyright (C) 1999-2010 Charles E Campbell, Jr    *netrw-copyright*
+Copyright: Copyright (C) 1999-2011 Charles E Campbell, Jr    *netrw-copyright*
 	   Permission is hereby granted to use and distribute this code, with
 	   or without modifications, provided that this copyright notice is
 	   copied with it. Like anything else that's free, netrw.vim,
@@ -41,7 +41,7 @@ 4.  Network-Oriented File Transfer......
       NETRC..............................................|netrw-netrc|
       PASSWORD...........................................|netrw-passwd|
 5.  Activation...........................................|netrw-activate|
-6.  Transparent File Editing.............................|netrw-transparent|
+6.  Transparent Remote File Editing......................|netrw-transparent|
 7.  Ex Commands..........................................|netrw-ex|
 8.  Variables and Options................................|netrw-var|
 9.  Browsing.............................................|netrw-browse|
@@ -65,6 +65,7 @@ 9.  Browsing............................
       Displaying Information About File..................|netrw-qf|
       Edit File Or Directory Hiding List.................|netrw-ctrl-h|
       Editing The Sorting Sequence.......................|netrw-S|
+      Forcing treatment as a file or directory...........|netrw-gd| |netrw-gf|
       Going Up...........................................|netrw--|
       Hiding Files Or Directories........................|netrw-a|
       Improving Browsing.................................|netrw-ssh-hack|
@@ -180,19 +181,19 @@ EXTERNAL APPLICATIONS AND PROTOCOLS			*n
 
 	Protocol  Variable	    Default Value
 	--------  ----------------  -------------
-	   dav:  *g:netrw_dav_cmd*   = "cadaver"     if cadaver is executable
-	   dav:   g:netrw_dav_cmd    = "curl -o"     elseif curl is available
-	 fetch:  *g:netrw_fetch_cmd* = "fetch -o"    if fetch is available
-	   ftp:  *g:netrw_ftp_cmd*   = "ftp"
-	  http:  *g:netrw_http_cmd*  = "elinks"     if   elinks  is available
+	   dav:   *g:netrw_dav_cmd*    = "cadaver"    if cadaver is executable
+	   dav:   g:netrw_dav_cmd    = "curl -o"    elseif curl is available
+	 fetch:   *g:netrw_fetch_cmd*  = "fetch -o"   if fetch is available
+	   ftp:   *g:netrw_ftp_cmd*    = "ftp"
+	  http:   *g:netrw_http_cmd*   = "elinks"     if   elinks  is available
 	  http:   g:netrw_http_cmd   = "links"      elseif links is available
 	  http:   g:netrw_http_cmd   = "curl"       elseif curl  is available
 	  http:   g:netrw_http_cmd   = "wget"       elseif wget  is available
           http:   g:netrw_http_cmd   = "fetch"      elseif fetch is available
-	   rcp:  *g:netrw_rcp_cmd*   = "rcp"
-	 rsync:  *g:netrw_rsync_cmd* = "rsync -a"
-	   scp:  *g:netrw_scp_cmd*   = "scp -q"
-	  sftp:  *g:netrw_sftp_cmd*  = "sftp"
+	   rcp:   *g:netrw_rcp_cmd*    = "rcp"
+	 rsync:   *g:netrw_rsync_cmd*  = "rsync -a"
+	   scp:   *g:netrw_scp_cmd*    = "scp -q"
+	  sftp:   *g:netrw_sftp_cmd*   = "sftp"
 
 	*g:netrw_http_xcmd* : the option string for http://... protocols are
 	specified via this variable and may be independently overridden.  By
@@ -500,7 +501,23 @@ that file.  Your ftp must be able to use
 >
 	vim ftp://[user@]machine[[:#]portnumber]/path
 <
-However, ftp will often need to query the user for the userid and password.
+Windows provides an ftp (typically c:\Windows\System32\ftp.exe) which uses
+an option, -s:filename (filename can and probably should be a full path)
+which contains ftp commands which will be automatically run whenever ftp
+starts.  You may use this feature to enter a user and password for one site: >
+	userid
+	password
+If |g:netrw_ftp_cmd| contains -s:[path/]MACHINE, then (on Windows machines only)
+netrw will substitute the current machine name requested for ftp connection
+for MACHINE.  Hence one can have multiple machine.ftp files containing login
+and password for ftp.  Example: >
+
+	g:netrw_ftp_cmd= 'c:\Windows\System32\ftp -s:C:\Users\Myself\MACHINE'
+	vim ftp://myhost.somewhere.net/
+will use a file >
+	C:\Users\Myself\myhost.ftp
+<
+Often, ftp will need to query the user for the userid and password.
 The latter will be done "silently"; ie. asterisks will show up instead of
 the actually-typed-in password.  Netrw will retain the userid and password
 for subsequent read/writes from the most recent transfer so subsequent
@@ -624,7 +641,7 @@ your <.vimrc> customization file: >
 <
 
 ==============================================================================
-6. Transparent File Editing			*netrw-transparent* {{{1
+6. Transparent Remote File Editing			*netrw-transparent* {{{1
 
 Transparent file transfers occur whenever a regular file read or write
 (invoked via an |:autocmd| for |BufReadCmd|, |BufWriteCmd|, or |SourceCmd|
@@ -1225,7 +1242,7 @@ CHANGING TO A PREDECESSOR DIRECTORY		*ne
 
 Every time you change to a new directory (new for the current session),
 netrw will save the directory in a recently-visited directory history
-list (unless g:netrw_dirhistmax is zero; by default, it's ten).  With the
+list (unless |g:netrw_dirhistmax| is zero; by default, it's ten).  With the
 "u" map, one can change to an earlier directory (predecessor).  To do
 the opposite, see |netrw-U|.
 
@@ -1527,6 +1544,19 @@ Related topics:               |netrw-s| 
 Associated setting variables: |g:netrw_sort_sequence| |g:netrw_sort_options|
 
 
+FORCING TREATMENT AS A FILE OR DIRECTORY	*netrw-gd* *netrw-gf* {{{2
+
+Remote symbolic links (ie. those listed via ssh or ftp) are problematic
+in that it is difficult to tell whether they link to a file or to a
+directory.
+
+To force treatment as a file: use >
+	gd
+<
+To force treatment as a directory: use >
+	gf
+<
+
 GOING UP							*netrw--* {{{2
 
 To go up a directory, press "-" or press the <cr> when atop the ../ directory
@@ -1740,6 +1770,16 @@ the cursor atop a marked file and press 
 with <s-leftmouse> using gvim.  One may unmark all files by pressing
 "mu" (see |netrw-mu|).
 
+Marked files are highlighted using the "netrwMarkFile" highlighting group,
+which by default is linked to "Identifier" (see Identifier under
+|group-name|).  You may change the highlighting group by putting something
+like >
+
+	highlight clear netrwMarkFile
+	hi link netrwMarkFile ..whatever..
+<
+into $HOME/.vim/after/syntax/netrw.vim .
+
 *markfilelist* *global_markfilelist* *local_markfilelist*
 All marked files are entered onto the global marked file list; there is only
 one such list.  In addition, every netrw buffer also has its own local marked
@@ -1789,7 +1829,8 @@ MARKED FILES: COPYING						*netrw-mc* {{
 		      (Uses the global marked file list)
 
 Select a target directory with mt (|netrw-mt|).  Then change directory,
-select file(s) (see |netrw-mf|), and press "mc".
+select file(s) (see |netrw-mf|), and press "mc".  The copy is done
+from the current window (where one does the mf) to the target.
 
 Associated setting variable: |g:netrw_localcopycmd| |g:netrw_ssh_cmd|
 
@@ -1841,7 +1882,8 @@ MARKED FILES: MOVING						*netrw-mm* {{{
 	Use at your own risk!
 
 Select a target directory with mt (|netrw-mt|).  Then change directory,
-select file(s) (see |netrw-mf|), and press "mm".
+select file(s) (see |netrw-mf|), and press "mm".  The move is done
+from the current window (where one does the mf) to the target.
 
 Associated setting variable: |g:netrw_localmovecmd| |g:netrw_ssh_cmd|
 
@@ -1922,21 +1964,21 @@ your browsing preferences.  (see also: |
    ---				-----------
    Var				Explanation
    ---				-----------
-< *g:netrw_alto*		change from above splitting to below splitting
+< *g:netrw_alto*		  change from above splitting to below splitting
 				by setting this variable (see |netrw-o|)
 				 default: =&sb           (see |'sb'|)
 
-  *g:netrw_altv*		change from left splitting to right splitting
+  *g:netrw_altv*		  change from left splitting to right splitting
 				by setting this variable (see |netrw-v|)
 				 default: =&spr          (see |'spr'|)
 
-  *g:netrw_banner*		enable/suppress the banner
+  *g:netrw_banner*		  enable/suppress the banner
 				=0: suppress the banner
 				=1: banner is enabled (default)
 				NOTE: suppressing the banner is a new feature
 				which may cause problems.
 
-  *g:netrw_browse_split*	when browsing, <cr> will open the file by:
+  *g:netrw_browse_split*	  when browsing, <cr> will open the file by:
 				=0: re-using the same window
 				=1: horizontally splitting the window first
 				=2: vertically   splitting the window first
@@ -1946,7 +1988,7 @@ your browsing preferences.  (see also: |
 				    to get vertical splitting instead of
 				    horizontal splitting.
 
-  *g:netrw_browsex_viewer*	specify user's preference for a viewer: >
+  *g:netrw_browsex_viewer*	  specify user's preference for a viewer: >
 					"kfmclient exec"
 					"gnome-open"
 <				If >
@@ -1955,35 +1997,48 @@ your browsing preferences.  (see also: |
 				a script/function to handle the given
 				extension.  (see |netrw_filehandler|).
 
-  *g:netrw_chgperm*		Unix/Linux: "chmod PERM FILENAME"
+  *g:netrw_chgperm*		  Unix/Linux: "chmod PERM FILENAME"
 				Windows:    "cacls FILENAME /e /p PERM"
 				Used to change access permission for a file.
 
-  *g:netrw_compress*		="gzip"
+  *g:netrw_compress*		  ="gzip"
 				    Will compress marked files with this
 				    command
 
-  *g:netrw_ctags*		="ctags"
+  *g:netrw_ctags*		  ="ctags"
 				The default external program used to create tags
 
-  *g:netrw_cursorline*		= 1 (default)
-				will use the |'cursorline'| local setting when
-				|g:netrw_liststyle| ==0 (thin listing) or
-				|g:netrw_liststyle| ==1 (long listing) or
-				|g:netrw_liststyle| ==3 (tree listing)
-				(ie. doesn't affect the wide listing)
-				=0: off
-				=2: like ==1, but the wide listing gets both
-				cursorline and |'cursorcolumn'|locally set
-
-  *g:netrw_decompress*		= { ".gz" : "gunzip" ,
+  *g:netrw_cursor*		  = 2 (default)
+  				This option controls the use of the
+				|'cursorline'| (cul) and |'cursorcolumn'|
+				(cuc) settings by netrw:
+
+				Value   Thin-Long-Tree      Wide
+				 =0      u-cul u-cuc      u-cul u-cuc
+				 =1      u-cul u-cuc        cul u-cuc
+				 =2        cul u-cuc        cul u-cuc
+				 =3        cul u-cuc        cul   cuc
+				 =4        cul   cuc        cul   cuc
+
+				Where
+				  u-cul : user's |'cursorline'|   setting used
+				  u-cuc : user's |'cursorcolumn'| setting used
+				  cul   : |'cursorline'|  locally set
+				  cuc   : |'cursorcolumn'| locally set
+
+  *g:netrw_decompress*		  = { ".gz" : "gunzip" ,
 				    ".bz2" : "bunzip2" ,
 				    ".zip" : "unzip" ,
 				    ".tar" : "tar -xf"}
 				  A dictionary mapping suffices to
 				  decompression programs.
 
-  *g:netrw_fastbrowse*		=0: slow speed directory browsing;
+  *g:netrw_dirhistmax*            =10: controls maximum quantity of past
+                                     history.  May be zero to supppress
+				     history.
+				     (related: |netrw-qb| |netrw-u| |netrw-U|)
+
+  *g:netrw_fastbrowse*		  =0: slow speed directory browsing;
 				    never re-uses directory listings,
 				    always obtains directory listings.
 				=1: medium speed directory browsing;
@@ -2007,10 +2062,10 @@ your browsing preferences.  (see also: |
 				trading off accuracy (ie. up-to-date listing)
 				versus speed.
 
-  *g:netrw_fname_escape*	=' ?&;%'
+  *g:netrw_fname_escape*	  =' ?&;%'
 				Used on filenames before remote reading/writing
 
-  *g:netrw_ftp_browse_reject*	ftp can produce a number of errors and warnings
+  *g:netrw_ftp_browse_reject*	  ftp can produce a number of errors and warnings
 				that can show up as "directories" and "files"
 				in the listing.  This pattern is used to
 				remove such embedded messages.  By default its
@@ -2023,87 +2078,87 @@ your browsing preferences.  (see also: |
 				 : connect to address [0-9a-fA-F:]*
 				 : No route to host$'
 
-  *g:netrw_ftp_list_cmd*	options for passing along to ftp for directory
+  *g:netrw_ftp_list_cmd*	  options for passing along to ftp for directory
 				listing.  Defaults:
 				 unix or g:netrw_cygwin set: : "ls -lF"
 				 otherwise                     "dir"
 
 
-  *g:netrw_ftp_sizelist_cmd*	options for passing along to ftp for directory
+  *g:netrw_ftp_sizelist_cmd*	  options for passing along to ftp for directory
 				listing, sorted by size of file.
 				Defaults:
 				 unix or g:netrw_cygwin set: : "ls -slF"
 				 otherwise                     "dir"
 
-  *g:netrw_ftp_timelist_cmd*	options for passing along to ftp for directory
+  *g:netrw_ftp_timelist_cmd*	  options for passing along to ftp for directory
 				listing, sorted by time of last modification.
 				Defaults:
 				 unix or g:netrw_cygwin set: : "ls -tlF"
 				 otherwise                     "dir"
 
-  *g:netrw_glob_escape*		='[]*?`{~$'  (unix)
+  *g:netrw_glob_escape*		  ='[]*?`{~$'  (unix)
 				='[]*?`{$'  (windows
 				These characters in directory names are
 				escaped before applying glob()
 
-  *g:netrw_hide*		if true, the hiding list is used
+  *g:netrw_hide*		  if true, the hiding list is used
 				 default: =0
 
-  *g:netrw_home*		The home directory for where bookmarks and
+  *g:netrw_home*		  The home directory for where bookmarks and
 				history are saved (as .netrwbook and
 				.netrwhist).
 				 default: the first directory on the
 				         |'runtimepath'|
 
-  *g:netrw_keepdir*		=1 (default) keep current directory immune from
+  *g:netrw_keepdir*		  =1 (default) keep current directory immune from
 				   the browsing directory.
 				=0 keep the current directory the same as the
 				   browsing directory.
 				The current browsing directory is contained in
 				b:netrw_curdir (also see |netrw-c|)
 
-  *g:netrw_list_cmd*		command for listing remote directories
+  *g:netrw_list_cmd*		  command for listing remote directories
 				 default: (if ssh is executable)
 				          "ssh HOSTNAME ls -FLa"
 
-  *g:netrw_liststyle*		Set the default listing style:
+  *g:netrw_liststyle*		  Set the default listing style:
                                 = 0: thin listing (one file per line)
                                 = 1: long listing (one file per line with time
 				     stamp information and file size)
 				= 2: wide listing (multiple files in columns)
 				= 3: tree style listing
-  *g:netrw_list_hide*		comma separated pattern list for hiding files
+  *g:netrw_list_hide*		  comma separated pattern list for hiding files
 				Patterns are regular expressions (see |regexp|)
 				Example: let g:netrw_list_hide= '.*\.swp$'
 				 default: ""
 
-  *g:netrw_localcopycmd*	="cp" Linux/Unix/MacOS/Cygwin
+  *g:netrw_localcopycmd*	  ="cp" Linux/Unix/MacOS/Cygwin
 				="copy" Windows
 				Copies marked files (|netrw-mf|) to target
 				directory (|netrw-mt|, |netrw-mc|)
 
-  *g:netrw_localmovecmd*	="mv" Linux/Unix/MacOS/Cygwin
+  *g:netrw_localmovecmd*	  ="mv" Linux/Unix/MacOS/Cygwin
 				="move" Windows
 				Moves marked files (|netrw-mf|) to target
 				directory (|netrw-mt|, |netrw-mm|)
 
-  *g:netrw_local_mkdir*		command for making a local directory
+  *g:netrw_local_mkdir*		  command for making a local directory
 				 default: "mkdir"
 
-  *g:netrw_local_rmdir*		remove directory command (rmdir)
+  *g:netrw_local_rmdir*		  remove directory command (rmdir)
 				 default: "rmdir"
 
-  *g:netrw_maxfilenamelen*	=32 by default, selected so as to make long
+  *g:netrw_maxfilenamelen*	  =32 by default, selected so as to make long
 				    listings fit on 80 column displays.
 				If your screen is wider, and you have file
 				or directory names longer than 32 bytes,
 				you may set this option to keep listings
 				columnar.
 
-  *g:netrw_mkdir_cmd*		command for making a remote directory
+  *g:netrw_mkdir_cmd*		  command for making a remote directory
 				 default: "ssh USEPORT HOSTNAME mkdir"
 
-  *g:netrw_mousemaps*		=1 (default) enables the mouse buttons
+  *g:netrw_mousemaps*		  =1 (default) enables the mouse buttons
 				   while browsing:
 				     leftmouse       : open file/directory
 				     shift-leftmouse : mark file
@@ -2111,7 +2166,7 @@ your browsing preferences.  (see also: |
 				     rightmouse      : remove file/directory
 				=0: disables mouse maps
 
-  *g:netrw_retmap*		if it exists and is set to one, then:
+  *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,
 				then the <2-leftmouse> will be mapped for easy
@@ -2130,22 +2185,22 @@ your browsing preferences.  (see also: |
 
 				  default: =0
 
-  *g:netrw_rm_cmd*		command for removing files
+  *g:netrw_rm_cmd*		  command for removing files
 				 default: "ssh USEPORT HOSTNAME rm"
 
-  *g:netrw_rmdir_cmd*		command for removing directories
+  *g:netrw_rmdir_cmd*		  command for removing directories
 				 default: "ssh USEPORT HOSTNAME rmdir"
 
-  *g:netrw_rmf_cmd*		 command for removing softlinks
+  *g:netrw_rmf_cmd*		   command for removing softlinks
 				 default: "ssh USEPORT HOSTNAME rm -f"
 
-  *g:netrw_sort_by*		sort by "name", "time", or "size"
+  *g:netrw_sort_by*		  sort by "name", "time", or "size"
 				 default: "name"
 
-  *g:netrw_sort_direction*	sorting direction: "normal" or "reverse"
+  *g:netrw_sort_direction*	  sorting direction: "normal" or "reverse"
 				 default: "normal"
 
-  *g:netrw_sort_options*	sorting is done using |:sort|; this
+  *g:netrw_sort_options*	  sorting is done using |:sort|; this
 				variable's value is appended to the
 				sort command.  Thus one may ignore case,
 				for example, with the following in your
@@ -2153,14 +2208,14 @@ your browsing preferences.  (see also: |
 					let g:netrw_sort_options="i"
 <				 default: ""
 
-  *g:netrw_sort_sequence*	when sorting by name, first sort by the
+  *g:netrw_sort_sequence*	  when sorting by name, first sort by the
 				comma-separated pattern sequence.  Note that
 				the filigree added to indicate filetypes
 				should be accounted for in your pattern.
 				 default: '[\/]$,*,\.bak$,\.o$,\.h$,
 				           \.info$,\.swp$,\.obj$'
 
-  *g:netrw_special_syntax*	If true, then certain files will be shown
+  *g:netrw_special_syntax*	  If true, then certain files will be shown
 				in special syntax in the browser:
 
 					netrwBak     : *.bak
@@ -2171,7 +2226,7 @@ your browsing preferences.  (see also: |
 					netrwMakefile: [mM]akefile *.mak
 					netrwObj     : *.o *.obj
 					netrwTags    : tags ANmenu ANtags
-					netrwTilde   : *~ 
+					netrwTilde   : *~
 					netrwTmp     : tmp* *tmp
 
 				These syntax highlighting groups are linked
@@ -2182,12 +2237,12 @@ your browsing preferences.  (see also: |
 <				into one's <.vimrc> to use one's own
 				preferences.
 
-  *g:netrw_ssh_cmd*		One may specify an executable command
+  *g:netrw_ssh_cmd*		  One may specify an executable command
 				to use instead of ssh for remote actions
 				such as listing, file removal, etc.
 				 default: ssh
 
-  *g:netrw_ssh_browse_reject*	ssh can sometimes produce unwanted lines,
+  *g:netrw_ssh_browse_reject*	  ssh can sometimes produce unwanted lines,
 				messages, banners, and whatnot that one doesn't
 				want masquerading as "directories" and "files".
 				Use this pattern to remove such embedded
@@ -2195,11 +2250,11 @@ your browsing preferences.  (see also: |
 					 '^total\s\+\d\+$'
 
 
-  *g:netrw_tmpfile_escape*	=' &;'
+  *g:netrw_tmpfile_escape*	  =' &;'
 				escape() is applied to all temporary files
 				to escape these characters.
 
-  *g:netrw_timefmt*		specify format string to vim's strftime().
+  *g:netrw_timefmt*		  specify format string to vim's strftime().
 				The default, "%c", is "the preferred date
 				and time representation for the current
 				locale" according to my manpage entry for
@@ -2209,7 +2264,7 @@ your browsing preferences.  (see also: |
 				 " %a %Y-%m-%d  %I-%M-%S %p"
 				 default: "%c"
 
-  *g:netrw_use_noswf*		netrw normally avoids writing swapfiles
+  *g:netrw_use_noswf*		  netrw normally avoids writing swapfiles
 				for browser buffers.  However, under some
 				systems this apparently is causing nasty
 				ml_get errors to appear; if you're getting
@@ -2217,12 +2272,12 @@ your browsing preferences.  (see also: |
 				  let g:netrw_use_noswf= 0
 				in your .vimrc.
 
-  *g:netrw_winsize*		specify initial size of new windows made with
+  *g:netrw_winsize*		  specify initial size of new windows made with
 				"o" (see |netrw-o|), "v" (see |netrw-v|),
 				|:Hexplore| or |:Vexplore|.
 				 default: ""
 
-  *g:netrw_xstrlen*		Controls how netrw computes string lengths,
+  *g:netrw_xstrlen*		  Controls how netrw computes string lengths,
 				including multi-byte characters' string
 				length. (thanks to N Weibull, T Mechelynck)
 				=0: uses Vim's built-in strlen()
@@ -2238,7 +2293,7 @@ your browsing preferences.  (see also: |
 				    immediately preceded by lam, one
 				    otherwise, etc)
 
-  *g:NetrwTopLvlMenu*		This variable specifies the top level
+  *g:NetrwTopLvlMenu*		  This variable specifies the top level
 				menu name; by default, it's "Netrw.".  If
 				you wish to change this, do so in your
 				.vimrc.
@@ -2254,7 +2309,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 SETTINGS						*netrw-settings* {{{2
+NETRW BROWSER SETTINGS						*netrw-settings* {{{2
 
 With the NetrwSettings.vim plugin, >
 	:NetrwSettings
@@ -2298,6 +2353,7 @@ Related topics:
    directory, see |g:netrw_keepdir|.
 
 
+							*netrw-createfile*
 OPEN A NEW FILE IN NETRW'S CURRENT DIRECTORY		*netrw-%*
 
 To open a file in netrw's current directory, press "%".  This map will
@@ -2655,13 +2711,13 @@ 10. Problems and Fixes					*netrw-proble
 ==============================================================================
 11. Debugging Netrw Itself				*netrw-debug* {{{1
 
-The <netrw.vim> script is typically available as:
+The <netrw.vim> script is typically available as something like:
 >
+	/usr/local/share/vim/vim7x/plugin/netrwPlugin.vim
+	/usr/local/share/vim/vim7x/autoload/netrw.vim
+< -or- >
 	/usr/local/share/vim/vim6x/plugin/netrwPlugin.vim
 	/usr/local/share/vim/vim6x/autoload/netrw.vim
-< -or- >
-	/usr/local/share/vim/vim7x/plugin/netrwPlugin.vim
-	/usr/local/share/vim/vim7x/autoload/netrw.vim
 <
 which is loaded automatically at startup (assuming :set nocp).
 
@@ -2706,6 +2762,16 @@ which is loaded automatically at startup
 ==============================================================================
 12. History						*netrw-history* {{{1
 
+	v141: Aug 28, 2010 * added -s:... support for Windows ftp
+			   * restored 2-leftmouse for :Rex-like return
+			   * added balloon help for banner
+	      Oct 26, 2010 * :Texplore changed to start from netrw's idea
+			     of the current directory, not pwd's
+	      Feb 10, 2011 * netrwPlugin modified to use BufReadCmd
+			     when the "filename" ends with a "/" or a "\"
+			     Avoids "... is a directory" message, works
+			     inside a try-catch-endtry clause.
+	      Feb 22, 2011 * for menus, &go =~# used to insure correct case
 	v140: Jul 27, 2010 * (Lech Lorens) unexpected change of window
 	v139: May 14, 2010 * when viewing remote directory listings and
 			     changing listing style, going to tree listing
@@ -2732,7 +2798,7 @@ 12. History						*netrw-history* {{{1
 	v137: Dec 28, 2009 * modified the preview window handling for
 			     vertically split windows.  The preview
 			     window will take up all but g:netrw_winsize
-			     columns of the original window; those 
+			     columns of the original window; those
 			     g:netrw_winsize columns will be used for
 			     the netrw listing.
 			   * (Simon Dambe) removed "~" from
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.3.  Last change: 2011 Jan 22
+*syntax.txt*	For Vim version 7.3.  Last change: 2011 Apr 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -3223,6 +3223,9 @@ DEFINING REGIONS	*:syn-region* *:syn-sta
    :hi par1 ctermfg=red guifg=red
    :hi par2 ctermfg=blue guifg=blue
    :hi par3 ctermfg=darkgreen guifg=darkgreen
+<
+						*E849*
+The maximum number of syntax groups is 19999.
 
 ==============================================================================
 6. :syntax arguments					*:syn-arguments*
@@ -3761,6 +3764,9 @@ This also has implications for nested cl
    :syntax match Stuff "( aaa bbb )" contains=@BigGroup
    :syntax cluster BigGroup remove=B	" no effect, since B isn't in BigGroup
    :syntax cluster SmallGroup remove=B	" now bbb isn't matched within Stuff
+<
+						*E848*
+The maximum number of clusters is 9767.
 
 ==============================================================================
 9. Including syntax files				*:syn-include* *E397*
@@ -3800,6 +3806,9 @@ two different ways:
 	  with his own version, without replacing the file that does the ":syn
 	  include".
 
+						*E847*
+The maximum number of includes is 999.
+
 ==============================================================================
 10. Synchronizing				*:syn-sync* *E403* *E404*
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4229,6 +4229,10 @@ E842	cmdline.txt	/*E842*
 E843	editing.txt	/*E843*
 E844	syntax.txt	/*E844*
 E845	spell.txt	/*E845*
+E846	options.txt	/*E846*
+E847	syntax.txt	/*E847*
+E848	syntax.txt	/*E848*
+E849	syntax.txt	/*E849*
 E85	options.txt	/*E85*
 E86	windows.txt	/*E86*
 E87	windows.txt	/*E87*
@@ -4861,6 +4865,8 @@ c_<S-Tab>	cmdline.txt	/*c_<S-Tab>*
 c_<S-Up>	cmdline.txt	/*c_<S-Up>*
 c_<Tab>	cmdline.txt	/*c_<Tab>*
 c_<Up>	cmdline.txt	/*c_<Up>*
+c_BS	cmdline.txt	/*c_BS*
+c_CR	cmdline.txt	/*c_CR*
 c_CTRL-A	cmdline.txt	/*c_CTRL-A*
 c_CTRL-B	cmdline.txt	/*c_CTRL-B*
 c_CTRL-C	cmdline.txt	/*c_CTRL-C*
@@ -4893,6 +4899,15 @@ c_CTRL-\_e	cmdline.txt	/*c_CTRL-\\_e*
 c_CTRL-]	cmdline.txt	/*c_CTRL-]*
 c_CTRL-^	cmdline.txt	/*c_CTRL-^*
 c_CTRL-_	cmdline.txt	/*c_CTRL-_*
+c_Del	cmdline.txt	/*c_Del*
+c_Down	cmdline.txt	/*c_Down*
+c_End	cmdline.txt	/*c_End*
+c_Esc	cmdline.txt	/*c_Esc*
+c_Home	cmdline.txt	/*c_Home*
+c_Insert	cmdline.txt	/*c_Insert*
+c_Left	cmdline.txt	/*c_Left*
+c_Right	cmdline.txt	/*c_Right*
+c_Up	cmdline.txt	/*c_Up*
 c_digraph	cmdline.txt	/*c_digraph*
 c_wildchar	cmdline.txt	/*c_wildchar*
 call()	eval.txt	/*call()*
@@ -5750,10 +5765,11 @@ g:netrw_chgperm	pi_netrw.txt	/*g:netrw_c
 g:netrw_chgwin	pi_netrw.txt	/*g:netrw_chgwin*
 g:netrw_compress	pi_netrw.txt	/*g:netrw_compress*
 g:netrw_ctags	pi_netrw.txt	/*g:netrw_ctags*
-g:netrw_cursorline	pi_netrw.txt	/*g:netrw_cursorline*
+g:netrw_cursor	pi_netrw.txt	/*g:netrw_cursor*
 g:netrw_cygwin	pi_netrw.txt	/*g:netrw_cygwin*
 g:netrw_dav_cmd	pi_netrw.txt	/*g:netrw_dav_cmd*
 g:netrw_decompress	pi_netrw.txt	/*g:netrw_decompress*
+g:netrw_dirhistmax	pi_netrw.txt	/*g:netrw_dirhistmax*
 g:netrw_fastbrowse	pi_netrw.txt	/*g:netrw_fastbrowse*
 g:netrw_fetch_cmd	pi_netrw.txt	/*g:netrw_fetch_cmd*
 g:netrw_fname_escape	pi_netrw.txt	/*g:netrw_fname_escape*
@@ -6710,6 +6726,7 @@ netrw-clean	pi_netrw.txt	/*netrw-clean*
 netrw-contents	pi_netrw.txt	/*netrw-contents*
 netrw-copyright	pi_netrw.txt	/*netrw-copyright*
 netrw-cr	pi_netrw.txt	/*netrw-cr*
+netrw-createfile	pi_netrw.txt	/*netrw-createfile*
 netrw-credits	pi_netrw.txt	/*netrw-credits*
 netrw-ctrl-h	pi_netrw.txt	/*netrw-ctrl-h*
 netrw-ctrl-l	pi_netrw.txt	/*netrw-ctrl-l*
@@ -6733,7 +6750,9 @@ netrw-fixup	pi_netrw.txt	/*netrw-fixup*
 netrw-ftp	pi_netrw.txt	/*netrw-ftp*
 netrw-ftype	pi_netrw.txt	/*netrw-ftype*
 netrw-gb	pi_netrw.txt	/*netrw-gb*
+netrw-gd	pi_netrw.txt	/*netrw-gd*
 netrw-getftype	pi_netrw.txt	/*netrw-getftype*
+netrw-gf	pi_netrw.txt	/*netrw-gf*
 netrw-gh	pi_netrw.txt	/*netrw-gh*
 netrw-gp	pi_netrw.txt	/*netrw-gp*
 netrw-gx	pi_netrw.txt	/*netrw-gx*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3.  Last change: 2011 Mar 22
+*todo.txt*      For Vim version 7.3.  Last change: 2011 Apr 01
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,129 +30,21 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-The :z command doesn't work exactly as it should. (ChangZhuo Chen, 2011 Mar 2)
-Compare with how old Vi works and with posix spec.  terminal is 80 x 24,
-'scroll' option set to 11.
-
-Crash with ":python help(dir)". (Kearn Holliday, 2011 Mar 19)
-I can reproduce it.  Don't know why it happens.
-
-'cursorline' is displayed too short when there are concealed characters and
-'list' is set.  (Dennis Preiser)
-Patch 7.3.116 was the wrong solution.
-
-When opening file from windows explorer, characters inside [] cause
-problems, even though double quotes are used. (Manuel Stol, 2011 Mar 9)
-
-Patch for Vim indent file. (Cocular, 2011 Mar)
-
-:help c_Esc should work, but only :help c_<Esc> does.
-
-Patch to change the meaning of \n in substitute(). (motoya kurotsu, 2011 Mar 8)
-
-New version of Pascal indent file. (Neil Carter, 2011 Mar 9)
-
-Help file foldexpr (ZyX)
-
-upstart syntax file (James Hunt, Mar 11 2011)
-
-Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
-only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
-21, Ben Fritz, 2010 Sep 14)
-
-Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
-
-Crash with big .xpm file. (Yukihiro Nakadaira, 2011 Feb 18)
-Patch from Ben Schmidt (2011 Mar 3).  Needs some more work.
-
-Patch for disappearing cursor after netbeans command. (Xavier de Gaye, 2011
-Mar 4)
-
-Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
-
-Compiler scripts for fortran (Hong Xu, 2011 March 19)
-
-This line hangs Vim, because of syntax HL:
-call append(line, "INFO  ....12....18....24....30....36....42....48....54....60....66....72....78%$")
-
-Building the MingW version without clipboard but with multi-byte doesn't
-work. (Bill Lam, 2010 Sep 18)
-
-Patch for handling of NL in substitute() with \= expression. (Motoya Kurotsu,
-2011 Mar 16)
-
-When using a Vim server, a # in the path causes an error message.
-(Jeff Lanzarotta, 2011 Feb 17)
-
-Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
-
-Using ":break" or something else that stops executing commands inside a
-":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
-15)
-
-Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
-
-On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
-64 bits value.  Change all number options to use nropt_T and define it to the
-right type.
-
-Patch to improve mf_hash, dynamic sizing. (Ivan Krasilnikov, 2010 Dec 17)
-Update with tests: 2011 Feb 28.
-
-string() can't parse back "inf" and "nan".  Fix documentation or fix code?
-(ZyX, 2010 Aug 23)
-
-maparg() does not show the <script> flag.  When temporarily changing a
-mapping, how to restore the script ID?
-
-Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
-Update Nov 19.  James Vega: still not right.  Christian: it's difficult.
-
-Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
-Also add named groups: \%{name}(re)  and \%{name}g
-
-Bug in try/catch: return with invalid compare throws error that isn't caught.
-(ZyX, 2011 Jan 26)
-
 Improvement patch for filetype.vim. (Thilo Six, 2011 Mar 19)
 
-Patch for "+ and "* getting same selection when "a" is not in 'guioptions'.
-(James Vega, 2011 Mar 17)
-
-Highlighting stops working after changing it many times.  Script to reproduce
-it: Pablo Contreras, 2010 Oct 12  Windows XP and 7.  Font is never freed?
-
-After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
-Also for another example (ZyX, 2011 Jan 24)
-
-Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
-
-"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
-
-Deleting a linewise selection that includes the last line of the file leaves
-an empty line. (Ben Schmidt, 2011 Mar 17)
-Patch by Christian Brabandt, 2011 Mar 19.
+Patch to recognize more files as log files. (Mathieu Parent, 2011 Jan 14)
 
 Two patches for xxd. (Florian Zumbiehl, 2011 Jan 11)
 Two updates for second one Jan 12.
 
-Problem with "syn sync gouphere". (Gustavo Niemeyer, 2011 Jan 27)
-
-Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
-2010 Dec 18)
+Go through new coverity reports.
 
 When 'colorcolumn' is set locally to a window, ":new" opens a window with the
 same highlighting but 'colorcolumn' is empty. (Tyru, 2010 Nov 15)
 Patch by Christian Brabandt, 2011 Feb 13 (but move further down).
 
-In the sandbox it's not allowed to do many things, but it's possible to change
-or set variables.  Add a way to prevent variables from being changed in the
-sandbox?  E.g.: ":protect g:restore_settings".
-
 Patch for configure related to Ruby on Mac OS X. (Bjorn Winckler, 2011 Jan 14)
 
-Patch to recognize more files as log files. (Mathieu Parent, 2011 Jan 14)
-
 Patch to set v:register on startup. (Ingo Karkat, 2011 Jan 16)
 
 Patch to set v:register default depending on "unnamed" in 'clipboard'. (Ingo
@@ -170,28 +62,9 @@ 3)
 
 Patch for cmdline completion of ":lang".  (Dominique Pelle, 2011 Feb 5)
 
-GTK: drawing a double-width combining character over single-width characters
-doesn't look right. (Dominique Pelle, 2010 Aug 8)
-
-GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
-
-Win32: tear-off menu does not work when menu language is German. (Markus
-Bossler, 2011 Mar 2)  Fixed by 7.3.095?
-
 Patch for adding 's' option to 'cino', C++ namespace indenting. (Konstantin
 Lepa, 2011 Jan 18)
 
-Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
-
-7.3.014 changed how backslash at end of line works, but still get a NUL when
-there is one backslash. (Ray Frush, 2010 Nov 18)  What does the original ex
-do?
-
-":find" completion does not escape space in directory name. (Isz, 2010 Nov 2)
-
-Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
-22)
-
 Patch to support ":!start /b cmd". (Xaizek, 2010 Dec 22)
 
 Patch to build with GTK on Mac. (Ben Schmidt, 2011 Jan 18)
@@ -207,6 +80,135 @@ Patch to improve optwin.vim. (ZyX, 2011 
 
 Patch for Python 3 support. (lilydjwg, 2011 Feb 24)
 
+Building the MingW version without clipboard but with multi-byte doesn't
+work. (Bill Lam, 2010 Sep 18)
+
+Patch for handling of NL in substitute() with \= expression. (Motoya Kurotsu,
+2011 Mar 16)  Update Mar 24.
+
+Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
+Nov 25)
+
+GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
+Update 2011 Feb 3.
+
+Patch to use pipes on Win32.  (Vincent Berthoux, 2011 Feb 28)
+Update Mar 1 using 'shelltemp'.
+
+"gh<Del>" deletes the current line, except when it's the last line.
+Hint by Christian Brabandt, 2011 Mar 22
+
+The :z command doesn't work exactly as it should. (ChangZhuo Chen, 2011 Mar 2)
+Compare with how old Vi works and with posix spec.  terminal is 80 x 24,
+'scroll' option set to 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.
+
+When opening file from windows explorer, characters inside [] cause
+problems, even though double quotes are used. (Manuel Stol, 2011 Mar 9)
+
+Patch to change the meaning of \n in substitute(). (motoya kurotsu, 2011 Mar 8)
+
+Help file foldexpr (ZyX)
+
+Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set to 2,
+only one of the two ends gets the cchar displayed. (Brett Stahlman, 2010 Aug
+21, Ben Fritz, 2010 Sep 14)
+
+Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20)
+
+CursorHold repeats typed key when it's the start of a mapping.
+(Will Gray, 2011 Mar 23)
+
+Windows keys not set properly on Windows 7?  (cncyber, 2010 Aug 26)
+
+This line hangs Vim, because of syntax HL:
+call append(line, "INFO  ....12....18....24....30....36....42....48....54....60....66....72....78%$")
+
+When using a Vim server, a # in the path causes an error message.
+(Jeff Lanzarotta, 2011 Feb 17)
+
+Bug: E685 error for func_unref(). (ZyX, 2010 Aug 5)
+
+Using ":break" or something else that stops executing commands inside a
+":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct
+15)
+
+Vim using lots of memory when joining lines. (John Little, 2010 Dec 3)
+
+On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a
+64 bits value.  Change all number options to use nropt_T and define it to the
+right type.
+
+string() can't parse back "inf" and "nan".  Fix documentation or fix code?
+(ZyX, 2010 Aug 23)
+
+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.
+
+maparg() does not show the <script> flag.  When temporarily changing a
+mapping, how to restore the script ID?
+
+Patch to fix \%V item in regexp. (Christian Brabandt, 2010 Nov 8)
+Update Nov 19.  James Vega: still not right.  Christian: it's difficult.
+
+Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22)
+Also add named groups: \%{name}(re)  and \%{name}g
+
+Bug in try/catch: return with invalid compare throws error that isn't caught.
+(ZyX, 2011 Jan 26)
+
+Highlighting stops working after changing it many times.  Script to reproduce
+it: Pablo Contreras, 2010 Oct 12  Windows XP and 7.  Font is never freed?
+
+After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18)
+Also for another example (ZyX, 2011 Jan 24)
+
+Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24)
+
+"0g@$" puts '] on last byte of multi-byte. (ZyX, 2011 Jan 22)
+
+Deleting a linewise selection that includes the last line of the file leaves
+an empty line. (Ben Schmidt, 2011 Mar 17)
+Patch by Christian Brabandt, 2011 Mar 19.
+
+Patch to support sorting on floating point number.  (Alex Jakushev, 2010 Oct
+30)
+
+When a script contains "redir => s:foo" but doesn't end redirection, a
+following "redir" command gives an error for not being able to access s:foo.
+(ZyX, 2011 Mar 27)
+
+Problem with "syn sync gouphere". (Gustavo Niemeyer, 2011 Jan 27)
+
+Loading autoload script even when usage is inside "if 0". (Christian Brabandt,
+2010 Dec 18)
+
+In the sandbox it's not allowed to do many things, but it's possible to change
+or set variables.  Add a way to prevent variables from being changed in the
+sandbox?  E.g.: ":protect g:restore_settings".
+
+GTK: drawing a double-width combining character over single-width characters
+doesn't look right. (Dominique Pelle, 2010 Aug 8)
+
+GTK: tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25)
+
+Win32: tear-off menu does not work when menu language is German. (Markus
+Bossler, 2011 Mar 2)  Fixed by 7.3.095?
+
+Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18)
+
+7.3.014 changed how backslash at end of line works, but still get a NUL when
+there is one backslash. (Ray Frush, 2010 Nov 18)  What does the original ex
+do?
+
+":find" completion does not escape space in directory name. (Isz, 2010 Nov 2)
+
+Searching mixed with Visual mode doesn't redraw properly. (James Vega, 2010 Nov
+22)
+
 New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30)
 - move compflags to separate growarray?
 - instead of a regexp use a hashtable.  Expand '?', '*", '+'.  What would be
@@ -235,15 +237,6 @@ the command line. (Ingo Karkat, 2011 Jan
 Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim
 crash? (Raiwil, 2010 Nov 17)
 
-Patch to disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka, 2010
-Nov 25)
-
-GTK: Patch to fix menu popping down. (Hong Xu, 2010 Dec 4, Dec 5)
-Update 2011 Feb 3.
-
-Patch to use pipes on Win32.  (Vincent Berthoux, 2011 Feb 28)
-Update Mar 1 using 'shelltemp'.
-
 Python: Adding line to buffer other than the current one doesn't work
 correctly. (Rozbujnik, 2010 Dec 19)
 
@@ -255,9 +248,6 @@ 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)
 
-Patch to support sorting on floating point number.  (Alex Jakushev, 2010 Oct
-30)
-
 Ruby: ":ruby print $buffer.number" returns zero.
 
 setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11)
@@ -896,6 +886,9 @@ Can't easily close the help window, like
 ":ccl" closes the quickfix window.  Add ":hclose". (Chris Gaal)
 Patch for :helpclose, Christian Brabandt, 2010 Sep 6.
 
+Patch for :lmake not updating the quickfix window title. (Lech Lorens, 2011
+Mar 26)
+
 When 'diffopt' has "context:0" a single deleted line causes two folds to merge
 and mess up syncing. (Austin Jennings, 2008 Jan 31)
 
--- 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 Mar 22
+" Last Change:	2011 Apr 01
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -75,7 +75,7 @@ endfunc
 au BufNewFile,BufRead *.aap			setf aap
 
 " A2ps printing utility
-au BufNewFile,BufRead etc/a2ps.cfg,etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
+au BufNewFile,BufRead */etc/a2ps.cfg,*/etc/a2ps/*.cfg,a2psrc,.a2psrc setf a2ps
 
 " ABAB/4
 au BufNewFile,BufRead *.abap			setf abap
@@ -110,8 +110,7 @@ au BufNewFile,BufRead build.xml			setf a
 au BufNewFile,BufRead proftpd.conf*		call s:StarSetf('apachestyle')
 
 " Apache config file
-au BufNewFile,BufRead .htaccess,/etc/httpd/*.conf		 setf apache
-au BufNewFile,BufRead httpd.conf*,srm.conf*,access.conf*,apache.conf*,apache2.conf*,/etc/apache2/*.conf*,/etc/httpd/conf.d/*.conf* call s:StarSetf('apache')
+au BufNewFile,BufRead .htaccess,*/etc/httpd/*.conf		setf apache
 
 " XA65 MOS6510 cross assembler
 au BufNewFile,BufRead *.a65			setf a65
@@ -124,7 +123,7 @@ au BufNewFile,BufRead *.am
 	\ if expand("<afile>") !~? 'Makefile.am\>' | setf elf | endif
 
 " ALSA configuration
-au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,/etc/asound.conf	setf alsaconf
+au BufNewFile,BufRead ~/.asoundrc,/usr/share/alsa/alsa.conf,*/etc/asound.conf	setf alsaconf
 
 " Arc Macro Language
 au BufNewFile,BufRead *.aml			setf aml
@@ -157,7 +156,7 @@ au BufNewFile,BufRead *.asp
 	\ endif
 
 " Grub (must be before catch *.lst)
-au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub
+au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,*/etc/grub.conf	setf grub
 
 " Assembly (all kinds)
 " *.lst is not pure assembly, it has two extra columns (address, byte codes)
@@ -296,7 +295,7 @@ endfunc
 au BufNewFile,BufRead *.bl			setf blank
 
 " Blkid cache file
-au BufNewFile,BufRead /etc/blkid.tab,/etc/blkid.tab.old   setf xml
+au BufNewFile,BufRead */etc/blkid.tab,*/etc/blkid.tab.old   setf xml
 
 " C or lpc
 au BufNewFile,BufRead *.c			call s:FTlpc()
@@ -331,7 +330,7 @@ au BufNewFile,BufRead *.cabal			setf cab
 au BufNewFile,BufRead *.toc			setf cdrtoc
 
 " Cdrdao config
-au BufNewFile,BufRead etc/cdrdao.conf,etc/defaults/cdrdao,etc/default/cdrdao,~/.cdrdao						setf cdrdaoconf
+au BufNewFile,BufRead */etc/cdrdao.conf,*/etc/defaults/cdrdao,*/etc/default/cdrdao,~/.cdrdao	setf cdrdaoconf
 
 " Cfengine
 au BufNewFile,BufRead cfengine.conf		setf cfengine
@@ -553,7 +552,8 @@ au BufNewFile,BufRead control
 	\| endif
 
 " Debian Sources.list
-au BufNewFile,BufRead /etc/apt/sources.list	setf debsources
+au BufNewFile,BufRead */etc/apt/sources.list		setf debsources
+au BufNewFile,BufRead */etc/apt/sources.list.d/*.list	setf debsources
 
 " Deny hosts
 au BufNewFile,BufRead denyhosts.conf		setf denyhosts
@@ -586,7 +586,7 @@ au BufNewFile,BufRead dictd.conf		setf d
 au BufNewFile,BufRead *.diff,*.rej,*.patch	setf diff
 
 " Dircolors
-au BufNewFile,BufRead .dir_colors,/etc/DIR_COLORS	setf dircolors
+au BufNewFile,BufRead .dir_colors,.dircolors,*/etc/DIR_COLORS	setf dircolors
 
 " Diva (with Skill) or InstallShield
 au BufNewFile,BufRead *.rul
@@ -767,7 +767,7 @@ au BufNewFile,BufRead *.groovy			setf gr
 au BufNewFile,BufRead *.gsp			setf gsp
 
 " Group file
-au BufNewFile,BufRead /etc/group,/etc/group-,/etc/group.edit,/etc/gshadow,/etc/gshadow-,/etc/gshadow.edit,/var/backups/group.bak,/var/backups/gshadow.bak  setf group
+au BufNewFile,BufRead */etc/group,*/etc/group-,*/etc/group.edit,*/etc/gshadow,*/etc/gshadow-,*/etc/gshadow.edit,*/var/backups/group.bak,*/var/backups/gshadow.bak  setf group
 
 " GTK RC
 au BufNewFile,BufRead .gtkrc,gtkrc		setf gtkrc
@@ -826,10 +826,10 @@ au BufNewFile,BufRead *.html.m4			setf h
 au BufNewFile,BufRead *.tmpl			setf htmlcheetah
 
 " Host config
-au BufNewFile,BufRead /etc/host.conf		setf hostconf
+au BufNewFile,BufRead */etc/host.conf		setf hostconf
 
 " Hosts access
-au BufNewFile,BufRead /etc/hosts.allow,/etc/hosts.deny  setf hostsaccess
+au BufNewFile,BufRead */etc/hosts.allow,*/etc/hosts.deny  setf hostsaccess
 
 " Hyper Builder
 au BufNewFile,BufRead *.hb			setf hb
@@ -889,7 +889,7 @@ au BufNewFile,BufRead indentrc			setf in
 au BufNewFile,BufRead *.inf,*.INF		setf inform
 
 " Initng
-au BufNewFile,BufRead /etc/initng/**/*.i,*.ii	setf initng
+au BufNewFile,BufRead */etc/initng/**/*.i,*.ii	setf initng
 
 " Ipfilter
 au BufNewFile,BufRead ipf.conf,ipf6.conf,ipf.rules	setf ipfilter
@@ -953,7 +953,7 @@ au BufNewFile,BufRead *.ace,*.ACE		setf 
 au BufNewFile,BufRead *.latte,*.lte		setf latte
 
 " Limits
-au BufNewFile,BufRead /etc/limits		setf limits
+au BufNewFile,BufRead */etc/limits,*/etc/*limits.conf,*/etc/*limits.d/*.conf	setf limits
 
 " LambdaProlog (*.mod too, see Modsim)
 au BufNewFile,BufRead *.sig			setf lprolog
@@ -968,10 +968,10 @@ au BufNewFile,BufRead *.ld			setf ld
 au BufNewFile,BufRead *.lex,*.l			setf lex
 
 " Libao
-au BufNewFile,BufRead /etc/libao.conf,*/.libao	setf libao
+au BufNewFile,BufRead */etc/libao.conf,*/.libao	setf libao
 
 " Libsensors
-au BufNewFile,BufRead /etc/sensors.conf		setf sensors
+au BufNewFile,BufRead */etc/sensors.conf,*/etc/sensors3.conf	setf sensors
 
 " LFTP
 au BufNewFile,BufRead lftp.conf,.lftprc,*lftp/rc	setf lftp
@@ -1002,10 +1002,10 @@ au BufNewFile,BufRead *.lite,*.lt		setf 
 au BufNewFile,BufRead */LiteStep/*/*.rc		setf litestep
 
 " Login access
-au BufNewFile,BufRead /etc/login.access		setf loginaccess
+au BufNewFile,BufRead */etc/login.access	setf loginaccess
 
 " Login defs
-au BufNewFile,BufRead /etc/login.defs		setf logindefs
+au BufNewFile,BufRead */etc/login.defs		setf logindefs
 
 " Logtalk
 au BufNewFile,BufRead *.lgt			setf logtalk
@@ -1036,7 +1036,7 @@ au BufNewFile,BufRead *.mgp			setf mgp
 au BufNewFile,BufRead snd.\d\+,.letter,.letter.\d\+,.followup,.article,.article.\d\+,pico.\d\+,mutt{ng,}-*-\w\+,mutt[[:alnum:]_-]\{6\},ae\d\+.txt,/tmp/SLRN[0-9A-Z.]\+,*.eml setf mail
 
 " Mail aliases
-au BufNewFile,BufRead /etc/mail/aliases,/etc/aliases	setf mailaliases
+au BufNewFile,BufRead */etc/mail/aliases,*/etc/aliases	setf mailaliases
 
 " Mailcap configuration file
 au BufNewFile,BufRead .mailcap,mailcap		setf mailcap
@@ -1051,7 +1051,7 @@ au BufNewFile,BufRead *.ist,*.mst		setf 
 au BufNewFile,BufRead *.man			setf man
 
 " Man config
-au BufNewFile,BufRead /etc/man.conf,man.config	setf manconf
+au BufNewFile,BufRead */etc/man.conf,man.config	setf manconf
 
 " Maple V
 au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
@@ -1159,8 +1159,8 @@ au BufNewFile,BufRead *.isc,*.monk,*.ssc
 au BufNewFile,BufRead *.moo			setf moo
 
 " Modconf
-au BufNewFile,BufRead /etc/modules.conf,/etc/conf.modules	setf modconf
-au BufNewFile,BufRead /etc/modutils/*
+au BufNewFile,BufRead */etc/modules.conf,*/etc/modules,*/etc/conf.modules	setf modconf
+au BufNewFile,BufRead */etc/modutils/*
 	\ if executable(expand("<afile>")) != 1
 	\|  call s:StarSetf('modconf')
 	\|endif
@@ -1193,7 +1193,7 @@ au BufNewFile,BufRead *.mush			setf mush
 au BufNewFile,BufRead Mutt{ng,}rc		setf muttrc
 
 " Nano
-au BufNewFile,BufRead /etc/nanorc,.nanorc	setf nanorc
+au BufNewFile,BufRead */etc/nanorc,.nanorc	setf nanorc
 
 " Nastran input/DMAP
 "au BufNewFile,BufRead *.dat			setf nastran
@@ -1269,13 +1269,13 @@ au BufNewFile,BufRead *.ora			setf ora
 au BufNewFile,BufRead pf.conf			setf pf
 
 " Pam conf
-au BufNewFile,BufRead /etc/pam.conf		setf pamconf
+au BufNewFile,BufRead */etc/pam.conf		setf pamconf
 
 " PApp
 au BufNewFile,BufRead *.papp,*.pxml,*.pxsl	setf papp
 
 " Password file
-au BufNewFile,BufRead /etc/passwd,/etc/passwd-,/etc/passwd.edit,/etc/shadow,/etc/shadow-,/var/backups/passwd.bak,/var/backups/shadow.bak setf passwd
+au BufNewFile,BufRead */etc/passwd,*/etc/passwd-,*/etc/passwd.edit,*/etc/shadow,*/etc/shadow-,*/etc/shadow.edit,*/var/backups/passwd.bak,*/var/backups/shadow.bak setf passwd
 
 " Pascal (also *.p)
 au BufNewFile,BufRead *.pas			setf pascal
@@ -1502,7 +1502,7 @@ au BufNewFile,BufRead *.pdb			setf prolo
 au BufNewFile,BufRead *.pml			setf promela
 
 " Protocols
-au BufNewFile,BufRead /etc/protocols		setf protocols
+au BufNewFile,BufRead */etc/protocols		setf protocols
 
 " Pyrex
 au BufNewFile,BufRead *.pyx,*.pxd		setf pyrex
@@ -1689,19 +1689,19 @@ func! s:McSetf()
 endfunc
 
 " Services
-au BufNewFile,BufRead /etc/services		setf services
+au BufNewFile,BufRead */etc/services		setf services
 
 " Service Location config
-au BufNewFile,BufRead /etc/slp.conf		setf slpconf
+au BufNewFile,BufRead */etc/slp.conf		setf slpconf
 
 " Service Location registration
-au BufNewFile,BufRead /etc/slp.reg		setf slpreg
+au BufNewFile,BufRead */etc/slp.reg		setf slpreg
 
 " Service Location SPI
-au BufNewFile,BufRead /etc/slp.spi		setf slpspi
+au BufNewFile,BufRead */etc/slp.spi		setf slpspi
 
 " Setserial config
-au BufNewFile,BufRead /etc/serial.conf		setf setserial
+au BufNewFile,BufRead */etc/serial.conf		setf setserial
 
 " SGML
 au BufNewFile,BufRead *.sgm,*.sgml
@@ -1728,7 +1728,7 @@ au BufNewFile,BufRead sgml.catalog*		cal
 " Gentoo ebuilds are actually bash scripts
 au BufNewFile,BufRead .bashrc*,bashrc,bash.bashrc,.bash_profile*,.bash_logout*,*.bash,*.ebuild call SetFileTypeSH("bash")
 au BufNewFile,BufRead .kshrc*,*.ksh call SetFileTypeSH("ksh")
-au BufNewFile,BufRead /etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
+au BufNewFile,BufRead */etc/profile,.profile*,*.sh,*.env call SetFileTypeSH(getline(1))
 
 " Also called from scripts.vim.
 func! SetFileTypeSH(name)
@@ -1811,7 +1811,7 @@ func! s:CSH()
 endfunc
 
 " Z-Shell script
-au BufNewFile,BufRead .zprofile,/etc/zprofile,.zfbfmarks  setf zsh
+au BufNewFile,BufRead .zprofile,*/etc/zprofile,.zfbfmarks  setf zsh
 au BufNewFile,BufRead .zsh*,.zlog*,.zcompdump*  call s:StarSetf('zsh')
 au BufNewFile,BufRead *.zsh			setf zsh
 
@@ -1882,7 +1882,7 @@ au BufNewFile,BufRead *.rules			call s:F
 let s:ft_rules_udev_rules_pattern = '^\s*\cudev_rules\s*=\s*"\([^"]\{-1,}\)/*".*'
 func! s:FTRules()
   let path = expand('<amatch>:p')
-  if path =~ '^/etc/udev/\%(rules\.d/\)\=.*\.rules$'
+  if path =~ '^/\(etc/udev/\%(rules\.d/\)\=.*\.rules\|lib/udev/\%(rules\.d/\)\=.*\.rules\)$'
     setf udevrules
     return
   endif
@@ -1970,13 +1970,13 @@ au BufNewFile,BufRead *.sml			setf sml
 au BufNewFile,BufRead *.cm			setf voscm
 
 " Sysctl
-au BufNewFile,BufRead /etc/sysctl.conf		setf sysctl
+au BufNewFile,BufRead */etc/sysctl.conf,*/etc/sysctl.d/*.conf	setf sysctl
 
 " Synopsys Design Constraints
 au BufNewFile,BufRead *.sdc			setf sdc
 
 " Sudoers
-au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
+au BufNewFile,BufRead */etc/sudoers,sudoers.tmp	setf sudoers
 
 " SVG (Scalable Vector Graphics)
 au BufNewFile,BufRead *.svg			setf svg
@@ -2122,23 +2122,23 @@ au BufNewFile,BufReadPost *.tsscl		setf 
 au BufNewFile,BufRead *.uit,*.uil		setf uil
 
 " Udev conf
-au BufNewFile,BufRead /etc/udev/udev.conf	setf udevconf
+au BufNewFile,BufRead */etc/udev/udev.conf	setf udevconf
 
 " Udev permissions
-au BufNewFile,BufRead /etc/udev/permissions.d/*.permissions setf udevperm
+au BufNewFile,BufRead */etc/udev/permissions.d/*.permissions setf udevperm
 "
 " Udev symlinks config
-au BufNewFile,BufRead /etc/udev/cdsymlinks.conf	setf sh
+au BufNewFile,BufRead */etc/udev/cdsymlinks.conf	setf sh
 
 " UnrealScript
 au BufNewFile,BufRead *.uc			setf uc
 
 " Updatedb
-au BufNewFile,BufRead /etc/updatedb.conf	setf updatedb
+au BufNewFile,BufRead */etc/updatedb.conf	setf updatedb
 
 " Upstart (init(8)) config files
-au BufNewFile,BufRead */etc/init/*.conf,~/.init/*.conf          setf upstart
-au BufNewFile,BufRead */etc/init/*.override,~/.init/*.override  setf upstart
+au BufNewFile,BufRead */etc/init/*.conf,*/.init/*.conf          setf upstart
+au BufNewFile,BufRead */etc/init/*.override,*/.init/*.override  setf upstart
 
 " Vera
 au BufNewFile,BufRead *.vr,*.vri,*.vrh		setf vera
@@ -2233,12 +2233,15 @@ au BufNewFile,BufRead XF86Config
 	\   let b:xf86c_xfree86_version = 3 |
 	\ endif |
 	\ setf xf86conf
+au BufNewFile,BufRead */xorg.conf.d/*.conf
+	\ let b:xf86conf_xfree86_version = 4 |
+	\ setf xf86conf
 
 " Xorg config
-au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86c_xfree86_version = 4 | setf xf86conf
+au BufNewFile,BufRead xorg.conf,xorg.conf-4	let b:xf86conf_xfree86_version = 4 | setf xf86conf
 
 " Xinetd conf
-au BufNewFile,BufRead /etc/xinetd.conf		setf xinetd
+au BufNewFile,BufRead */etc/xinetd.conf		setf xinetd
 
 " XS Perl extension interface language
 au BufNewFile,BufRead *.xs			setf xs
@@ -2285,7 +2288,7 @@ au BufNewFile,BufRead *.ts,*.ui			setf x
 au BufNewFile,BufRead *.tpm			setf xml
 
 " Xdg menus
-au BufNewFile,BufRead /etc/xdg/menus/*.menu	setf xml
+au BufNewFile,BufRead */etc/xdg/menus/*.menu	setf xml
 
 " ATI graphics driver configuration
 au BufNewFile,BufRead fglrxrc			setf xml
@@ -2369,8 +2372,9 @@ au StdinReadPost * if !did_filetype() | 
 " Most of these should call s:StarSetf() to avoid names ending in .gz and the
 " like are used.
 
-" More Apache files.
-au BufNewFile,BufRead /etc/apache2/conf.*/*,/etc/apache2/sites-*/*,/etc/apache2/mods-*/*		call s:StarSetf('apache')
+" More Apache config files
+au BufNewFile,BufRead access.conf*,apache.conf*,apache2.conf*,httpd.conf*,srm.conf*	call s:StarSetf('apache')
+au BufNewFile,BufRead */etc/apache2/*.conf*,*/etc/apache2/conf.*/*,*/etc/apache2/mods-*/*,*/etc/apache2/sites-*/*,*/etc/httpd/conf.d/*.conf*		call s:StarSetf('apache')
 
 " Asterisk config file
 au BufNewFile,BufRead *asterisk/*.conf*		call s:StarSetf('asterisk')
@@ -2391,10 +2395,7 @@ au BufNewFile,BufRead [cC]hange[lL]og*
 	\|endif
 
 " Crontab
-au BufNewFile,BufRead crontab,crontab.*,/etc/cron.d/*		call s:StarSetf('crontab')
-
-" Debian Sources.list
-au BufNewFile,BufRead /etc/apt/sources.list.d/*	call s:StarSetf('debsources')
+au BufNewFile,BufRead crontab,crontab.*,*/etc/cron.d/*		call s:StarSetf('crontab')
 
 " Dracula
 au BufNewFile,BufRead drac.*			call s:StarSetf('dracula')
@@ -2429,7 +2430,7 @@ au! BufNewFile,BufRead *jarg*
 au BufNewFile,BufRead Kconfig.*			call s:StarSetf('kconfig')
 
 " Logcheck
-au BufNewFile,BufRead /etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
+au BufNewFile,BufRead */etc/logcheck/*.d*/*	call s:StarSetf('logcheck')
 
 " Makefile
 au BufNewFile,BufRead [mM]akefile*		call s:StarSetf('make')
@@ -2441,7 +2442,7 @@ au BufNewFile,BufRead [rR]akefile*		call
 au BufNewFile,BufRead mutt[[:alnum:]._-]\{6\}	setf mail
 
 " Modconf
-au BufNewFile,BufRead /etc/modprobe.*		call s:StarSetf('modconf')
+au BufNewFile,BufRead */etc/modprobe.*		call s:StarSetf('modconf')
 
 " Mutt setup file
 au BufNewFile,BufRead .mutt{ng,}rc*,*/.mutt{ng,}/mutt{ng,}rc*	call s:StarSetf('muttrc')
@@ -2451,7 +2452,7 @@ au BufNewFile,BufRead mutt{ng,}rc*,Mutt{
 au BufNewFile,BufRead tmac.*			call s:StarSetf('nroff')
 
 " Pam conf
-au BufNewFile,BufRead /etc/pam.d/*		call s:StarSetf('pamconf')
+au BufNewFile,BufRead */etc/pam.d/*		call s:StarSetf('pamconf')
 
 " Printcap and Termcap
 au BufNewFile,BufRead *printcap*
@@ -2474,10 +2475,10 @@ au BufNewFile,BufRead Xresources*,*/app-
 
 " XFree86 config
 au BufNewFile,BufRead XF86Config-4*
-	\ let b:xf86c_xfree86_version = 4 | call s:StarSetf('xf86conf')
+	\ let b:xf86conf_xfree86_version = 4 | call s:StarSetf('xf86conf')
 au BufNewFile,BufRead XF86Config*
 	\ if getline(1) =~ '\<XConfigurator\>'
-	\|  let b:xf86c_xfree86_version = 3
+	\|  let b:xf86conf_xfree86_version = 3
 	\|endif
 	\|call s:StarSetf('xf86conf')
 
@@ -2485,7 +2486,7 @@ au BufNewFile,BufRead XF86Config*
 au BufNewFile,BufRead *xmodmap*			call s:StarSetf('xmodmap')
 
 " Xinetd conf
-au BufNewFile,BufRead /etc/xinetd.d/*		call s:StarSetf('xinetd')
+au BufNewFile,BufRead */etc/xinetd.d/*		call s:StarSetf('xinetd')
 
 " Z-Shell script
 au BufNewFile,BufRead zsh*,zlog*		call s:StarSetf('zsh')
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,8 +1,8 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     7.0
-" Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: 2010 Jun 11
+" Version:     8.0
+" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com>
+" Last Change: 2011 Apr 01
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
@@ -36,6 +36,10 @@
 "
 " History
 "
+" Version 8.0
+" 
+" NF: Improved the matchit plugin regex (Talek)
+"
 " Version 7.0
 " 
 " NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling
@@ -290,6 +294,7 @@ if !exists("b:match_words")
     " WHEN OTHERS THEN
     "
     " create[ or replace] procedure|function|event
+                " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'.
 
     let b:match_words =
 		\ '\<begin\>:\<end\>\W*$,'.
@@ -298,12 +303,9 @@ if !exists("b:match_words")
                 \ '\<elsif\>\|\<elseif\>\|\<else\>:'.
                 \ '\<end\s\+if\>,'.
                 \
-                \ '\<do\>\|'.
-                \ '\<while\>\|'.
-                \ '\%(' . s:notend . '\<loop\>\)\|'.
-                \ '\%(' . s:notend . '\<for\>\):'.
-                \ '\<exit\>\|\<leave\>\|\<break\>\|\<continue\>:'.
-                \ '\%(\<end\s\+\%(for\|loop\>\)\)\|\<doend\>,'.
+                \ '\(^\s*\)\@<=\(\<\%(do\|for\|while\|loop\)\>.*\):'.
+                \ '\%(\<exit\>\|\<leave\>\|\<break\>\|\<continue\>\):'.
+                \ '\%(\<doend\>\|\%(\<end\s\+\%(for\|while\|loop\>\)\)\),'.
                 \
                 \ '\%('. s:notend . '\<case\>\):'.
                 \ '\%('.s:when_no_matched_or_others.'\):'.
--- a/runtime/indent/pascal.vim
+++ b/runtime/indent/pascal.vim
@@ -2,7 +2,11 @@
 " Language:    Pascal
 " Maintainer:  Neil Carter <n.carter@swansea.ac.uk>
 " Created:     2004 Jul 13
-" Last Change: 2005 Jul 05
+" Last Change: 2011 Apr 01
+"
+" This is version 2.0, a complete rewrite.
+"
+" For further documentation, see http://psy.swansea.ac.uk/staff/carter/vim/
 
 
 if exists("b:did_indent")
@@ -38,7 +42,15 @@ function! s:GetPrevNonCommentLineNum( li
 endfunction
 
 
+function! s:PurifyCode( line_num )
+	" Strip any trailing comments and whitespace
+	let pureline = 'TODO'
+	return pureline
+endfunction
+
+
 function! GetPascalIndent( line_num )
+
 	" Line 0 always goes at column 0
 	if a:line_num == 0
 		return 0
@@ -46,128 +58,171 @@ function! GetPascalIndent( line_num )
 
 	let this_codeline = getline( a:line_num )
 
-	" If in the middle of a three-part comment
+
+	" SAME INDENT
+
+	" Middle of a three-part comment
 	if this_codeline =~ '^\s*\*'
-		return indent( a:line_num )
+		return indent( a:line_num - 1)
+	endif
+
+
+	" COLUMN 1 ALWAYS
+
+	" Last line of the program
+	if this_codeline =~ '^\s*end\.'
+		return 0
 	endif
 
+	" Compiler directives, allowing "(*" and "{"
+	"if this_codeline =~ '^\s*\({\|(\*\)$\(IFDEF\|IFNDEF\|ELSE\|ENDIF\)'
+	if this_codeline =~ '^\s*\({\|(\*\)\$'
+		return 0
+	endif
+
+	" section headers
+	if this_codeline =~ '^\s*\(program\|procedure\|function\|type\)\>'
+		return 0
+	endif
+
+	" Subroutine separators, lines ending with "const" or "var"
+	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\(const\|var\)\)$'
+		return 0
+	endif
+
+
+	" OTHERWISE, WE NEED TO LOOK FURTHER BACK...
+
 	let prev_codeline_num = s:GetPrevNonCommentLineNum( a:line_num )
 	let prev_codeline = getline( prev_codeline_num )
 	let indnt = indent( prev_codeline_num )
 
-	" Compiler directives should always go in column zero.
-	if this_codeline =~ '^\s*{\(\$IFDEF\|\$ELSE\|\$ENDIF\)'
-		return 0
+
+	" INCREASE INDENT
+
+	" If the PREVIOUS LINE ended in these items, always indent
+	if prev_codeline =~ '\<\(type\|const\|var\)$'
+		return indnt + &shiftwidth
+	endif
+
+	if prev_codeline =~ '\<repeat$'
+		if this_codeline !~ '^\s*until\>'
+			return indnt + &shiftwidth
+		else
+			return indnt
+		endif
+	endif
+
+	if prev_codeline =~ '\<\(begin\|record\)$'
+		if this_codeline !~ '^\s*end\>'
+			return indnt + &shiftwidth
+		else
+			return indnt
+		endif
+	endif
+
+	" If the PREVIOUS LINE ended with these items, indent if not
+	" followed by "begin"
+	if prev_codeline =~ '\<\(\|else\|then\|do\)$' || prev_codeline =~ ':$'
+		if this_codeline !~ '^\s*begin\>'
+			return indnt + &shiftwidth
+		else
+			" If it does start with "begin" then keep the same indent
+			"return indnt + &shiftwidth
+			return indnt
+		endif
 	endif
 
-	" These items have nothing before or after (not even a comment), and
-	" go on column 0. Make sure that the ^\s* is followed by \( to make
-	" ORs work properly, and not include the start of line (this must
-	" always appear).
-	" The bracketed expression with the underline is a routine
-	" separator. This is one case where we do indent comment lines.
-	if this_codeline =~ '^\s*\((\*\ _\+\ \*)\|\<\(const\|var\)\>\)$'
-		return 0
+	" Inside a parameter list (i.e. a "(" without a ")"). ???? Considers
+	" only the line before the current one. TODO: Get it working for
+	" parameter lists longer than two lines.
+	if prev_codeline =~ '([^)]\+$'
+		return indnt + &shiftwidth
+	endif
+
+
+	" DECREASE INDENT
+
+	" Lines starting with "else", but not following line ending with
+	" "end".
+	if this_codeline =~ '^\s*else\>' && prev_codeline !~ '\<end$'
+		return indnt - &shiftwidth
 	endif
 
-	" These items may have text after them, and go on column 0 (in most
-	" cases). The problem is that "function" and "procedure" keywords
-	" should be indented if within a class declaration.
-	if this_codeline =~ '^\s*\<\(program\|type\|uses\|procedure\|function\)\>'
-		return 0
+	" Lines after a single-statement branch/loop.
+	" Two lines before ended in "then", "else", or "do"
+	" Previous line didn't end in "begin"
+	let prev2_codeline_num = s:GetPrevNonCommentLineNum( prev_codeline_num )
+	let prev2_codeline = getline( prev2_codeline_num )
+	if prev2_codeline =~ '\<\(then\|else\|do\)$' && prev_codeline !~ '\<begin$'
+		" If the next code line after a single statement branch/loop
+		" starts with "end", "except" or "finally", we need an
+		" additional unindentation.
+		if this_codeline =~ '^\s*\(end;\|except\|finally\|\)$'
+			" Note that we don't return from here.
+			return indnt - &shiftwidth - &shiftwidth
+		endif
+		return indnt - &shiftwidth
 	endif
 
-	" BEGIN
-	" If the begin does not come after "if", "for", or "else", then it
-	" goes in column 0
-	if this_codeline =~ '^\s*begin\>' && prev_codeline !~ '^\s*\<\(if\|for\|else\)\>'
+	" Lines starting with "until" or "end". This rule must be overridden
+	" by the one for "end" after a single-statement branch/loop. In
+	" other words that rule should come before this one.
+	if this_codeline =~ '^\s*\(end\|until\)\>'
+		return indnt - &shiftwidth
+	endif
+
+
+	" MISCELLANEOUS THINGS TO CATCH
+
+	" Most "begin"s will have been handled by now. Any remaining
+	" "begin"s on their own line should go in column 1.
+	if this_codeline =~ '^\s*begin$'
 		return 0
 	endif
 
-	" These keywords are indented once only.
-	if this_codeline =~ '^\s*\<\(private\)\>'
-		return &shiftwidth
-	endif
+
+" ____________________________________________________________________
+" Object/Borland Pascal/Delphi Extensions
+"
+" Note that extended-pascal is handled here, unless it is simpler to
+" handle them in the standard-pascal section above.
 
-	" If the PREVIOUS LINE contained these items, the current line is
-	" always indented once.
-	if prev_codeline =~ '^\s*\<\(type\|uses\)\>'
-		return &shiftwidth
-	endif
+
+	" COLUMN 1 ALWAYS
 
-	" These keywords are indented once only. Possibly surrounded by
-	" other chars.
-	if this_codeline =~ '^.\+\<\(object\|record\)\>'
-		return &shiftwidth
+	" section headers at start of line.
+	if this_codeline =~ '^\s*\(interface\|implementation\|uses\|unit\)\>'
+		return 0
 	endif
 
-	" If the previous line was indenting...
-	if prev_codeline =~ '^\s*\<\(for\|if\|case\|else\|end\ else\)\>'
-		" then indent.
-		let indnt = indnt + &shiftwidth
-		" BUT... if this is the start of a multistatement block then we
-		" need to align the begin with the previous line.
-		if this_codeline =~ '^\s*begin\>'
-			return indnt - &shiftwidth
-		endif
+
+	" INDENT ONCE
 
-		" We also need to keep the indentation level constant if the
-		" whole if-then statement was on one line.
-		if prev_codeline =~ '\<then\>.\+'
-			let indnt = indnt - &shiftwidth
-		endif
-	endif
-
-	" PREVIOUS-LINE BEGIN
-	" If the previous line was an indenting keyword then indent once...
-	if prev_codeline =~ '^\s*\<\(const\|var\|begin\|repeat\|private\)\>'
-		" But only if this is another var in a list.
-		if this_codeline !~ '^\s*var\>'
-			return indnt + &shiftwidth
-		endif
-	endif
-
-	" PREVIOUS-LINE BEGIN
-	" Indent code after a case statement begin
-	if prev_codeline =~ '\:\ begin\>'
+	" If the PREVIOUS LINE ended in these items, always indent.
+	if prev_codeline =~ '^\s*\(unit\|uses\|try\|except\|finally\|private\|protected\|public\|published\)$'
 		return indnt + &shiftwidth
 	endif
 
-	" These words may have text before them on the line (hence the .*)
-	" but are followed by nothing. Always indent once only.
-	if prev_codeline =~ '^\(.*\|\s*\)\<\(object\|record\)\>$'
-		return indnt + &shiftwidth
-	endif
+	" ???? Indent "procedure" and "functions" if they appear within an
+	" class/object definition. But that means overriding standard-pascal
+	" rule where these words always go in column 1.
 
-	" If we just closed a bracket that started on a previous line, then
-	" unindent. But don't return yet -- we need to check for further
-	" unindentation (for end/until/else)
-	if prev_codeline =~ '^[^(]*[^*])'
-		let indnt = indnt - &shiftwidth
-	endif
 
-	" At the end of a block, we have to unindent both the current line
-	" (the "end" for instance) and the newly-created line.
-	if this_codeline =~ '^\s*\<\(end\|until\|else\)\>'
+	" UNINDENT ONCE
+
+	if this_codeline =~ '^\s*\(except\|finally\)$'
 		return indnt - &shiftwidth
 	endif
 
-	" If we have opened a bracket and it continues over one line,
-	" then indent once.
-	"
-	" RE = an opening bracket followed by any amount of anything other
-	" than a closing bracket and then the end-of-line.
-	"
-	" If we didn't include the end of line, this RE would match even
-	" closed brackets, since it would match everything up to the closing
-	" bracket.
-	"
-	" This test isn't clever enough to handle brackets inside strings or
-	" comments.
-	if prev_codeline =~ '([^*]\=[^)]*$'
-		return indnt + &shiftwidth
+	if this_codeline =~ '^\s*\(private\|protected\|public\|published\)$'
+		return indnt - &shiftwidth
 	endif
 
+
+" ____________________________________________________________________
+
+	" If nothing changed, return same indent.
 	return indnt
 endfunction
 
--- a/runtime/lang/menu_ja_jp.euc-jp.vim
+++ b/runtime/lang/menu_ja_jp.euc-jp.vim
@@ -1,8 +1,8 @@
 " vi:set ts=8 sts=8 sw=8 tw=0:
 "
 " Menu Translations:	Japanese (EUC-JP)
-" Translated By:	MURAOKA Taro  <koron@tka.att.ne.jp>
-" Last Change:		18-Apr-2006.
+" Translated By:	MURAOKA Taro  <koron.kaoriya@gmail.com>
+" Last Change:		21-Mar-2011.
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -99,6 +99,8 @@ let g:menutrans_tags_dialog = "・ソ・ー・ユ・。・、・、ホフセチー、ニホマ、キ、ニ、ッ、タ、オ、、:\nフセチー、マ・ォ・・゙ ( , ) 、ヌカ霏レ、テ、ニ、ッ、タ、オ、、."
 menutrans F&ile\ Settings		・ユ・。・、・タ゚ト(&I)
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!
 	\	ケヤネヨケ賈スシィタレツリ(&N)<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!
+	\	チツミケヤネヨケ賈スシィタレツリ(&V)<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!
 	\ ・・ケ・ネ・筍シ・ノタレツリ(&L)<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!
@@ -149,7 +151,7 @@ menutrans Se&T\ Compiler		・ウ・・ム・、・鯊゚ト(&T)
 " Tools.Spelling Menu
 menutrans &Spelling			・ケ・レ・・・ー(&S)
 menutrans &Spell\ Check\ On		・ケ・レ・・チ・ァ・テ・ッヘュク(&S)
-menutrans Spell\ Check\ &Off		・ケ・レ・・チ・ァ・テ・ッヘュク(&O)
+menutrans Spell\ Check\ &Off		・ケ・レ・・チ・ァ・テ・ッフオク(&O)
 menutrans To\ &Next\ error<Tab>]s	シ。、ホ・ィ・鬘シ(&N)<Tab>]s
 menutrans To\ &Previous\ error<Tab>[s	チー、ホ・ィ・鬘シ(&P)<Tab>[s
 menutrans Suggest\ &Corrections<Tab>z=	ス、タオクハ(&C)<Tab>z=
--- a/runtime/lang/menu_ja_jp.utf-8.vim
+++ b/runtime/lang/menu_ja_jp.utf-8.vim
@@ -1,8 +1,8 @@
 " vi:set ts=8 sts=8 sw=8 tw=0:
 "
 " Menu Translations:	Japanese (UTF-8)
-" Translated By:	MURAOKA Taro  <koron@tka.att.ne.jp>
-" Last Change:		18-Apr-2006.
+" Translated By:	MURAOKA Taro  <koron.kaoriya@gmail.com>
+" Last Change:		21-Mar-2011.
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -99,6 +99,8 @@ let g:menutrans_tags_dialog = "繧ソ繧ー繝輔ぃ繧、繝ォ縺ョ蜷榊燕繧貞・蜉帙@縺ヲ縺上□縺輔>:\n蜷榊燕縺ッ繧ォ繝ウ繝 ( , ) 縺ァ蛹コ蛻縺」縺ヲ縺上□縺輔>."
 menutrans F&ile\ Settings		繝輔ぃ繧、繝ォ險ュ螳(&I)
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!
 	\	陦檎分蜿キ陦ィ遉コ蛻譖ソ(&N)<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!
+	\	逶ク蟇セ陦檎分蜿キ陦ィ遉コ蛻譖ソ(&V)<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!
 	\ 繝ェ繧ケ繝医Δ繝シ繝牙譖ソ(&L)<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!
@@ -149,7 +151,7 @@ menutrans Se&T\ Compiler		繧ウ繝ウ繝代う繝ゥ險ュ螳(&T)
 " Tools.Spelling Menu
 menutrans &Spelling			繧ケ繝壹Μ繝ウ繧ー(&S)
 menutrans &Spell\ Check\ On		繧ケ繝壹Ν繝√ぉ繝繧ッ譛牙柑(&S)
-menutrans Spell\ Check\ &Off		繧ケ繝壹Ν繝√ぉ繝繧ッ譛牙柑(&O)
+menutrans Spell\ Check\ &Off		繧ケ繝壹Ν繝√ぉ繝繧ッ辟。蜉ケ(&O)
 menutrans To\ &Next\ error<Tab>]s	谺。縺ョ繧ィ繝ゥ繝シ(&N)<Tab>]s
 menutrans To\ &Previous\ error<Tab>[s	蜑阪ョ繧ィ繝ゥ繝シ(&P)<Tab>[s
 menutrans Suggest\ &Corrections<Tab>z=	菫ョ豁」蛟呵」(&C)<Tab>z=
--- a/runtime/lang/menu_japanese_japan.932.vim
+++ b/runtime/lang/menu_japanese_japan.932.vim
@@ -1,8 +1,8 @@
 " vi:set ts=8 sts=8 sw=8 tw=0:
 "
 " Menu Translations:	Japanese (CP932)
-" Translated By:	MURAOKA Taro  <koron@tka.att.ne.jp>
-" Last Change:		18-Apr-2006.
+" Translated By:	MURAOKA Taro  <koron.kaoriya@gmail.com>
+" Last Change:		21-Mar-2011.
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -99,6 +99,8 @@ let g:menutrans_tags_dialog = "タグファイルの名前を入力してください:\n名前はカンマ ( , ) で区切ってください."
 menutrans F&ile\ Settings		ファイル設定(&I)
 menutrans Toggle\ Line\ &Numbering<Tab>:set\ nu!
 	\	行番号表示切替(&N)<Tab>:set\ nu!
+menutrans Toggle\ relati&ve\ Line\ Numbering<Tab>:set\ rnu!
+	\	相対行番号表示切替(&V)<Tab>:set\ rnu!
 menutrans Toggle\ &List\ Mode<Tab>:set\ list!
 	\ リストモード切替(&L)<Tab>:set\ list!
 menutrans Toggle\ Line\ &Wrap<Tab>:set\ wrap!
@@ -149,7 +151,7 @@ menutrans Se&T\ Compiler		コンパイラ設定(&T)
 " Tools.Spelling Menu
 menutrans &Spelling			スペリング(&S)
 menutrans &Spell\ Check\ On		スペルチェック有効(&S)
-menutrans Spell\ Check\ &Off		スペルチェック有効(&O)
+menutrans Spell\ Check\ &Off		スペルチェック無効(&O)
 menutrans To\ &Next\ error<Tab>]s	次のエラー(&N)<Tab>]s
 menutrans To\ &Previous\ error<Tab>[s	前のエラー(&P)<Tab>[s
 menutrans Suggest\ &Corrections<Tab>z=	修正候補(&C)<Tab>z=
--- 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:		Jul 27, 2010
+" Date:		Feb 10, 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 = "v140"
+let g:loaded_netrwPlugin = "v141"
 if v:version < 702
  echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
  finish
@@ -34,10 +34,13 @@ set cpo&vim
 " Local Browsing: {{{2
 augroup FileExplorer
  au!
- au BufEnter * silent! call s:LocalBrowse(expand("<amatch>"))
- au VimEnter * silent! call s:VimEnter(expand("<amatch>"))
+" au BufReadCmd *[/\\]	sil! call s:LocalBrowse(expand("<amatch>")) 
+" au BufEnter *[^/\\]	sil! call s:LocalBrowse(expand("<amatch>"))
+" au VimEnter *[^/\\]	sil! call s:VimEnter(expand("<amatch>"))
+ au BufEnter *	sil! call s:LocalBrowse(expand("<amatch>"))
+ au VimEnter *	sil! call s:VimEnter(expand("<amatch>"))
  if has("win32") || has("win95") || has("win64") || has("win16")
-  au BufEnter .* silent! call s:LocalBrowse(expand("<amatch>"))
+  au BufEnter .* sil! call s:LocalBrowse(expand("<amatch>"))
  endif
 augroup END
 
@@ -45,10 +48,10 @@ augroup END
 augroup Network
  au!
  if has("win32") || has("win95") || has("win64") || has("win16")
-  au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
+  au BufReadCmd  file://*		call netrw#FileUrlRead(expand("<amatch>"))
  else
-  au BufReadCmd  file://*		exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',""))|exe "bwipe ".fnameescape(expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
-  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".fnameescape(netrw#RFC2396(expand("<amatch>")))|exe 'e '.fnameescape(substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',""))|exe "bwipe ".fnameescape(substitute(expand("<amatch>"),'file://\(\k\+@\)\=','',''))|exe "silent doau BufReadPost ".fnameescape(netrw#RFC2396(expand("<amatch>")))
+  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>"))
@@ -100,11 +103,11 @@ fun! s:LocalBrowse(dirname)
    " string is the current directory and not checking would break
    " things such as the help command.
    if a:dirname != '' && isdirectory(a:dirname)
-    silent! call netrw#LocalBrowseCheck(a:dirname)
+    sil! call netrw#LocalBrowseCheck(a:dirname)
    endif
   elseif isdirectory(a:dirname)
 "   echomsg "dirname<".dirname."> isdir"
-   silent! call netrw#LocalBrowseCheck(a:dirname)
+   sil! call netrw#LocalBrowseCheck(a:dirname)
   endif
   " not a directory, ignore it
 endfun
--- a/runtime/syntax/netrw.vim
+++ b/runtime/syntax/netrw.vim
@@ -88,7 +88,7 @@ if !exists("did_drchip_netrwlist_syntax"
  hi default link netrwTimeSep	netrwDateSep
  hi default link netrwComma	netrwComment
  hi default link netrwHide	netrwComment
- hi default link netrwMarkFile	Identifier
+ hi default link netrwMarkFile	DiffChange
 
  " special syntax highlighting (see :he g:netrw_special_syntax)
  hi default link netrwBak	NonText
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,8 +2,8 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Aug 04, 2010
-" Version:		114
+" Last Change:		Feb 11, 2011
+" Version:		115
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 " For options and settings, please use:      :help ft-sh-syntax
 " This file includes many ideas from ?ric Brunet (eric.brunet@ens.fr)
@@ -410,6 +410,10 @@ syn region  shDerefVarArray   contained	
 "    ksh bash : ${parameter##pattern} remove large left  pattern
 "    ksh bash : ${parameter%pattern}  remove small right pattern
 "    ksh bash : ${parameter%%pattern} remove large right pattern
+"    ksh bash : ${parameter^pattern}  Case modification
+"    ksh bash : ${parameter^^pattern} Case modification
+"    ksh bash : ${parameter,pattern}  Case modification
+"    ksh bash : ${parameter,,pattern} Case modification
 syn cluster shDerefPatternList	contains=shDerefPattern,shDerefString
 syn match shDerefOpError	contained	":[[:punct:]]"
 syn match  shDerefOp	contained	":\=[-=?]"	nextgroup=@shDerefPatternList
@@ -417,6 +421,8 @@ syn match  shDerefOp	contained	":\=+"	ne
 if exists("b:is_bash") || exists("b:is_kornshell")
  syn match  shDerefOp	contained	"#\{1,2}"	nextgroup=@shDerefPatternList
  syn match  shDerefOp	contained	"%\{1,2}"	nextgroup=@shDerefPatternList
+ syn match  shDerefOp	contained	"\^\{1,2}"	nextgroup=@shDerefPatternList
+ syn match  shDerefOp	contained	",\{1,2}"	nextgroup=@shDerefPatternList
  syn match  shDerefPattern	contained	"[^{}]\+"	contains=shDeref,shDerefSimple,shDerefPattern,shDerefString,shCommandSub,shDerefEscape nextgroup=shDerefPattern
  syn region shDerefPattern	contained	start="{" end="}"	contains=shDeref,shDerefSimple,shDerefString,shCommandSub nextgroup=shDerefPattern
  syn match  shDerefEscape	contained	'\%(\\\\\)*\\.'
--- 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:	Sep 17, 2010 
-" Version:	60
+" Last Change:	Dec 07, 2010 
+" Version:	64
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Notes: {{{1
@@ -89,18 +89,17 @@ if g:tex_fold_enabled && &fdm == "manual
  setl fdm=syntax
 endif
 
-" (La)TeX keywords: only use the letters a-zA-Z {{{1
+" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
 " but _ is the only one that causes problems.
-if version < 600
-  set isk=a-z,A-Z
-  if b:tex_stylish
-    set isk+=@
-  endif
+" One may override this iskeyword setting by providing
+" g:tex_isk
+if exists("g:tex_isk")
+ exe "setlocal isk=".g:tex_isk
 else
-  setlocal isk=a-z,A-Z
-  if b:tex_stylish
-    setlocal isk+=@
-  endif
+ setlocal isk=48-57,a-z,A-Z,192-255
+endif
+if b:tex_stylish
+  setlocal isk+=@-@
 endif
 
 " Clusters: {{{1
@@ -372,19 +371,54 @@ if !exists("tex_no_math")
  if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm'
   syn match   texMathDelim	contained		"\\left\\{\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
   syn match   texMathDelim	contained		"\\right\\}\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
+  let s:texMathDelimList=[
+     \ ['<'            , '<'] ,
+     \ ['>'            , '>'] ,
+     \ ['('            , '('] ,
+     \ [')'            , ')'] ,
+     \ ['\['           , '['] ,
+     \ [']'            , ']'] ,
+     \ ['\\{'          , '{'] ,
+     \ ['\\}'          , '}'] ,
+     \ ['|'            , '|'] ,
+     \ ['\\|'          , '窶'] ,
+     \ ['\\backslash'  , '\'] ,
+     \ ['\\downarrow'  , '竊'] ,
+     \ ['\\Downarrow'  , '竍'] ,
+     \ ['\\langle'     , '<'] ,
+     \ ['\\lbrace'     , '['] ,
+     \ ['\\lceil'      , '竚'] ,
+     \ ['\\lfloor'     , '竚'] ,
+     \ ['\\lgroup'     , '竚'] ,
+     \ ['\\lmoustache' , '竡'] ,
+     \ ['\\rangle'     , '>'] ,
+     \ ['\\rbrace'     , ']'] ,
+     \ ['\\rceil'      , '竚'] ,
+     \ ['\\rfloor'     , '竚'] ,
+     \ ['\\rgroup'     , '竚'] ,
+     \ ['\\rmoustache' , '竡'] ,
+     \ ['\\uparrow'    , '竊'] ,
+     \ ['\\Uparrow'    , '竊'] ,
+     \ ['\\updownarrow', '竊'] ,
+     \ ['\\Updownarrow', '竍']]
+  syn match texMathDelim	'\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
+  for texmath in s:texMathDelimList
+   exe "syn match texMathDelim	'\\\\[bB]igg\\=[lr]\\=".texmath[0]."'	contained conceal cchar=".texmath[1]
+  endfor
+
  else
   syn match   texMathDelim	contained		"\\\(left\|right\)\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
+  syn match   texMathDelim	contained		"\\[bB]igg\=[lr]\=\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
+  syn match   texMathDelimSet2	contained	"\\"		nextgroup=texMathDelimKey,texMathDelimBad
+  syn match   texMathDelimSet1	contained	"[<>()[\]|/.]\|\\[{}|]"
+  syn keyword texMathDelimKey	contained	backslash       lceil           lVert           rgroup          uparrow
+  syn keyword texMathDelimKey	contained	downarrow       lfloor          rangle          rmoustache      Uparrow
+  syn keyword texMathDelimKey	contained	Downarrow       lgroup          rbrace          rvert           updownarrow
+  syn keyword texMathDelimKey	contained	langle          lmoustache      rceil           rVert           Updownarrow
+  syn keyword texMathDelimKey	contained	lbrace          lvert           rfloor
  endif
- syn match   texMathDelim	contained		"\\\([bB]igg\=[lr]\)\>"			skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
  syn match   texMathDelim	contained		"\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
  syn match   texMathDelim	contained		"\\lefteqn\>"
- syn match   texMathDelimSet2	contained	"\\"		nextgroup=texMathDelimKey,texMathDelimBad
- syn match   texMathDelimSet1	contained	"[<>()[\]|/.]\|\\[{}|]"
- syn keyword texMathDelimKey	contained	backslash       lceil           lVert           rgroup          uparrow
- syn keyword texMathDelimKey	contained	downarrow       lfloor          rangle          rmoustache      Uparrow
- syn keyword texMathDelimKey	contained	Downarrow       lgroup          rbrace          rvert           updownarrow
- syn keyword texMathDelimKey	contained	langle          lmoustache      rceil           rVert           Updownarrow
- syn keyword texMathDelimKey	contained	lbrace          lvert           rfloor
 endif
 
 " Special TeX characters  ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
@@ -521,6 +555,7 @@ if has("conceal") && &enc == 'utf-8'
  " (many of these symbols were contributed by Bjテカrn Winckler)
  if s:tex_conceal =~ 'm'
   let s:texMathList=[
+    \ ['|'		, '窶'],
     \ ['angle'		, '竏'],
     \ ['approx'		, '竕'],
     \ ['ast'		, '竏'],
@@ -624,6 +659,7 @@ if has("conceal") && &enc == 'utf-8'
     \ ['lesseqgtr'	, '站'],
     \ ['lesssim'	, '竕イ'],
     \ ['lfloor'		, '竚'],
+    \ ['lmoustache'     , '笊ュ'],
     \ ['lneqq'		, '竕ィ'],
     \ ['ltimes'		, '站'],
     \ ['mapsto'		, '竊ヲ'],
@@ -694,6 +730,7 @@ if has("conceal") && &enc == 'utf-8'
     \ ['rightsquigarrow', '竊'],
     \ ['rightthreetimes', '站'],
     \ ['risingdotseq'	, '竕'],
+    \ ['rmoustache'     , '笊ョ'],
     \ ['rtimes'		, '站'],
     \ ['searrow'	, '竊'],
     \ ['setminus'	, '竏'],
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.3 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	August 20, 2010
-" Version:	7.3-05
+" Last Change:	Jan 10, 2011
+" Version:	7.3-07
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -550,9 +550,9 @@ if !exists("g:vimsyn_embed")
 endif
 
 " [-- lua --] {{{3
-let s:luapath= expand("<sfile>:p:h")."/lua.vim"
+let s:luapath= fnameescape(expand("<sfile>:p:h")."/lua.vim")
 if !filereadable(s:luapath)
- let s:luapath= globpath(&rtp,"syntax/lua.vim")
+ let s:luapath= fnameescape(globpath(&rtp,"syntax/lua.vim"))
 endif
 if (g:vimsyn_embed =~ 'l' && has("lua")) && filereadable(s:luapath)
  unlet! b:current_syntax
@@ -572,9 +572,9 @@ endif
 unlet s:luapath
 
 " [-- perl --] {{{3
-let s:perlpath= expand("<sfile>:p:h")."/perl.vim"
+let s:perlpath= fnameescape(expand("<sfile>:p:h")."/perl.vim")
 if !filereadable(s:perlpath)
- let s:perlpath= globpath(&rtp,"syntax/perl.vim")
+ let s:perlpath= fnameescape(globpath(&rtp,"syntax/perl.vim"))
 endif
 if (g:vimsyn_embed =~ 'p' && has("perl")) && filereadable(s:perlpath)
  unlet! b:current_syntax
@@ -594,9 +594,9 @@ endif
 unlet s:perlpath
 
 " [-- ruby --] {{{3
-let s:rubypath= expand("<sfile>:p:h")."/ruby.vim"
+let s:rubypath= fnameescape(expand("<sfile>:p:h")."/ruby.vim")
 if !filereadable(s:rubypath)
- let s:rubypath= globpath(&rtp,"syntax/ruby.vim")
+ let s:rubypath= fnameescape(globpath(&rtp,"syntax/ruby.vim"))
 endif
 if (g:vimsyn_embed =~ 'r' && has("ruby")) && filereadable(s:rubypath)
  unlet! b:current_syntax
@@ -615,9 +615,9 @@ endif
 unlet s:rubypath
 
 " [-- python --] {{{3
-let s:pythonpath= expand("<sfile>:p:h")."/python.vim"
+let s:pythonpath= fnameescape(expand("<sfile>:p:h")."/python.vim")
 if !filereadable(s:pythonpath)
- let s:pythonpath= globpath(&rtp,"syntax/python.vim")
+ let s:pythonpath= fnameescape(globpath(&rtp,"syntax/python.vim"))
 endif
 if (g:vimsyn_embed =~ 'P' && has("python")) && filereadable(s:pythonpath)
  unlet! b:current_syntax
@@ -644,9 +644,9 @@ else
  let s:trytcl= 1
 endif
 if s:trytcl
- let s:tclpath= expand("<sfile>:p:h")."/tcl.vim"
+ let s:tclpath= fnameescape(expand("<sfile>:p:h")."/tcl.vim")
  if !filereadable(s:tclpath)
-  let s:tclpath= globpath(&rtp,"syntax/tcl.vim")
+  let s:tclpath= fnameescape(globpath(&rtp,"syntax/tcl.vim"))
  endif
  if (g:vimsyn_embed =~ 't' && has("tcl")) && filereadable(s:tclpath)
   unlet! b:current_syntax
@@ -671,9 +671,9 @@ endif
 unlet s:trytcl
 
 " [-- mzscheme --] {{{3
-let s:mzschemepath= expand("<sfile>:p:h")."/scheme.vim"
+let s:mzschemepath= fnameescape(expand("<sfile>:p:h")."/scheme.vim")
 if !filereadable(s:mzschemepath)
- let s:mzschemepath= globpath(&rtp,"syntax/scheme.vim")
+ let s:mzschemepath= fnameescape(globpath(&rtp,"syntax/scheme.vim"))
 endif
 if (g:vimsyn_embed =~ 'm' && has("mzscheme")) && filereadable(s:mzschemepath)
  unlet! b:current_syntax
--- a/src/po/ja.po
+++ b/src/po/ja.po
@@ -3,21 +3,42 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-8.
-# Last Change: 31-May-2008.
+# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-11.
+# Last Change: 23-Mar-2011.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 7.1\n"
+"Project-Id-Version: Vim 7.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-31 22:00+0900\n"
-"PO-Revision-Date: 2008-05-31 22:30+0900\n"
+"POT-Creation-Date: 2011-03-23 20:58+0900\n"
+"PO-Revision-Date: 2011-03-23 21:20+0900\n"
 "Last-Translator: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "Language-Team: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=euc-jp\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+msgid "E831: bf_key_init() called with empty password"
+msgstr "E831: bf_key_init() 、ャカ・ム・ケ・。シ・ノ、ヌクニ、モスミ、オ、、゙、キ、ソ"
+
+msgid "E820: sizeof(uint32_t) != 4"
+msgstr "E820: sizeof(uint32_t) != 4"
+
+msgid "E817: Blowfish big/little endian use wrong"
+msgstr "E817: Blowfishーナケ讀ホ・モ・テ・ー/・・ネ・・ィ・・ヌ・」・「・、ャエヨー网テ、ニ、、、゙、ケ"
+
+msgid "E818: sha256 test failed"
+msgstr "E818: sha256、ホ・ニ・ケ・ネ、ヒシコヌヤ、キ、゙、キ、ソ"
+
+msgid "E819: Blowfish test failed"
+msgstr "E819: Blowfishーナケ讀ホ・ニ・ケ・ネ、ヒシコヌヤ、キ、゙、キ、ソ"
+
+msgid "[Location List]"
+msgstr "[セス・・ケ・ネ]"
+
+msgid "[Quickfix List]"
+msgstr "[Quickfix・・ケ・ネ]"
+
 msgid "E82: Cannot allocate any buffer, exiting..."
 msgstr "E82: ・ミ・テ・ユ・。、1、ト、篌タョ、ヌ、ュ、ハ、、、ホ、ヌ, スェホサ、キ、゙、ケ..."
 
@@ -149,7 +170,6 @@ msgstr "ヒネ"
 msgid "Top"
 msgstr "タ霹ャ"
 
-#, c-format
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -157,11 +177,8 @@ msgstr ""
 "\n"
 "# ・ミ・テ・ユ・。・・ケ・ネ:\n"
 
-msgid "[Location List]"
-msgstr "[セス・・ケ・ネ]"
-
-msgid "[Quickfix List]"
-msgstr "[Quickfix・・ケ・ネ]"
+msgid "[Scratch]"
+msgstr "[イシス、ュ]"
 
 msgid ""
 "\n"
@@ -182,12 +199,18 @@ msgstr "    ケヤ=%ld  シアハフサメ=%d  フセチー=%s"
 msgid "E96: Can not diff more than %ld buffers"
 msgstr "E96: %ld ーハセ螟ホ・ミ・テ・ユ・。、マdiff、ヌ、ュ、゙、サ、"
 
+msgid "E810: Cannot read or write temp files"
+msgstr "E810: ーサ・ユ・。・、・、ホニノケ、筅キ、ッ、マスケ、ャ、ヌ、ュ、゙、サ、"
+
 msgid "E97: Cannot create diffs"
 msgstr "E97: コケハャ、コタョ、ヌ、ュ、゙、サ、 "
 
 msgid "Patch file"
 msgstr "・ム・テ・チ・ユ・。・、・"
 
+msgid "E816: Cannot read patch output"
+msgstr "E816: patch、ホスミホマ、ニノケ、皃゙、サ、"
+
 msgid "E98: Cannot read diff output"
 msgstr "E98: diff、ホスミホマ、ニノケ、皃゙、サ、"
 
@@ -273,6 +296,12 @@ msgstr " カノス・ュ。シ・。シ・ノハ莇ー (^N^P)"
 msgid "Hit end of paragraph"
 msgstr "テハヘ、ホコヌク螟ヒ・メ・テ・ネ"
 
+msgid "E839: Completion function changed window"
+msgstr "E839: ハ莇ヨエリソ、ャ・ヲ・」・・ノ・ヲ、ハムケケ、キ、゙、キ、ソ"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: ハ莇ーエリソ、ャ・ニ・ュ・ケ・ネ、コス、キ、゙、キ、ソ"
+
 msgid "'dictionary' option is empty"
 msgstr "'dictionary' ・ェ・ラ・キ・逾、ャカ、ヌ、ケ"
 
@@ -293,7 +322,6 @@ msgstr " (テヨエケ) ・ケ・ッ・。シ・ (^E/^Y)"
 msgid "Scanning: %s"
 msgstr "・ケ・ュ・罕テ: %s"
 
-#, c-format
 msgid "Scanning tags."
 msgstr "・ソ・ー、・ケ・ュ・罕テ."
 
@@ -452,6 +480,9 @@ msgstr "E693: エリソサイセネキソ、マエリソサイセネキソ、ネ、キ、ォネ豕モ、ヌ、ュ、゙、サ、"
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: エリソサイセネキソ、ヒ、マフオク、ハチ犲、ヌ、ケ"
 
+msgid "E804: Cannot use '%' with Float"
+msgstr "E804: '%' 、ノ簇ーセョソナタソ、ネチネ、゚ケ遉、サ、ニ、マサネ、ィ、゙、サ、"
+
 msgid "E110: Missing ')'"
 msgstr "E110: ')' 、ャ、゚、ト、ォ、熙゙、サ、"
 
@@ -502,6 +533,14 @@ msgid "E724: variable nested too deep fo
 msgstr "E724: ノスシィ、ケ、、ヒ、マハムソ、ホニ、サメ、ャソシイ皃ョ、゙、ケ"
 
 #, c-format
+msgid "E740: Too many arguments for function %s"
+msgstr "E740: エリソ、ホーソ、ャツソイ皃ョ、゙、ケ: %s"
+
+#, c-format
+msgid "E116: Invalid arguments for function %s"
+msgstr "E116: エリソ、ホフオク、ハーソ、ヌ、ケ: %s"
+
+#, c-format
 msgid "E117: Unknown function: %s"
 msgstr "E117: フ、テホ、ホエリソ、ヌ、ケ: %s"
 
@@ -517,6 +556,9 @@ msgstr "E120: ・ケ・ッ・・ラ・ネーハウー、ヌ<SID>、ャサネ、、、゙、キ、ソ: %s"
 msgid "E725: Calling dict function without Dictionary: %s"
 msgstr "E725: シュスヘムエリソ、ャクニ、ミ、、゙、キ、ソ、ャシュス、ャ、「、熙゙、サ、: %s"
 
+msgid "E808: Number or Float required"
+msgstr "E808: ソテヘ、ォノ簇ーセョソナタソ、ャノャヘラ、ヌ、ケ"
+
 msgid "E699: Too many arguments"
 msgstr "E699: 、ャツソイ皃ョ、゙、ケ"
 
@@ -533,7 +575,7 @@ msgstr "&Ok"
 
 #, c-format
 msgid "E737: Key already exists: %s"
-msgstr "E737: %s 、ネ、、、ヲ・ュ。シ、マエ、ヒツクコ゚、キ、゙、ケ"
+msgstr "E737: ・ュ。シ、マエ、ヒツクコ゚、キ、゙、ケ: %s"
 
 #, c-format
 msgid "+-%s%3ld lines: "
@@ -594,6 +636,9 @@ msgstr "(フオク)"
 msgid "E677: Error writing temp file"
 msgstr "E677: ーサ・ユ・。・、・スケテ讀ヒ・ィ・鬘シ、ャネッタク、キ、゙、キ、ソ"
 
+msgid "E805: Using a Float as a Number"
+msgstr "E805: ノ簇ーセョソナタソ、ソテヘ、ネ、キ、ニーキ、テ、ニ、、、゙、ケ"
+
 msgid "E703: Using a Funcref as a Number"
 msgstr "E703: エリソサイセネキソ、ソテヘ、ネ、キ、ニーキ、テ、ニ、、、゙、ケ。」"
 
@@ -612,6 +657,9 @@ msgstr "E730: ・・ケ・ネキソ、ハクサホ、ネ、キ、ニーキ、テ、ニ、、、゙、ケ"
 msgid "E731: using Dictionary as a String"
 msgstr "E731: ハムソキソ、ハクサホ、ネ、キ、ニーキ、テ、ニ、、、゙、ケ"
 
+msgid "E806: using Float as a String"
+msgstr "E806: ノ簇ーセョソナタソ、ハクサホ、ネ、キ、ニーキ、テ、ニ、、、゙、ケ"
+
 #, c-format
 msgid "E704: Funcref variable name must start with a capital: %s"
 msgstr "E704: エリソサイセネキソハムソフセ、マツ醋クサ、ヌサマ、゙、鬢ハ、ア、、ミ、ハ、熙゙、サ、: %s"
@@ -643,6 +691,10 @@ msgid "E698: variable nested too deep fo
 msgstr "E698: ・ウ・ヤ。シ、シ隍、ヒ、マハムソ、ホニ、サメ、ャソシイ皃ョ、゙、ケ"
 
 #, c-format
+msgid "E123: Undefined function: %s"
+msgstr "E123: フ、トオチ、ホエリソ、ヌ、ケ: %s"
+
+#, c-format
 msgid "E124: Missing '(': %s"
 msgstr "E124: '(' 、ャ、「、熙゙、サ、: %s"
 
@@ -654,6 +706,14 @@ msgid "E126: Missing :endfunction"
 msgstr "E126: :endfunction 、ャ、「、熙゙、サ、"
 
 #, c-format
+msgid "E707: Function name conflicts with variable: %s"
+msgstr "E707: エリソフセ、ャハムソフセ、ネセラニヘ、キ、゙、ケ: %s"
+
+#, c-format
+msgid "E127: Cannot redefine function %s: It is in use"
+msgstr "E127: エリソ %s 、コニトオチ、ヌ、ュ、゙、サ、: サネヘムテ讀ヌ、ケ"
+
+#, c-format
 msgid "E746: Function name does not match script file name: %s"
 msgstr "E746: エリソフセ、ャ・ケ・ッ・・ラ・ネ、ホ・ユ・。・、・フセ、ネーテラ、キ、゙、サ、: %s"
 
@@ -694,7 +754,6 @@ msgstr "%s 、ホシツケヤ、キムツウテ讀ヌ、ケ"
 msgid "E133: :return not inside a function"
 msgstr "E133: エリソウー、ヒ :return 、ャ、「、熙゙、キ、ソ"
 
-#, c-format
 msgid ""
 "\n"
 "# global variables:\n"
@@ -709,6 +768,9 @@ msgstr ""
 "\n"
 "\tLast set from "
 
+msgid "No old files"
+msgstr "クナ、、・ユ・。・、・、マ、「、熙゙、サ、"
+
 #, c-format
 msgid "<%s>%s%s  %d,  Hex %02x,  Octal %03o"
 msgstr "<%s>%s%s  %d,  16ソハソ %02x,  8ソハソ %03o"
@@ -758,6 +820,9 @@ msgstr " セハ"
 msgid " marks"
 msgstr " ・゙。シ・ッ"
 
+msgid " oldfiles"
+msgstr " オ・ユ・。・、・キイ"
+
 msgid " FAILED"
 msgstr " シコヌヤ"
 
@@ -779,7 +844,6 @@ msgstr "viminfo・ユ・。・、・ \"%s\" 、スケ、゚テ"
 msgid "# This viminfo file was generated by Vim %s.\n"
 msgstr "# 、ウ、ホ viminfo ・ユ・。・、・、マ Vim %s 、ヒ、隍テ、ニタクタョ、オ、、゙、キ、ソ.\n"
 
-#, c-format
 msgid ""
 "# You may edit it if you're careful!\n"
 "\n"
@@ -787,7 +851,6 @@ msgstr ""
 "# ハムケケ、ケ、コン、ヒ、マススハャテーユ、キ、ニ、ッ、タ、オ、、!\n"
 "\n"
 
-#, c-format
 msgid "# Value of 'encoding' when this file was written\n"
 msgstr "# 、ウ、ホ・ユ・。・、・、ャス、ォ、、ソサ、ホ 'encoding' 、ホテヘ\n"
 
@@ -898,7 +961,6 @@ msgstr "E148: global・ウ・゙・・ノ、ヒタオオャノスクス、ャサリト熙オ、、ニ、、、゙、サ、"
 msgid "Pattern found in every line: %s"
 msgstr "・ム・ソ。シ・、ャチエ、ニ、ホケヤ、ヌ、゚、ト、ォ、熙゙、キ、ソ: %s"
 
-#, c-format
 msgid ""
 "\n"
 "# Last Substitute String:\n"
@@ -1009,8 +1071,8 @@ msgstr "・ヨ・。シ・ッ・ン・、・・ネ、ャトオチ、オ、、ニ、、、゙、サ、"
 msgid "%3d  %s %s  line %ld"
 msgstr "%3d  %s %s  ケヤ %ld"
 
-msgid "E750: First use :profile start <fname>"
-msgstr "E750: ス鬢皃ヒ :profile start <fname> 、シツケヤ、キ、ニ、ッ、タ、オ、、"
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: ス鬢皃ヒ \":profile start {fname}\" 、シツケヤ、キ、ニ、ッ、タ、オ、、"
 
 #, c-format
 msgid "Save changes to \"%s\"?"
@@ -1202,6 +1264,9 @@ msgstr "E182: フオク、ハ・ウ・゙・・ノフセ、ヌ、ケ"
 msgid "E183: User defined commands must start with an uppercase letter"
 msgstr "E183: ・譯シ・カトオチ・ウ・゙・・ノ、マアムツ醋クサ、ヌサマ、゙、鬢ハ、ア、、ミ、ハ、熙゙、サ、"
 
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr "E841: ヘスフフセ、ハ、ホ、ヌ, ・譯シ・カトオチ・ウ・゙・・ノ、ヒヘヘム、ヌ、ュ、゙、サ、"
+
 #, c-format
 msgid "E184: No such user-defined command: %s"
 msgstr "E184: 、ス、ホ・譯シ・カトオチ・ウ・゙・・ノ、マ、「、熙゙、サ、: %s"
@@ -1216,6 +1281,9 @@ msgstr "E468: ハ莇ーーソ、マ・ォ・ケ・ソ・猝莇ー、ヌ、キ、ォサネヘム、ヌ、ュ、゙、サ、"
 msgid "E467: Custom completion requires a function argument"
 msgstr "E467: ・ォ・ケ・ソ・猝莇ー、ヒ、マーソ、ネ、キ、ニエリソ、ャノャヘラ、ヌ、ケ"
 
+msgid "unknown"
+msgstr "ノヤフタ"
+
 #, c-format
 msgid "E185: Cannot find color scheme %s"
 msgstr "E185: ・ォ・鬘シ・ケ・ュ。シ・ %s 、ャ、゚、ト、ォ、熙゙、サ、"
@@ -1298,6 +1366,9 @@ msgstr "E191: ーソ、マハクサ、ォチーソハ/ク蠶爭ッ・ゥ。シ・ネ、ヌ、キ、ハ、ア、、ミ、、、ア、゙、サ、"
 msgid "E192: Recursive use of :normal too deep"
 msgstr "E192: :normal 、ホコニオ「ヘヘム、ャソシ、ッ、ハ、イ皃ョ、゙、キ、ソ"
 
+msgid "E809: #< is not available without the +eval feature"
+msgstr "E809: #< 、マ +eval オ。ヌス、ャフオ、、、ネヘヘム、ヌ、ュ、゙、サ、"
+
 msgid "E194: No alternate file name to substitute for '#'"
 msgstr "E194: '#'、テヨ、ュエケ、ィ、ノ・ユ・。・、・、ホフセチー、ャ、「、熙゙、サ、"
 
@@ -1313,6 +1384,9 @@ msgstr "E497: \"<amatch>\"、テヨ、ュエケ、ィ、autocommand、ホウコナフセ、ャ、「、熙゙、サ、"
 msgid "E498: no :source file name to substitute for \"<sfile>\""
 msgstr "E498: \"<sfile>\"、テヨ、ュエケ、ィ、 :source ツミセン・ユ・。・、・フセ、ャ、「、熙゙、サ、"
 
+msgid "E842: no line number to use for \"<slnum>\""
+msgstr "E842: \"<slnum>\"、テヨ、ュエケ、ィ、ケヤネヨケ讀ャ、「、熙゙、サ、"
+
 #, no-c-format
 msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
 msgstr ""
@@ -1437,6 +1511,9 @@ msgstr "E193: エリソ、ホウー、ヒ :endfunction 、ャ、「、熙゙、キ、ソ"
 msgid "E788: Not allowed to edit another buffer now"
 msgstr "E788: クスコ゚、マツセ、ホ・ミ・テ・ユ・。、ハヤスク、ケ、、ウ、ネ、マオ、オ、、゙、サ、"
 
+msgid "E811: Not allowed to change buffer information now"
+msgstr "E811: クスコ゚、マ・ミ・テ・ユ・。セハ、ハムケケ、ケ、、ウ、ネ、マオ、オ、、゙、サ、"
+
 msgid "tagname"
 msgstr "・ソ・ーフセ"
 
@@ -1472,6 +1549,9 @@ msgstr "E198: cmd_pchar 、ャ・ウ・゙・・ノトケ、トカ、ィ、゙、キ、ソ"
 msgid "E199: Active window or buffer deleted"
 msgstr "E199: ・「・ッ・ニ・」・ヨ、ハ・ヲ・」・・ノ・ヲ、ォ・ミ・テ・ユ・。、ャコス、オ、、゙、キ、ソ"
 
+msgid "E812: Autocommands changed buffer or buffer name"
+msgstr "E812: autocommand、ャ・ミ・テ・ユ・。、ォ・ミ・テ・ユ・。フセ、ハムケケ、キ、゙、キ、ソ"
+
 msgid "Illegal file name"
 msgstr "ノヤタオ、ハ・ユ・。・、・フセ"
 
@@ -1530,9 +1610,6 @@ msgstr "[ニノタ]"
 msgid "[CR missing]"
 msgstr "[CRフオ]"
 
-msgid "[NL found]"
-msgstr "[NLヘュ]"
-
 msgid "[long lines split]"
 msgstr "[トケケヤハャウ臂"
 
@@ -1542,6 +1619,9 @@ msgstr "[フ、ハムエケ]"
 msgid "[converted]"
 msgstr "[ハムエケコム]"
 
+msgid "[blowfish]"
+msgstr "[blowfishーナケ豐ス]"
+
 msgid "[crypted]"
 msgstr "[ーナケ豐ス]"
 
@@ -1565,6 +1645,9 @@ msgstr "'charconvert' 、ヒ、隍ハムエケ、ャシコヌヤ、キ、゙、キ、ソ"
 msgid "can't read output of 'charconvert'"
 msgstr "'charconvert' 、ホスミホマ、ニノケ、皃゙、サ、、ヌ、キ、ソ"
 
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: ・ユ・。・、・、ャフ、テホ、ホハヒ。、ヌーナケ豐ス、オ、、ニ、、、゙、ケ"
+
 msgid "E676: No matching autocommands for acwrite buffer"
 msgstr "E676: acwrite・ミ・テ・ユ・。、ホウコナ、ケ、autocommand、マツクコ゚、キ、゙、サ、"
 
@@ -1630,12 +1713,24 @@ msgstr "E512: ハト、ク、、ウ、ネ、ヒシコヌヤ"
 msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
 msgstr "E513: スケ、゚・ィ・鬘シ, ハムエケシコヌヤ (セ蠖、ケ、、ヒ、マ 'fenc' 、カ、ヒ、キ、ニ、ッ、タ、オ、、)"
 
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: スケ、゚・ィ・鬘シ, ハムエケシコヌヤ, ケヤソ %ld (セ蠖、ケ、、ヒ、マ 'fenc' 、カ、ヒ、キ、ニ、ッ、タ、オ"
+"、、)"
+
 msgid "E514: write error (file system full?)"
 msgstr "E514: スケ、゚・ィ・鬘シ, (・ユ・。・、・・キ・ケ・ニ・爨ャヒヌユ?)"
 
 msgid " CONVERSION ERROR"
 msgstr " ハムエケ・ィ・鬘シ"
 
+#, c-format
+msgid " in line %ld;"
+msgstr "ケヤ %ld;"
+
 msgid "[Device]"
 msgstr "[・ヌ・ミ・、・ケ]"
 
@@ -1702,6 +1797,11 @@ msgid "1 character"
 msgstr "1 ハクサ"
 
 #, c-format
+msgid "%lld characters"
+msgstr "%lld ハクサ"
+
+#. Explicit typecast avoids warning on Mac OS X 10.6
+#, c-format
 msgid "%ld characters"
 msgstr "%ld ハクサ"
 
@@ -1945,9 +2045,6 @@ msgstr "Vim ・タ・、・「・・ー"
 msgid "E232: Cannot create BalloonEval with both message and callback"
 msgstr "E232: ・皈テ・サ。シ・ク、ネ・ウ。シ・・ミ・テ・ッ、ホ、「、 BalloonEval 、コタョ、ヌ、ュ、゙、サ、"
 
-msgid "Vim dialog..."
-msgstr "Vim ・タ・、・「・・ー..."
-
 msgid ""
 "&Yes\n"
 "&No\n"
@@ -1990,12 +2087,15 @@ msgstr "セ"
 msgid "Down"
 msgstr "イシ"
 
+#. 'Find Next' button
 msgid "Find Next"
 msgstr "シ。、ク。コ"
 
+#. 'Replace' button
 msgid "Replace"
 msgstr "テヨエケ"
 
+#. 'Replace All' button
 msgid "Replace All"
 msgstr "チエ、ニテヨエケ"
 
@@ -2014,12 +2114,6 @@ msgstr "・ソ・ヨ・レ。シ・ク、ウォ、ッ..."
 msgid "Vim: Main window unexpectedly destroyed\n"
 msgstr "Vim: ・皈、・・ヲ・」・・ノ・ヲ、ャノヤーユ、ヒヌヒイ、オ、、゙、キ、ソ\n"
 
-msgid "Font Selection"
-msgstr "・ユ・ゥ・・ネチェツ"
-
-msgid "Used CUT_BUFFER0 instead of empty selection"
-msgstr "カ、ホチェツホホー隍ホ、ォ、、熙ヒCUT_BUFFER0、ャサネヘム、オ、、゙、キ、ソ"
-
 msgid "&Filter"
 msgstr "・ユ・」・・ソ(&F)"
 
@@ -2348,19 +2442,40 @@ msgid "E567: no cscope connections"
 msgstr "E567: cscopeタワツウ、ヒシコヌヤ、キ、゙、キ、ソ"
 
 #, c-format
+msgid "E469: invalid cscopequickfix flag %c for %c"
+msgstr "E469: フオク、ハ cscopequickfix ・ユ・鬣ー %c 、ホ %c 、ヌ、ケ"
+
+#, c-format
 msgid "E259: no matches found for cscope query %s of %s"
 msgstr "E259: cscope・ッ・ィ・遙シ %s of %s 、ヒウコナ、ャ、「、熙゙、サ、、ヌ、キ、ソ"
 
-#, c-format
-msgid "E469: invalid cscopequickfix flag %c for %c"
-msgstr "E469: フオク、ハ cscopequickfix ・ユ・鬣ー %c 、ホ %c 、ヌ、ケ"
-
 msgid "cscope commands:\n"
 msgstr "cscope・ウ・゙・・ノ:\n"
 
 #, c-format
-msgid "%-5s: %-30s (Usage: %s)"
-msgstr "%-5s: %-30s (サネヘムヒ。: %s)"
+msgid "%-5s: %s%*s (Usage: %s)"
+msgstr "%-5s: %s%*s (サネヘムヒ。: %s)"
+
+msgid ""
+"\n"
+"       c: Find functions calling this function\n"
+"       d: Find functions called by this function\n"
+"       e: Find this egrep pattern\n"
+"       f: Find this file\n"
+"       g: Find this definition\n"
+"       i: Find files #including this file\n"
+"       s: Find this C symbol\n"
+"       t: Find this text string\n"
+msgstr ""
+"\n"
+"       c: 、ウ、ホエリソ、クニ、、ヌ、、、エリソ、テオ、ケ\n"
+"       d: 、ウ、ホエリソ、ォ、鮑ニ、、ヌ、、、エリソ、テオ、ケ\n"
+"       e: 、ウ、ホegrep・ム・ソ。シ・、テオ、ケ\n"
+"       f: 、ウ、ホ・ユ・。・、・、テオ、ケ\n"
+"       g: 、ウ、ホトオチ、テオ、ケ\n"
+"       i: 、ウ、ホ・ユ・。・、・、#include、キ、ニ、、、・ユ・。・、・、テオ、ケ\n"
+"       s: 、ウ、ホC・キ・・ワ・、テオ、ケ\n"
+"       t: 、ウ、ホ・ニ・ュ・ケ・ネハクサホ、テオ、ケ\n"
 
 #, c-format
 msgid "E625: cannot open cscope database: %s"
@@ -2372,9 +2487,6 @@ msgstr "E626: cscope・ヌ。シ・ソ・ル。シ・ケ、ホセハ、シ霹タ、ヌ、ュ、゙、サ、"
 msgid "E568: duplicate cscope database not added"
 msgstr "E568: スナハ」、ケ、cscope・ヌ。シ・ソ・ル。シ・ケ、マトノイテ、オ、、゙、サ、、ヌ、キ、ソ"
 
-msgid "E569: maximum number of cscope connections reached"
-msgstr "E569: cscopeタワツウ、ホコヌツ鄙、ヒテ」、キ、゙、キ、ソ"
-
 #, c-format
 msgid "E261: cscope connection %s not found"
 msgstr "E261: cscopeタワツウ %s 、ャ、゚、ト、ォ、熙゙、サ、、ヌ、キ、ソ"
@@ -2414,12 +2526,16 @@ msgstr "cscopeタワツウ、ャ、「、熙゙、サ、\n"
 msgid " # pid    database name                       prepend path\n"
 msgstr " # pid    ・ヌ。シ・ソ・ル。シ・ケフセ                      prepend ・ム・ケ\n"
 
+msgid "Lua library cannot be loaded."
+msgstr "Lua・鬣、・ヨ・鬣熙・。シ・ノ、ヌ、ュ、゙、サ、."
+
+msgid "cannot save undo information"
+msgstr "・「・・ノ・・セハ、ャハンツク、ヌ、ュ、゙、サ、"
+
 msgid ""
-"???: Sorry, this command is disabled, the MzScheme library could not be "
+"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
 "loaded."
-msgstr ""
-"???: 、ウ、ホ・ウ・゙・・ノ、マフオク、ヌ、ケ, 、エ、皃、ハ、オ、、: MzScheme ・鬣、・ヨ・鬣熙・。シ・ノ、ヌ、ュ、゙"
-"、サ、、ヌ、キ、ソ."
+msgstr "E815: 、ウ、ホ・ウ・゙・・ノ、マフオク、ヌ、ケ. MzScheme ・鬣、・ヨ・鬣熙・。シ・ノ、ヌ、ュ、゙、サ、."
 
 msgid "invalid expression"
 msgstr "フオク、ハシー、ヌ、ケ"
@@ -2439,9 +2555,6 @@ msgstr "ネマーマウー、ホ・ヲ・」・・ノ・ヲネヨケ讀ヌ、ケ"
 msgid "couldn't open buffer"
 msgstr "・ミ・テ・ユ・。、ウォ、ア、゙、サ、"
 
-msgid "cannot save undo information"
-msgstr "・「・・ノ・・セハ、ャハンツク、ヌ、ュ、゙、サ、"
-
 msgid "cannot delete line"
 msgstr "ケヤ、セテ、サ、゙、サ、"
 
@@ -2472,6 +2585,22 @@ msgstr "ネマーマウー、ホケヤネヨケ讀ヌ、ケ"
 msgid "not allowed in the Vim sandbox"
 msgstr "・オ・・ノ・ワ・テ・ッ・ケ、ヌ、マオ、オ、、゙、サ、"
 
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: ・鬣、・ヨ・鬣 %s 、・。シ・ノ、ヌ、ュ、゙、サ、、ヌ、キ、ソ"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"、ウ、ホ・ウ・゙・・ノ、マフオク、ヌ、ケ, 、エ、皃、ハ、オ、、: Perl・鬣、・ヨ・鬣熙・。シ・ノ、ヌ、ュ、゙、サ、、ヌ、キ、ソ."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: ・オ・・ノ・ワ・テ・ッ・ケ、ヌ、マ Safe ・筵ク・蝪シ・、サネヘム、キ、ハ、、Perl・ケ・ッ・・ラ・ネ、マカリ、ク、鬢"
+"、ニ、、、゙、ケ"
+
+msgid "E836: This Vim cannot execute :python after using :py3"
+msgstr "E836: 、ウ、ホVim、ヌ、マ :py3 、サネ、テ、ソク螟ヒ :python 、サネ、ィ、゙、サ、"
+
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
@@ -2492,51 +2621,12 @@ msgstr "softspace 、マ integer 、ヌ、ハ、ア、、ミ、ハ、熙゙、サ、"
 msgid "invalid attribute"
 msgstr "フオク、ハツータュ、ヌ、ケ"
 
-msgid "writelines() requires list of strings"
-msgstr "writelines() 、ヒ、マハクサホ、ホ・・ケ・ネ、ャノャヘラ、ヌ、ケ"
-
-msgid "E264: Python: Error initialising I/O objects"
-msgstr "E264: Python: I/O・ェ・ヨ・ク・ァ・ッ・ネ、ホス魘イステ讀ヒ・ィ・鬘シ、ヌ、ケ"
-
-msgid "attempt to refer to deleted buffer"
-msgstr "セテ、オ、、ソ・ミ・テ・ユ・。、ャサイセネ、オ、、゙、キ、ソ"
-
-msgid "line number out of range"
-msgstr "ネマーマウー、ホケヤネヨケ讀ヌ、ケ"
-
-#, c-format
-msgid "<buffer object (deleted) at %8lX>"
-msgstr "<・ミ・テ・ユ・。・ェ・ヨ・ク・ァ・ッ・ネ (セテオコム、゚) %8lX>"
-
-msgid "invalid mark name"
-msgstr "フオク、ハ・゙。シ・ッフセ、ヌ、ケ"
-
-msgid "no such buffer"
-msgstr "、ス、ホ、隍ヲ、ハ・ミ・テ・ユ・。、マ、「、熙゙、サ、"
-
-msgid "attempt to refer to deleted window"
-msgstr "セテ、オ、、ソ・ヲ・」・・ノ・ヲ、ャサイセネ、オ、、゙、キ、ソ"
-
-msgid "readonly attribute"
-msgstr "ニノケタヘムツータュ"
-
-msgid "cursor position outside buffer"
-msgstr "・ォ。シ・ス・、ャ・ミ・テ・ユ・。、ホウー、ヒ、「、熙゙、ケ"
-
-#, c-format
-msgid "<window object (deleted) at %.8lX>"
-msgstr "<・ヲ・」・・ノ・ヲ・ェ・ヨ・ク・ァ・ッ・ネ (セテオコム) %.8lX>"
-
-#, c-format
-msgid "<window object (unknown) at %.8lX>"
-msgstr "<・ヲ・」・・ノ・ヲ・ェ・ヨ・ク・ァ・ッ・ネ (フ、テホ) %.8lX>"
-
-#, c-format
-msgid "<window %d>"
-msgstr "<・ヲ・」・・ノ・ヲ %d>"
-
-msgid "no such window"
-msgstr "、ス、ホ、隍ヲ、ハ・ヲ・」・・ノ・ヲ、マ、「、熙゙、サ、"
+#, c-format
+msgid "<buffer object (deleted) at %p>"
+msgstr "<・ミ・テ・ユ・。・ェ・ヨ・ク・ァ・ッ・ネ (セテオコム、゚) %p>"
+
+msgid "E837: This Vim cannot execute :py3 after using :python"
+msgstr "E837: 、ウ、ホVim、ヌ、マ :python 、サネ、テ、ソク螟ヒ :py3 、サネ、ィ、゙、サ、"
 
 msgid "E265: $_ must be an instance of String"
 msgstr "E265: $_ 、マハクサホ、ホ・、・・ケ・ソ・・ケ、ヌ、ハ、ア、、ミ、ハ、熙゙、サ、"
@@ -2668,6 +2758,9 @@ msgstr "、゙、タシツチ、オ、、ニ、、、゙、サ、"
 msgid "cannot set line(s)"
 msgstr "ケヤ、タ゚ト熙ヌ、ュ、゙、サ、"
 
+msgid "invalid mark name"
+msgstr "フオク、ハ・゙。シ・ッフセ、ヌ、ケ"
+
 msgid "mark not set"
 msgstr "・゙。シ・ッ、マタ゚ト熙オ、、ニ、、、゙、サ、"
 
@@ -2678,6 +2771,9 @@ msgstr "ケヤ %d ホ %d"
 msgid "cannot insert/append line"
 msgstr "ケヤ、ホヂニ/トノイテ、、ヌ、ュ、゙、サ、"
 
+msgid "line number out of range"
+msgstr "ネマーマウー、ホケヤネヨケ讀ヌ、ケ"
+
 msgid "unknown flag: "
 msgstr "フ、テホ、ホ・ユ・鬣ー:"
 
@@ -2766,9 +2862,15 @@ msgstr "フオク、ハーソ、ヌ、ケ: "
 msgid "%d files to edit\n"
 msgstr "%d クト、ホ・ユ・。・、・、ャハヤスク、ケオ、ィ、ニ、、、゙、ケ\n"
 
+msgid "netbeans is not supported with this GUI\n"
+msgstr "netbeans 、マ、ウ、ホGUI、ヌ、マヘヘム、ヌ、ュ、゙、サ、\n"
+
 msgid "This Vim was not compiled with the diff feature."
 msgstr "、ウ、ホVim、ヒ、マdiffオ。ヌス、ャ、「、熙゙、サ、(・ウ・・ム・、・サタ゚ト)."
 
+msgid "'-nb' cannot be used: not enabled at compile time\n"
+msgstr "'-nb' サネヘムノヤイトヌス、ヌ、ケ: ・ウ・・ム・、・サ、ヒフオク、ヒ、オ、、ニ、、、゙、ケ\n"
+
 msgid "Attempt to open script file again: \""
 msgstr "・ケ・ッ・・ラ・ネ・ユ・。・、・、コニ、モウォ、、、ニ、゚、゙、ケ: \""
 
@@ -2997,7 +3099,7 @@ msgid "--remote <files>\tEdit <files> in
 msgstr "--remote <files>\tイトヌス、ハ、鬢ミVim・オ。シ・ミ、ヌ <files> 、ハヤスク、ケ、"
 
 msgid "--remote-silent <files>  Same, don't complain if there is no server"
-msgstr "--remote-silnet <files>  ニアセ, ・オ。シ・ミ、ャフオ、ッ、ニ、箙ルケハク、スミホマ、キ、ハ、、"
+msgstr "--remote-silent <files>  ニアセ, ・オ。シ・ミ、ャフオ、ッ、ニ、箙ルケハク、スミホマ、キ、ハ、、"
 
 msgid ""
 "--remote-wait <files>  As --remote but wait for files to have been edited"
@@ -3025,6 +3127,9 @@ msgstr "--serverlist\t\tVim・オ。シ・ミフセ、ホーヘ、ノスシィ、キ、ニスェホサ、ケ、"
 msgid "--servername <name>\tSend to/become the Vim server <name>"
 msgstr "--servename <name>\t\tVim・オ。シ・ミ <name> 、ヒチソョ/フセチータ゚ト熙ケ、"
 
+msgid "--startuptime <file>\tWrite startup timing messages to <file>"
+msgstr "--startuptime <file>\tオッニー、ヒ、ォ、ォ、テ、ソサエヨ、ホセワコル、 <file> 、リスミホマ、ケ、"
+
 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
 msgstr "-i <viminfo>\t\t.viminfo、ホツ螟、熙ヒ <viminfo> 、サネ、ヲ"
 
@@ -3061,12 +3166,6 @@ msgstr "-display <display>\t<display> 、ヌvim、シツケヤ、ケ、"
 msgid "-iconic\t\tStart vim iconified"
 msgstr "-iconic\t\tコヌセョイス、キ、ソセツヨ、ヌvim、オッニー、ケ、"
 
-msgid "-name <name>\t\tUse resource as if vim was <name>"
-msgstr "-name <name>\t\tvim、ホフセ、ャ <name> 、ヌ、「、、ネ、キ、ニ・・ス。シ・ケ、サネ、ヲ"
-
-msgid "\t\t\t  (Unimplemented)\n"
-msgstr "\t\t\t  (シツチ、オ、、ニ、、、ハ、、)\n"
-
 msgid "-background <color>\tUse <color> for the background (also: -bg)"
 msgstr "-background <color>\tヌリキハソァ、ヒ <color> 、サネ、ヲ(ニアオチ: -bg)"
 
@@ -3191,7 +3290,6 @@ msgstr ""
 "\n"
 "ハムケケ   ケヤ    ホ  ・ニ・ュ・ケ・ネ"
 
-#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3200,7 +3298,6 @@ msgstr ""
 "# ・ユ・。・、・・゙。シ・ッ:\n"
 
 #. Write the jumplist with -'
-#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3208,7 +3305,6 @@ msgstr ""
 "\n"
 "# ・ク・罕・ラ・・ケ・ネ (ソキ、キ、、、筅ホ、ャタ):\n"
 
-#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3240,15 +3336,6 @@ msgstr "E288: ・、・・ラ・テ・ネ・皈ス・テ・ノ、マ、ノ、、ハ・ケ・ソ・、・、筵オ・ン。シ・ネ、キ、゙、サ、"
 msgid "E289: input method doesn't support my preedit type"
 msgstr "E289: ・、・・ラ・テ・ネ・皈ス・テ・ノ、マ my preedit type 、・オ・ン。シ・ネ、キ、゙、サ、"
 
-msgid "E290: over-the-spot style requires fontset"
-msgstr "E290: over-the-spot ・ケ・ソ・、・、ヒ、マfontset、ャノャヘラ、ヌ、ケ"
-
-msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled"
-msgstr "E291: GTK+、ャ1.2.3、隍熙篋ナ、、、ホ、ヌ・ケ・ニ。シ・ソ・ケ・ィ・・「、ャフオク、ヌ、ケ"
-
-msgid "E292: Input Method Server is not running"
-msgstr "E292: ・、・・ラ・テ・ネ・皈ス・テ・ノ・オ。シ・ミ 、ャニーコ、キ、ニ、、、゙、サ、"
-
 msgid "E293: block was not locked"
 msgstr "E293: ・ヨ・・テ・ッ、ャ・・テ・ッ、オ、、ニ、、、゙、サ、"
 
@@ -3276,6 +3363,9 @@ msgstr "E298: ・ヨ・・テ・ッ 1 、シ霹タ、ヌ、ュ、゙、サ、?"
 msgid "E298: Didn't get block nr 2?"
 msgstr "E298: ・ヨ・・テ・ッ 2 、シ霹タ、ヌ、ュ、゙、サ、?"
 
+msgid "E843: Error while updating swap file crypt"
+msgstr "E843: ・ケ・・テ・ラ・ユ・。・、・、ホーナケ讀ケケソキテ讀ヒ・ィ・鬘シ、ャネッタク、キ、゙、キ、ソ"
+
 #. could not (re)open the swap file, what can we do????
 msgid "E301: Oops, lost the swap file!!!"
 msgstr "E301: 、ェ、テ、ネ, ・ケ・・テ・ラ・ユ・。・、・、ャシコ、、、゙、キ、ソ!!!"
@@ -3334,6 +3424,12 @@ msgstr ""
 ",\n"
 "、筅キ、ッ、マ・ユ・。・、・、ャツサス、キ、ニ、、、゙、ケ."
 
+#, c-format
+msgid ""
+"E833: %s is encrypted and this version of Vim does not support encryption"
+msgstr ""
+"E833: %s 、マ、ウ、ホ・ミ。シ・ク・逾、ホVim、ヌ・オ・ン。シ・ネ、キ、ニ、、、ハ、、キチシー、ヌーナケ豐ス、オ、、ニ、、、゙、ケ"
+
 msgid " has been damaged (page size is smaller than minimum value).\n"
 msgstr " 、マツサス、キ、ニ、、、゙、ケ (・レ。シ・ク・オ・、・コ、ャコヌセョテヘ、イシイ、テ、ニ、、、゙、ケ).\n"
 
@@ -3349,6 +3445,38 @@ msgid "E308: Warning: Original file may 
 msgstr "E308: キルケ: クカヒワ・ユ・。・、・、ャハムケケ、オ、、ニ、、、゙、ケ"
 
 #, c-format
+msgid "Swap file is encrypted: \"%s\""
+msgstr "・ケ・・テ・ラ・ユ・。・、・、マーナケ豐ス、オ、、ニ、、、゙、ケ: \"%s\""
+
+msgid ""
+"\n"
+"If you entered a new crypt key but did not write the text file,"
+msgstr ""
+"\n"
+"ソキ、キ、、ーナケ讌ュ。シ、ニホマ、キ、ソ、「、ネ、ヒ・ニ・ュ・ケ・ネ・ユ・。・、・、ハンツク、キ、ニ、、、ハ、、セケ遉マ,"
+
+msgid ""
+"\n"
+"enter the new crypt key."
+msgstr ""
+"\n"
+"ソキ、キ、、ーナケ讌ュ。シ、ニホマ、キ、ニ、ッ、タ、オ、、."
+
+msgid ""
+"\n"
+"If you wrote the text file after changing the crypt key press enter"
+msgstr ""
+"\n"
+"ーナケ讌ュ。シ、ハム、ィ、ソ、「、ネ、ヒ・ニ・ュ・ケ・ネ・ユ・。・、・、ハンツク、キ、ソセケ遉マ, ・ニ・ュ・ケ・ネ・ユ・。・、・、ネ"
+
+msgid ""
+"\n"
+"to use the same key for text file and swap file"
+msgstr ""
+"\n"
+"・ケ・・テ・ラ・ユ・。・、・、ヒニア、クーナケ讌ュ。シ、サネ、ヲ、ソ、皃ヒenter、タ、ア、イ。、キ、ニ、ッ、タ、オ、、."
+
+#, c-format
 msgid "E309: Unable to read block 1 from %s"
 msgstr "E309: %s 、ォ、鬣ヨ・・テ・ッ 1 、ニノケ、皃゙、サ、"
 
@@ -3401,16 +3529,24 @@ msgstr ""
 "\n"
 "(ハムケケ、・チ・ァ・テ・ッ、ケ、、ソ、皃ヒ, 、ウ、ホ・ユ・。・、・、ハフ、ホフセチー、ヌハンツク、キ、ソセ螟ヌ\n"
 
-msgid "and run diff with the original file to check for changes)\n"
-msgstr "クカヒワ・ユ・。・、・、ネ、ホ diff 、シツケヤ、ケ、、ネホノ、、、ヌ、キ、遉ヲ)\n"
+msgid "and run diff with the original file to check for changes)"
+msgstr "クカヒワ・ユ・。・、・、ネ、ホ diff 、シツケヤ、ケ、、ネホノ、、、ヌ、キ、遉ヲ)"
+
+msgid "Recovery completed. Buffer contents equals file contents."
+msgstr "ノクオエーホサ. ・ミ・テ・ユ・。、ホニ簣ニ、マ・ユ・。・、・、ネニア、ク、ヒ、ハ、熙゙、キ、ソ."
 
 msgid ""
-"Delete the .swp file afterwards.\n"
+"\n"
+"You may want to delete the .swp file now.\n"
 "\n"
 msgstr ""
+"\n"
 "、ス、、ォ、.swp・ユ・。・、・、コス、キ、ニ、ッ、タ、オ、、\n"
 "\n"
 
+msgid "Using crypt key from swap file for the text file.\n"
+msgstr "・ケ・・テ・ラ・ユ・。・、・、ォ、鮠霹タ、キ、ソーナケ讌ュ。シ、・ニ・ュ・ケ・ネ・ユ・。・、・、ヒサネ、、、゙、ケ.\n"
+
 #. use msg() to start the scrolling properly
 msgid "Swap files found:"
 msgstr "・ケ・・テ・ラ・ユ・。・、・、ャハ」ソクォ、ト、ォ、熙゙、キ、ソ:"
@@ -3585,24 +3721,20 @@ msgstr "      ・ケ・・テ・ラ・ユ・。・、・、隍熙篩キ、キ、、、ヌ、ケ!\n"
 #. * other languages.
 msgid ""
 "\n"
-"(1) Another program may be editing the same file.\n"
-"    If this is the case, be careful not to end up with two\n"
-"    different instances of the same file when making changes.\n"
+"(1) Another program may be editing the same file.  If this is the case,\n"
+"    be careful not to end up with two different instances of the same\n"
+"    file when making changes."
 msgstr ""
 "\n"
 "(1) ハフ、ホ・ラ・・ー・鬣爨ャニア、ク・ユ・。・、・、ハヤスク、キ、ニ、、、、ォ、筅キ、、゙、サ、.\n"
 "    、ウ、ホセケ遉ヒ、マ, ハムケケ、、キ、ソコン、ヒコヌスェナェ、ヒ, ニア、ク・ユ・。・、・、ホーロ、ハ、\n"
-"    2、ト、ホ・、・・ケ・ソ・・ケ、ャ、ヌ、ュ、ニ、キ、゙、ヲ、ウ、ネ、ヒテーユ、キ、ニ、ッ、タ、オ、、.\n"
-
-msgid "    Quit, or continue with caution.\n"
-msgstr "    スェホサ、ケ、、ォ, テーユ、キ、ハ、ャ、鯆ウ、ア、゙、ケ.\n"
-
-msgid ""
-"\n"
-"(2) An edit session for this file crashed.\n"
-msgstr ""
-"\n"
-"(2) 、ウ、ホ・ユ・。・、・、ホハヤスク・サ・テ・キ・逾、ャ・ッ・鬣テ・キ・螟キ、ソ.\n"
+"    2、ト、ホ・、・・ケ・ソ・・ケ、ャ、ヌ、ュ、ニ、キ、゙、ヲ、ウ、ネ、ヒテーユ、キ、ニ、ッ、タ、オ、、."
+
+msgid "  Quit, or continue with caution.\n"
+msgstr "  スェホサ、ケ、、ォ, テーユ、キ、ハ、ャ、鯆ウ、ア、ニ、ッ、タ、オ、、.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) 、ウ、ホ・ユ・。・、・、ホハヤスク・サ・テ・キ・逾、ャ・ッ・鬣テ・キ・螟キ、ソ.\n"
 
 msgid "    If this is the case, use \":recover\" or \"vim -r "
 msgstr "    、ウ、ホセケ遉ヒ、マ \":recover\" 、ォ \"vim -r "
@@ -3645,7 +3777,7 @@ msgid ""
 msgstr ""
 "ニノケタヘム、ヌウォ、ッ(&O)\n"
 "、ネ、ヒ、ォ、ッハヤスク、ケ、(&E)\n"
-"ノウ隍オ、サ、(&R)ecover\n"
+"ノウ隍オ、サ、(&R)\n"
 "スェホサ、ケ、(&Q)\n"
 "テ貊゚、ケ、(&A)"
 
@@ -3659,7 +3791,7 @@ msgid ""
 msgstr ""
 "ニノケタヘム、ヌウォ、ッ(&O)\n"
 "、ネ、ヒ、ォ、ッハヤスク、ケ、(&E)\n"
-"ノウ隍オ、サ、(&R)ecover\n"
+"ノウ隍オ、サ、(&R)\n"
 "コス、ケ、(&D)\n"
 "スェホサ、ケ、(&Q)\n"
 "テ貊゚、ケ、(&A)"
@@ -3789,17 +3921,21 @@ msgstr "E338: ・ウ・・ス。シ・・筍シ・ノ、ヌ、マ・ユ・。・、・・ヨ・鬣ヲ・カ、サネ、ィ、゙、サ、, 、エ、皃、ハ、オ、、"
 msgid "E766: Insufficient arguments for printf()"
 msgstr "E766: printf() 、ホーソ、ャノヤススハャ、ヌ、ケ"
 
+msgid "E807: Expected Float argument for printf()"
+msgstr "E807: printf() 、ホーソ、ヒ、マノ簇ーセッソ、ャエツヤ、オ、、ニ、、、゙、ケ"
+
 msgid "E767: Too many arguments to printf()"
 msgstr "E767: pirntf() 、ホーソ、ャツソイ皃ョ、゙、ケ"
 
 msgid "W10: Warning: Changing a readonly file"
 msgstr "W10: キルケ: ニノケタヘム・ユ・。・、・、ハムケケ、キ、゙、ケ"
 
-msgid "Type number or click with mouse (<Enter> cancels): "
-msgstr "ソテヘ、ニホマ、ケ、、ォ・゙・ヲ・ケ、・ッ・・テ・ッ、キ、ニ、ッ、タ、オ、、 (<Enter> 、ヌ・ュ・罕・サ・): "
-
-msgid "Choice number (<Enter> cancels): "
-msgstr "ネヨケ讀チェツ、キ、ニ、ッ、タ、オ、、 (<Enter> 、ヌ・ュ・罕・サ・): "
+msgid "Type number and <Enter> or click with mouse (empty cancels): "
+msgstr ""
+"ネヨケ讀ネ<Enter>、ニホマ、ケ、、ォ・゙・ヲ・ケ、ヌ・ッ・・テ・ッ、キ、ニ、ッ、タ、オ、、 (カ、ヌ・ュ・罕・サ・): "
+
+msgid "Type number and <Enter> (empty cancels): "
+msgstr "ネヨケ讀ネ<Enter>、ニホマ、キ、ニ、ッ、タ、オ、、 (カ、ヌ・ュ・罕・サ・): "
 
 msgid "1 more line"
 msgstr "1 ケヤ トノイテ、キ、゙、キ、ソ"
@@ -3828,7 +3964,6 @@ msgstr "Vim: ・ユ・。・、・、ハンツクテ...\n"
 msgid "Vim: Finished.\n"
 msgstr "Vim: スェホサ、キ、゙、キ、ソ.\n"
 
-#, c-format
 msgid "ERROR: "
 msgstr "・ィ・鬘シ: "
 
@@ -3911,7 +4046,6 @@ msgstr "E346: cdpath、ヒ、マ、ウ、ーハセ \"%s\" 、ネ、、、ヲ・ユ・。・、・、ャ、「、熙゙、サ、"
 msgid "E347: No more file \"%s\" found in path"
 msgstr "E347: ・ム・ケ、ヒ、マ、ウ、ーハセ \"%s\" 、ネ、、、ヲ・ユ・。・、・、ャ、「、熙゙、サ、"
 
-#. Get here when the server can't be found.
 msgid "Cannot connect to Netbeans #2"
 msgstr "Netbeans #2 、ヒタワツウ、ヌ、ュ、゙、サ、"
 
@@ -3930,9 +4064,18 @@ msgstr "Netbeans 、ホ・ス・ア・テ・ネ、ニノケ、゚"
 msgid "E658: NetBeans connection lost for buffer %ld"
 msgstr "E658: ・ミ・テ・ユ・。 %ld 、ホ NetBeans タワツウ、ャシコ、、、゙、キ、ソ"
 
+msgid "E838: netbeans is not supported with this GUI"
+msgstr "E838: NetBeans、マ、ウ、ホGUI、ヒ、マツミア、キ、ニ、、、゙、サ、"
+
+msgid "E511: netbeans already connected"
+msgstr "E511: NetBeans、マエ、ヒタワツウ、キ、ニ、、、゙、ケ"
+
 msgid "E505: "
 msgstr "E505: "
 
+msgid "E349: No identifier under cursor"
+msgstr "E349: ・ォ。シ・ス・、ホーフテヨ、ヒ、マシアハフサメ、ャ、「、熙゙、サ、"
+
 msgid "E774: 'operatorfunc' is empty"
 msgstr "E774: 'operatorfunc' ・ェ・ラ・キ・逾、ャカ、ヌ、ケ"
 
@@ -3945,9 +4088,6 @@ msgstr "キルケ: サネヘム、キ、ニ、、、テシヒ、マ・マ・、・鬣、・ネ、ヌ、ュ、゙、サ、"
 msgid "E348: No string under cursor"
 msgstr "E348: ・ォ。シ・ス・、ホーフテヨ、ヒ、マハクサホ、ャ、「、熙゙、サ、"
 
-msgid "E349: No identifier under cursor"
-msgstr "E349: ・ォ。シ・ス・、ホーフテヨ、ヒ、マシアハフサメ、ャ、「、熙゙、サ、"
-
 msgid "E352: Cannot erase folds with current 'foldmethod'"
 msgstr "E352: クスコ゚、ホ 'foldmethod' 、ヌ、マダセ、゚、セテオ、ヌ、ュ、゙、サ、"
 
@@ -4037,7 +4177,6 @@ msgstr ""
 msgid "Illegal register name"
 msgstr "ノヤタオ、ハ・・ク・ケ・ソフセ"
 
-#, c-format
 msgid ""
 "\n"
 "# Registers:\n"
@@ -4055,7 +4194,7 @@ msgstr "%ld ホ; "
 
 #, c-format
 msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"
-msgstr "チェツ %s%ld / %ld ケヤ; %ld / %ld テアク; %ld / %ld ハクサ"
+msgstr "チェツ %s%ld / %ld ケヤ; %ld / %ld テアク; %ld / %ld ・ミ・、・ネ"
 
 #, c-format
 msgid ""
@@ -4065,7 +4204,7 @@ msgstr "チェツ %s%ld / %ld ケヤ; %ld / %ld テアク; %ld / %ld ハクサ; %ld / %ld ・ミ・、・ネ"
 
 #, c-format
 msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"
-msgstr "ホ %s / %s; ケヤ %ld of %ld; テアク %ld / %ld; ハクサ %ld / %ld"
+msgstr "ホ %s / %s; ケヤ %ld of %ld; テアク %ld / %ld; ・ミ・、・ネ %ld / %ld"
 
 #, c-format
 msgid ""
@@ -4093,6 +4232,9 @@ msgstr "E519: ・ェ・ラ・キ・逾、マ・オ・ン。シ・ネ、オ、、ニ、、、゙、サ、"
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: modeline 、ヌ、マオイト、オ、、゙、サ、"
 
+msgid "E846: Key code not set"
+msgstr "E846: ・ュ。シ・ウ。シ・ノ、ャタ゚ト熙オ、、ニ、、、゙、サ、"
+
 msgid "E521: Number required after ="
 msgstr "E521: = 、ホク螟ヒ、マソサ、ャノャヘラ、ヌ、ケ"
 
@@ -4115,6 +4257,12 @@ msgstr "E531: GUI、・ケ・ソ。シ・ネ、ケ、、ヒ、マ \":gui\" 、サネヘム、キ、ニ、ッ、タ、オ、、"
 msgid "E589: 'backupext' and 'patchmode' are equal"
 msgstr "E589: 'backupext' 、ネ 'patchmode' 、ャニア、ク、ヌ、ケ"
 
+msgid "E834: Conflicts with value of 'listchars'"
+msgstr "E834: 'listchars'、ホテヘ、ヒフキス筅ャ、「、熙゙、ケ"
+
+msgid "E835: Conflicts with value of 'fillchars'"
+msgstr "E835: 'fillchars'、ホテヘ、ヒフキス筅ャ、「、熙゙、ケ"
+
 msgid "E617: Cannot be changed in the GTK+ 2 GUI"
 msgstr "E617: GTK+2 GUI、ヌ、マハムケケ、ヌ、ュ、゙、サ、"
 
@@ -4527,6 +4675,9 @@ msgstr "・ィ・鬘シーヘ %d of %d; %d クト・ィ・鬘シ"
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: 'buftype' ・ェ・ラ・キ・逾、ャタ゚ト熙オ、、ニ、、、、ホ、ヌスケ、゚、゙、サ、"
 
+msgid "Error file"
+msgstr "・ィ・鬘シ・ユ・。・、・"
+
 msgid "E683: File name missing or invalid pattern"
 msgstr "E683: ・ユ・。・、・フセ、ャフオ、、、ォフオク、ハ・ム・ソ。シ・、ヌ、ケ"
 
@@ -4751,6 +4902,9 @@ msgstr "E388: トオチ、、゚、ト、ア、鬢、゙、サ、"
 msgid "E389: Couldn't find pattern"
 msgstr "E389: ・ム・ソ。シ・、、゚、ト、ア、鬢、゙、サ、"
 
+msgid "Substitute "
+msgstr "Substitute "
+
 #, c-format
 msgid ""
 "\n"
@@ -4789,6 +4943,11 @@ msgid "E756: Spell checking is not enabl
 msgstr "E756: ・ケ・レ・・チ・ァ・テ・ッ、マフオクイス、オ、、ニ、、、゙、ケ"
 
 #, c-format
+msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""
+msgstr ""
+"キルケ: テアク・・ケ・ネ \"%s_%s.spl\" 、ェ、隍モ \"%s_ascii.spl\" 、マクォ、ト、ォ、熙゙、サ、"
+
+#, c-format
 msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
 msgstr ""
 "キルケ: テアク・・ケ・ネ \"%s.%s.spl\" 、ェ、隍モ \"%s.ascii.spl\" 、マクォ、ト、ォ、熙゙、サ、"
@@ -4854,6 +5013,10 @@ msgstr ""
 "、ウ、ネ、ャ、「、熙゙、ケ"
 
 #, c-format
+msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
+msgstr "COMPOUNDRULES 、ホテヘ、ヒク、熙ャ、「、熙゙、ケ. ・ユ・。・、・ %s 、ホ %d ケヤフワ: %s"
+
+#, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
 msgstr "%s 、ホ %d ケヤフワ、ホ COMPOUNDWORDMAX 、ホテヘ、ヒク、熙ャ、「、熙゙、ケ: %s"
 
@@ -5010,6 +5173,9 @@ msgstr "%s 、ホ %d ケヤフワ ヌァシアノヤヌス、ハ・ユ・鬣ー、ヌ、ケ: %s"
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "ネASCIIハクサ、エ゙、 %d クト、ホテアク、フオサ、キ、゙、キ、ソ"
 
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: ・皈筵熙ャツュ、熙ハ、、、ホ、ヌ。「テアク・・ケ・ネ、マノヤエーチエ、ヌ、ケ"
+
 #, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "・ホ。シ・ノ %d クト(チエ %d クトテ) 、ーオスフ、キ、゙、キ、ソ; サト、 %d (%d%%)"
@@ -5187,8 +5353,8 @@ msgstr " クト、ホイケヤ"
 msgid "E395: contains argument not accepted here"
 msgstr "E395: 、ウ、ホセス熙ヌ、マーソcontains、マオイト、オ、、ニ、、、゙、サ、"
 
-msgid "E396: containedin argument not accepted here"
-msgstr "E396: 、ウ、ホセス熙ヌ、マーソcontainedin、マオイト、オ、、ニ、、、゙、サ、"
+msgid "E844: invalid cchar value"
+msgstr "E844: フオク、ハcchar、ホテヘ、ヌ、ケ"
 
 msgid "E393: group[t]here not accepted here"
 msgstr "E393: 、ウ、ウ、ヌ、マ・ー・。シ・ラ、マオイト、オ、、゙、サ、"
@@ -5391,12 +5557,19 @@ msgstr "E432: ・ソ・ー・ユ・。・、・、ャ・ス。シ・ネ、オ、、ニ、、、゙、サ、: %s"
 msgid "E433: No tags file"
 msgstr "E433: ・ソ・ー・ユ・。・、・、ャ、「、熙゙、サ、"
 
+msgid "Ignoring long line in tags file"
+msgstr "・ソ・ー・ユ・。・、・ニ筅ホトケ、、ケヤ、フオサ、キ、゙、ケ"
+
 msgid "E434: Can't find tag pattern"
 msgstr "E434: ・ソ・ー・ム・ソ。シ・、、゚、ト、ア、鬢、゙、サ、"
 
 msgid "E435: Couldn't find tag, just guessing!"
 msgstr "E435: ・ソ・ー、、゚、ト、ア、鬢、ハ、、、ホ、ヌテア、ヒソ萃ャ、キ、゙、ケ!"
 
+#, c-format
+msgid "Duplicate field name: %s"
+msgstr "スナハ」、キ、ソ・ユ・」。シ・・ノフセ: %s"
+
 msgid "' not known. Available builtin terminals are:"
 msgstr "' 、マフ、テホ、ヌ、ケ. クスケヤ、ホチネ、゚ケ、゚テシヒ、マシ。、ホ、ネ、ェ、熙ヌ、ケ:"
 
@@ -5433,10 +5606,87 @@ msgstr "ソキ、キ、、・キ・ァ・、オッニー、キ、゙、ケ\n"
 msgid "Vim: Error reading input, exiting...\n"
 msgstr "Vim: ニホマ、ニノケ、゚テ讀ホ・ィ・鬘シ、ヒ、隍スェホサ、キ、゙、ケ...\n"
 
+msgid "Used CUT_BUFFER0 instead of empty selection"
+msgstr "カ、ホチェツホホー隍ホ、ォ、、熙ヒCUT_BUFFER0、ャサネヘム、オ、、゙、キ、ソ"
+
+#. This happens when the FileChangedRO autocommand changes the
+#. * file in a way it becomes shorter.
+msgid "E834: Line count changed unexpectedly"
+msgstr "E834: ヘスエ、サ、コケヤ・ォ・ヲ・・ネ、ャハム、、熙゙、キ、ソ"
+
 #. must display the prompt
 msgid "No undo possible; continue anyway"
 msgstr "イトヌス、ハ・「・・ノ・・、マ、「、熙゙、サ、: 、ネ、熙「、ィ、コツウ、ア、゙、ケ"
 
+#, c-format
+msgid "E828: Cannot open undo file for writing: %s"
+msgstr "E828: スケ、゚ヘム、ヒ・「・・ノ・・・ユ・。・、・、ウォ、ア、゙、サ、: %s"
+
+#, c-format
+msgid "E825: Corrupted undo file (%s): %s"
+msgstr "E825: ・「・・ノ・・・ユ・。・、・、ャイ、、ニ、、、゙、ケ (%s): %s"
+
+msgid "Cannot write undo file in any directory in 'undodir'"
+msgstr "'undodir'、ホ・ヌ・」・・ッ・ネ・熙ヒ・「・・ノ・・・ユ・。・、・、ス、ュケ、皃゙、サ、"
+
+#, c-format
+msgid "Will not overwrite with undo file, cannot read: %s"
+msgstr "・「・・ノ・・・ユ・。・、・、ネ、キ、ニニノ、゚ケ、皃ハ、、、ホ、ヌセ蠖、ュ、キ、゙、サ、: %s"
+
+#, c-format
+msgid "Will not overwrite, this is not an undo file: %s"
+msgstr "・「・・ノ・・・ユ・。・、・、ヌ、マ、ハ、、、ホ、ヌセ蠖、ュ、キ、゙、サ、: %s"
+
+msgid "Skipping undo file write, nothing to undo"
+msgstr "ツミセン、ャ、ハ、、、ホ、ヌ・「・・ノ・・・ユ・。・、・、ホス、ュケ、゚、・ケ・ュ・テ・ラ、キ、゙、ケ"
+
+#, c-format
+msgid "Writing undo file: %s"
+msgstr "・「・・ノ・・・ユ・。・、・ス、ュケ、゚テ: %s"
+
+#, c-format
+msgid "E829: write error in undo file: %s"
+msgstr "E829: ・「・・ノ・・・ユ・。・、・、ホス、ュケ、゚・ィ・鬘シ、ヌ、ケ: %s"
+
+#, c-format
+msgid "Not reading undo file, owner differs: %s"
+msgstr "・ェ。シ・ハ。シ、ャーロ、ハ、、ホ、ヌ・「・・ノ・・・ユ・。・、・、ニノ、゚ケ、゚、゙、サ、: %s"
+
+#, c-format
+msgid "Reading undo file: %s"
+msgstr "・「・・ノ・・・ユ・。・、・ニノケテ: %s"
+
+#, c-format
+msgid "E822: Cannot open undo file for reading: %s"
+msgstr "E822: ・「・・ノ・・・ユ・。・、・、ニノケヘム、ネ、キ、ニウォ、ア、゙、サ、: %s"
+
+#, c-format
+msgid "E823: Not an undo file: %s"
+msgstr "E823: ・「・・ノ・・・ユ・。・、・、ヌ、マ、「、熙゙、サ、: %s"
+
+#, c-format
+msgid "E832: Non-encrypted file has encrypted undo file: %s"
+msgstr "E832: ネーナケ豐ス・ユ・。・、・、ャーナケ豐ス、オ、、ソ・「・・ノ・・・ユ・。・、・、サネ、テ、ニ、゙、ケ: %s"
+
+#, c-format
+msgid "E826: Undo file decryption failed: %s"
+msgstr "E826: ーナケ豐ス、オ、、ソ・「・・ノ・・・ユ・。・、・、ホイニノ、ヒシコヌヤ、キ、゙、キ、ソ: %s"
+
+#, c-format
+msgid "E827: Undo file is encrypted: %s"
+msgstr "E827: ・「・・ノ・・・ユ・。・、・、ャーナケ豐ス、オ、、ニ、、、゙、ケ: %s"
+
+#, c-format
+msgid "E824: Incompatible undo file: %s"
+msgstr "E824: ク゚エケタュ、ホフオ、、・「・・ノ・・・ユ・。・、・、ヌ、ケ: %s"
+
+msgid "File contents changed, cannot use undo info"
+msgstr "・ユ・。・、・、ホニ簣ニ、ャハム、、テ、ニ、、、、ソ、癸「・「・・ノ・・セハ、ヘヘム、ヌ、ュ、゙、サ、"
+
+#, c-format
+msgid "Finished reading undo file %s"
+msgstr "・「・・ノ・・・ユ・。・、・ %s 、ホシ雹、エーホサ"
+
 msgid "Already at oldest change"
 msgstr "エ、ヒーネヨクナ、、ハムケケ、ヌ、ケ"
 
@@ -5444,8 +5694,8 @@ msgid "Already at newest change"
 msgstr "エ、ヒーネヨソキ、キ、、ハムケケ、ヌ、ケ"
 
 #, c-format
-msgid "Undo number %ld not found"
-msgstr "・「・・ノ・・ネヨケ %ld 、ャ、゚、ト、ォ、熙゙、サ、"
+msgid "E830: Undo number %ld not found"
+msgstr "E830: ・「・・ノ・・ネヨケ %ld 、マ、゚、ト、ォ、熙゙、サ、"
 
 msgid "E438: u_undo: line numbers wrong"
 msgstr "E438: u_undo: ケヤネヨケ讀ャエヨー网テ、ニ、、、゙、ケ"
@@ -5481,8 +5731,8 @@ msgstr "ク衞"
 msgid "Nothing to undo"
 msgstr "・「・・ノ・・ツミセン、ャ、「、熙゙、サ、"
 
-msgid "number changes  time"
-msgstr "ネヨケ   ハムケケ     サケ"
+msgid "number changes  when               saved"
+msgstr "トフネヨ   ハムケケソ   ハムケケサエ           ハンツクコム"
 
 #, c-format
 msgid "%ld seconds ago"
@@ -5527,6 +5777,13 @@ msgstr " with OLE ・オ・ン。シ・ネ"
 
 msgid ""
 "\n"
+"MS-Windows 64-bit console version"
+msgstr ""
+"\n"
+"MS-Windows 64 ・モ・テ・ネ ・ウ・・ス。シ・ ネヌ"
+
+msgid ""
+"\n"
 "MS-Windows 32-bit console version"
 msgstr ""
 "\n"
@@ -5583,11 +5840,25 @@ msgstr ""
 
 msgid ""
 "\n"
+"OpenVMS version"
+msgstr ""
+"\n"
+"OpenVMS ネヌ"
+
+msgid ""
+"\n"
 "Included patches: "
 msgstr ""
 "\n"
 "ナャヘムコム・ム・テ・チ: "
 
+msgid ""
+"\n"
+"Extra patches: "
+msgstr ""
+"\n"
+"トノイテウネト・・ム・テ・チ: "
+
 msgid "Modified by "
 msgstr "Modified by "
 
@@ -5642,15 +5913,9 @@ msgstr "without GUI."
 msgid "with GTK2-GNOME GUI."
 msgstr "with GTK2-GNOME GUI."
 
-msgid "with GTK-GNOME GUI."
-msgstr "with GTK-GNOME GUI."
-
 msgid "with GTK2 GUI."
 msgstr "with GTK2 GUI."
 
-msgid "with GTK GUI."
-msgstr "with GTK GUI."
-
 msgid "with X11-Motif GUI."
 msgstr "with X11-Motif GUI."
 
@@ -5819,6 +6084,12 @@ msgstr "E443: ツセ、ホ・ヲ・」・・ノ・ヲ、ャハャウ荀オ、、ニ、、、サ、ヒ、マス邊、ヌ、ュ、゙、サ、"
 msgid "E444: Cannot close last window"
 msgstr "E444: コヌク螟ホ・ヲ・」・・ノ・ヲ、ハト、ク、、ウ、ネ、マ、ヌ、ュ、゙、サ、"
 
+msgid "E813: Cannot close autocmd window"
+msgstr "E813: autocmd・ヲ・」・・ノ・ヲ、マハト、ク、鬢、゙、サ、"
+
+msgid "E814: Cannot close window, only autocmd window would remain"
+msgstr "E814: autocmd・ヲ・」・・ノ・ヲ、キ、ォサト、鬢ハ、、、ソ、癸「・ヲ・」・・ノ・ヲ、マハト、ク、鬢、゙、サ、"
+
 msgid "E445: Other window contains changes"
 msgstr "E445: ツセ、ホ・ヲ・」・・ノ・ヲ、ヒ、マハムケケ、ャ、「、熙゙、ケ"
 
@@ -5829,19 +6100,6 @@ msgstr "E446: ・ォ。シ・ス・、ホイシ、ヒ・ユ・。・、・フセ、ャ、「、熙゙、サ、"
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: path、ヒ、マ \"%s\" 、ネ、、、ヲ・ユ・。・、・、ャ、「、熙゙、サ、"
 
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: ・鬣、・ヨ・鬣 %s 、・。シ・ノ、ヌ、ュ、゙、サ、、ヌ、キ、ソ"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"、ウ、ホ・ウ・゙・・ノ、マフオク、ヌ、ケ, 、エ、皃、ハ、オ、、: Perl・鬣、・ヨ・鬣熙・。シ・ノ、ヌ、ュ、゙、サ、、ヌ、キ、ソ."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: ・オ・・ノ・ワ・テ・ッ・ケ、ヌ、マ Safe ・筵ク・蝪シ・、サネヘム、キ、ハ、、Perl・ケ・ッ・・ラ・ネ、マカリ、ク、鬢"
-"、ニ、、、゙、ケ"
-
 msgid "Edit with &multiple Vims"
 msgstr "ハ」ソ、ホVim、ヌハヤスク、ケ、 (&M)"
 
@@ -6210,3 +6468,43 @@ msgstr "セ螟゙、ヌク。コ、キ、ソ、ホ、ヌイシ、ヒフ皃熙゙、ケ"
 
 msgid "search hit BOTTOM, continuing at TOP"
 msgstr "イシ、゙、ヌク。コ、キ、ソ、ホ、ヌセ螟ヒフ皃熙゙、ケ"
+
+#, c-format
+msgid "Need encryption key for \"%s\""
+msgstr "ーナケ讌ュ。シ、ャノャヘラ、ヌ、ケ: \"%s\""
+
+msgid "writelines() requires list of strings"
+msgstr "writelines() 、マハクサホ、ホヌロホ、ヘラオ皃キ、゙、ケ"
+
+msgid "E264: Python: Error initialising I/O objects"
+msgstr "E264: Python: I/O・ェ・ヨ・ク・ァ・ッ・ネ、ホス魘イス・ィ・鬘シ"
+
+msgid "no such buffer"
+msgstr "、ス、ホ、隍ヲ、ハ・ミ・テ・ユ・。、マ、「、熙゙、サ、"
+
+msgid "attempt to refer to deleted window"
+msgstr "コス、オ、、ソ・ヲ・」・・ノ・ヲ、サイセネ、キ、隍ヲ、ネ、キ、゙、キ、ソ"
+
+msgid "readonly attribute"
+msgstr "ニノケタヘムツータュ"
+
+msgid "cursor position outside buffer"
+msgstr "・ォ。シ・ス・、ャ・ミ・テ・ユ・。、ホウー、ヒ、「、熙゙、ケ"
+
+#, c-format
+msgid "<window object (deleted) at %p>"
+msgstr "<・ヲ・」・・ノ・ヲ・ェ・ヨ・ク・ァ・ッ・ネ (セテオコム) %p>"
+
+#, c-format
+msgid "<window object (unknown) at %p>"
+msgstr "<・ヲ・」・・ノ・ヲ・ェ・ヨ・ク・ァ・ッ・ネ (フ、テホ) %p>"
+
+#, c-format
+msgid "<window %d>"
+msgstr "<・ヲ・」・・ノ・ヲ %d>"
+
+msgid "no such window"
+msgstr "、ス、ホ、隍ヲ、ハ・ヲ・」・・ノ・ヲ、マ、「、熙゙、サ、"
+
+msgid "attempt to refer to deleted buffer"
+msgstr "セテ、オ、、ソ・ミ・テ・ユ・。、ャサイセネ、オ、、゙、キ、ソ"
--- a/src/po/ja.sjis.po
+++ b/src/po/ja.sjis.po
@@ -3,21 +3,42 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-8.
-# Last Change: 31-May-2008.
+# MURAOKA Taro <koron.kaoriya@gmail.com>, 2001-11.
+# Last Change: 23-Mar-2011.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: Vim 7.1\n"
+"Project-Id-Version: Vim 7.3\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2008-05-31 22:00+0900\n"
-"PO-Revision-Date: 2008-05-31 22:30+0900\n"
+"POT-Creation-Date: 2011-03-23 20:58+0900\n"
+"PO-Revision-Date: 2011-03-23 21:20+0900\n"
 "Last-Translator: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "Language-Team: MURAOKA Taro <koron.kaoriya@gmail.com>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=cp932\n"
 "Content-Transfer-Encoding: 8-bit\n"
 
+msgid "E831: bf_key_init() called with empty password"
+msgstr "E831: bf_key_init() が空パスワードで呼び出されました"
+
+msgid "E820: sizeof(uint32_t) != 4"
+msgstr "E820: sizeof(uint32_t) != 4"
+
+msgid "E817: Blowfish big/little endian use wrong"
+msgstr "E817: Blowfish暗号のビッグ/リトルエンディアンが間違っています"
+
+msgid "E818: sha256 test failed"
+msgstr "E818: sha256のテストに失敗しました"
+
+msgid "E819: Blowfish test failed"
+msgstr "E819: Blowfish暗号のテストに失敗しました"
+
+msgid "[Location List]"
+msgstr "[場所リスト]"
+
+msgid "[Quickfix List]"
+msgstr "[Quickfixリスト]"
+
 msgid "E82: Cannot allocate any buffer, exiting..."
 msgstr "E82: バッファを1つも作成できないので, 終了します..."
 
@@ -149,7 +170,6 @@ msgstr "末尾"
 msgid "Top"
 msgstr "先頭"
 
-#, c-format
 msgid ""
 "\n"
 "# Buffer list:\n"
@@ -157,11 +177,8 @@ msgstr ""
 "\n"
 "# バッファリスト:\n"
 
-msgid "[Location List]"
-msgstr "[場所リスト]"
-
-msgid "[Quickfix List]"
-msgstr "[Quickfixリスト]"
+msgid "[Scratch]"
+msgstr "[下書き]"
 
 msgid ""
 "\n"
@@ -182,12 +199,18 @@ msgstr "    行=%ld  識別子=%d  名前=%s"
 msgid "E96: Can not diff more than %ld buffers"
 msgstr "E96: %ld 以上のバッファはdiffできません"
 
+msgid "E810: Cannot read or write temp files"
+msgstr "E810: 一時ファイルの読込もしくは書込ができません"
+
 msgid "E97: Cannot create diffs"
 msgstr "E97: 差分を作成できません "
 
 msgid "Patch file"
 msgstr "パッチファイル"
 
+msgid "E816: Cannot read patch output"
+msgstr "E816: patchの出力を読込めません"
+
 msgid "E98: Cannot read diff output"
 msgstr "E98: diffの出力を読込めません"
 
@@ -273,6 +296,12 @@ msgstr " 局所キーワード補完 (^N^P)"
 msgid "Hit end of paragraph"
 msgstr "段落の最後にヒット"
 
+msgid "E839: Completion function changed window"
+msgstr "E839: 補間関数がウィンドウを変更しました"
+
+msgid "E840: Completion function deleted text"
+msgstr "E840: 補完関数がテキストを削除しました"
+
 msgid "'dictionary' option is empty"
 msgstr "'dictionary' オプションが空です"
 
@@ -293,7 +322,6 @@ msgstr " (置換) スクロール (^E/^Y)"
 msgid "Scanning: %s"
 msgstr "スキャン中: %s"
 
-#, c-format
 msgid "Scanning tags."
 msgstr "タグをスキャン中."
 
@@ -452,6 +480,9 @@ msgstr "E693: 関数参照型は関数参照型としか比較できません"
 msgid "E694: Invalid operation for Funcrefs"
 msgstr "E694: 関数参照型には無効な操作です"
 
+msgid "E804: Cannot use '%' with Float"
+msgstr "E804: '%' を浮動小数点数と組み合わせては使えません"
+
 msgid "E110: Missing ')'"
 msgstr "E110: ')' がみつかりません"
 
@@ -502,6 +533,14 @@ msgid "E724: variable nested too deep fo
 msgstr "E724: 表\示するには変数の入れ子が深過ぎます"
 
 #, c-format
+msgid "E740: Too many arguments for function %s"
+msgstr "E740: 関数の引数が多過ぎます: %s"
+
+#, c-format
+msgid "E116: Invalid arguments for function %s"
+msgstr "E116: 関数の無効な引数です: %s"
+
+#, c-format
 msgid "E117: Unknown function: %s"
 msgstr "E117: 未知の関数です: %s"
 
@@ -517,6 +556,9 @@ msgstr "E120: スクリプト以外で<SID>が使われました: %s"
 msgid "E725: Calling dict function without Dictionary: %s"
 msgstr "E725: 辞書用関数が呼ばれましたが辞書がありません: %s"
 
+msgid "E808: Number or Float required"
+msgstr "E808: 数値か浮動小数点数が必要です"
+
 msgid "E699: Too many arguments"
 msgstr "E699: が多過ぎます"
 
@@ -533,7 +575,7 @@ msgstr "&Ok"
 
 #, c-format
 msgid "E737: Key already exists: %s"
-msgstr "E737: %s というキーは既に存在します"
+msgstr "E737: キーは既に存在します: %s"
 
 #, c-format
 msgid "+-%s%3ld lines: "
@@ -594,6 +636,9 @@ msgstr "(無効)"
 msgid "E677: Error writing temp file"
 msgstr "E677: 一時ファイル書込中にエラーが発生しました"
 
+msgid "E805: Using a Float as a Number"
+msgstr "E805: 浮動小数点数を数値として扱っています"
+
 msgid "E703: Using a Funcref as a Number"
 msgstr "E703: 関数参照型を数値として扱っています。"
 
@@ -612,6 +657,9 @@ msgstr "E730: リスト型を文字列として扱っています"
 msgid "E731: using Dictionary as a String"
 msgstr "E731: 変数型を文字列として扱っています"
 
+msgid "E806: using Float as a String"
+msgstr "E806: 浮動小数点数を文字列として扱っています"
+
 #, c-format
 msgid "E704: Funcref variable name must start with a capital: %s"
 msgstr "E704: 関数参照型変数名は大文字で始まらなければなりません: %s"
@@ -643,6 +691,10 @@ msgid "E698: variable nested too deep fo
 msgstr "E698: コピーを取るには変数の入れ子が深過ぎます"
 
 #, c-format
+msgid "E123: Undefined function: %s"
+msgstr "E123: 未定義の関数です: %s"
+
+#, c-format
 msgid "E124: Missing '(': %s"
 msgstr "E124: '(' がありません: %s"
 
@@ -654,6 +706,14 @@ msgid "E126: Missing :endfunction"
 msgstr "E126: :endfunction がありません"
 
 #, c-format
+msgid "E707: Function name conflicts with variable: %s"
+msgstr "E707: 関数名が変数名と衝突します: %s"
+
+#, c-format
+msgid "E127: Cannot redefine function %s: It is in use"
+msgstr "E127: 関数 %s を再定義できません: 使用中です"
+
+#, c-format
 msgid "E746: Function name does not match script file name: %s"
 msgstr "E746: 関数名がスクリプトのファイル名と一致しません: %s"
 
@@ -694,7 +754,6 @@ msgstr "%s の実行を継続中です"
 msgid "E133: :return not inside a function"
 msgstr "E133: 関数外に :return がありました"
 
-#, c-format
 msgid ""
 "\n"
 "# global variables:\n"
@@ -709,6 +768,9 @@ msgstr ""
 "\n"
 "\tLast set from "
 
+msgid "No old files"
+msgstr "古いファイルはありません"
+
 #, c-format
 msgid "<%s>%s%s  %d,  Hex %02x,  Octal %03o"
 msgstr "<%s>%s%s  %d,  16進数 %02x,  8進数 %03o"
@@ -758,6 +820,9 @@ msgstr " 情報"
 msgid " marks"
 msgstr " マーク"
 
+msgid " oldfiles"
+msgstr " 旧ファイル群"
+
 msgid " FAILED"
 msgstr " 失敗"
 
@@ -779,7 +844,6 @@ msgstr "viminfoファイル \"%s\" を書込み中"
 msgid "# This viminfo file was generated by Vim %s.\n"
 msgstr "# この viminfo ファイルは Vim %s によって生成されました.\n"
 
-#, c-format
 msgid ""
 "# You may edit it if you're careful!\n"
 "\n"
@@ -787,7 +851,6 @@ msgstr ""
 "# 変更する際には十\分注意してください!\n"
 "\n"
 
-#, c-format
 msgid "# Value of 'encoding' when this file was written\n"
 msgstr "# このファイルが書かれた時の 'encoding' の値\n"
 
@@ -898,7 +961,6 @@ msgstr "E148: globalコマンドに正規表\現が指定されていません"
 msgid "Pattern found in every line: %s"
 msgstr "パターンが全ての行でみつかりました: %s"
 
-#, c-format
 msgid ""
 "\n"
 "# Last Substitute String:\n"
@@ -1009,8 +1071,8 @@ msgstr "ブレークポイントが定義されていません"
 msgid "%3d  %s %s  line %ld"
 msgstr "%3d  %s %s  行 %ld"
 
-msgid "E750: First use :profile start <fname>"
-msgstr "E750: 初めに :profile start <fname> を実行してください"
+msgid "E750: First use \":profile start {fname}\""
+msgstr "E750: 初めに \":profile start {fname}\" を実行してください"
 
 #, c-format
 msgid "Save changes to \"%s\"?"
@@ -1202,6 +1264,9 @@ msgstr "E182: 無効なコマンド名です"
 msgid "E183: User defined commands must start with an uppercase letter"
 msgstr "E183: ユーザ定義コマンドは英大文字で始まらなければなりません"
 
+msgid "E841: Reserved name, cannot be used for user defined command"
+msgstr "E841: 予\約名なので, ユーザ定義コマンドに利用できません"
+
 #, c-format
 msgid "E184: No such user-defined command: %s"
 msgstr "E184: そのユーザ定義コマンドはありません: %s"
@@ -1216,6 +1281,9 @@ msgstr "E468: 補完引数はカスタム補完でしか使用できません"
 msgid "E467: Custom completion requires a function argument"
 msgstr "E467: カスタム補完には引数として関数が必要です"
 
+msgid "unknown"
+msgstr "不明"
+
 #, c-format
 msgid "E185: Cannot find color scheme %s"
 msgstr "E185: カラースキーム %s がみつかりません"
@@ -1298,6 +1366,9 @@ msgstr "E191: 引数は文字か前進/後退クォートでしなければいけません"
 msgid "E192: Recursive use of :normal too deep"
 msgstr "E192: :normal の再帰利用が深くなり過ぎました"
 
+msgid "E809: #< is not available without the +eval feature"
+msgstr "E809: #< は +eval 機能\が無いと利用できません"
+
 msgid "E194: No alternate file name to substitute for '#'"
 msgstr "E194: '#'を置き換える副ファイルの名前がありません"
 
@@ -1313,6 +1384,9 @@ msgstr "E497: \"<amatch>\"を置き換えるautocommandの該当名がありません"
 msgid "E498: no :source file name to substitute for \"<sfile>\""
 msgstr "E498: \"<sfile>\"を置き換える :source 対象ファイル名がありません"
 
+msgid "E842: no line number to use for \"<slnum>\""
+msgstr "E842: \"<slnum>\"を置き換える行番号がありません"
+
 #, no-c-format
 msgid "E499: Empty file name for '%' or '#', only works with \":p:h\""
 msgstr ""
@@ -1437,6 +1511,9 @@ msgstr "E193: 関数の外に :endfunction がありました"
 msgid "E788: Not allowed to edit another buffer now"
 msgstr "E788: 現在は他のバッファを編集することは許されません"
 
+msgid "E811: Not allowed to change buffer information now"
+msgstr "E811: 現在はバッファ情報を変更することは許されません"
+
 msgid "tagname"
 msgstr "タグ名"
 
@@ -1472,6 +1549,9 @@ msgstr "E198: cmd_pchar がコマンド長を超えました"
 msgid "E199: Active window or buffer deleted"
 msgstr "E199: アクティブなウィンドウかバッファが削除されました"
 
+msgid "E812: Autocommands changed buffer or buffer name"
+msgstr "E812: autocommandがバッファかバッファ名を変更しました"
+
 msgid "Illegal file name"
 msgstr "不正なファイル名"
 
@@ -1530,9 +1610,6 @@ msgstr "[読専]"
 msgid "[CR missing]"
 msgstr "[CR無]"
 
-msgid "[NL found]"
-msgstr "[NL有]"
-
 msgid "[long lines split]"
 msgstr "[長行分割]"
 
@@ -1542,6 +1619,9 @@ msgstr "[未変換]"
 msgid "[converted]"
 msgstr "[変換済]"
 
+msgid "[blowfish]"
+msgstr "[blowfish暗号化]"
+
 msgid "[crypted]"
 msgstr "[暗号化]"
 
@@ -1565,6 +1645,9 @@ msgstr "'charconvert' による変換が失敗しました"
 msgid "can't read output of 'charconvert'"
 msgstr "'charconvert' の出力を読込めませんでした"
 
+msgid "E821: File is encrypted with unknown method"
+msgstr "E821: ファイルが未知の方法で暗号化されています"
+
 msgid "E676: No matching autocommands for acwrite buffer"
 msgstr "E676: acwriteバッファの該当するautocommandは存在しません"
 
@@ -1630,12 +1713,24 @@ msgstr "E512: 閉じることに失敗"
 msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
 msgstr "E513: 書込みエラー, 変換失敗 (上書するには 'fenc' を空にしてください)"
 
+#, c-format
+msgid ""
+"E513: write error, conversion failed in line %ld (make 'fenc' empty to "
+"override)"
+msgstr ""
+"E513: 書込みエラー, 変換失敗, 行数 %ld (上書するには 'fenc' を空にしてくださ"
+"い)"
+
 msgid "E514: write error (file system full?)"
 msgstr "E514: 書込みエラー, (ファイルシステムが満杯?)"
 
 msgid " CONVERSION ERROR"
 msgstr " 変換エラー"
 
+#, c-format
+msgid " in line %ld;"
+msgstr "行 %ld;"
+
 msgid "[Device]"
 msgstr "[デバイス]"
 
@@ -1702,6 +1797,11 @@ msgid "1 character"
 msgstr "1 文字"
 
 #, c-format
+msgid "%lld characters"
+msgstr "%lld 文字"
+
+#. Explicit typecast avoids warning on Mac OS X 10.6
+#, c-format
 msgid "%ld characters"
 msgstr "%ld 文字"
 
@@ -1945,9 +2045,6 @@ msgstr "Vim ダイアログ"
 msgid "E232: Cannot create BalloonEval with both message and callback"
 msgstr "E232: メッセージとコールバックのある BalloonEval を作成できません"
 
-msgid "Vim dialog..."
-msgstr "Vim ダイアログ..."
-
 msgid ""
 "&Yes\n"
 "&No\n"
@@ -1990,12 +2087,15 @@ msgstr "上"
 msgid "Down"
 msgstr "下"
 
+#. 'Find Next' button
 msgid "Find Next"
 msgstr "次を検索"
 
+#. 'Replace' button
 msgid "Replace"
 msgstr "置換"
 
+#. 'Replace All' button
 msgid "Replace All"
 msgstr "全て置換"
 
@@ -2014,12 +2114,6 @@ msgstr "タブページを開く..."
 msgid "Vim: Main window unexpectedly destroyed\n"
 msgstr "Vim: メインウィンドウが不意に破壊されました\n"
 
-msgid "Font Selection"
-msgstr "フォント選択"
-
-msgid "Used CUT_BUFFER0 instead of empty selection"
-msgstr "空の選択領域のかわりにCUT_BUFFER0が使用されました"
-
 msgid "&Filter"
 msgstr "フィルタ(&F)"
 
@@ -2348,19 +2442,40 @@ msgid "E567: no cscope connections"
 msgstr "E567: cscope接続に失敗しました"
 
 #, c-format
+msgid "E469: invalid cscopequickfix flag %c for %c"
+msgstr "E469: 無効な cscopequickfix フラグ %c の %c です"
+
+#, c-format
 msgid "E259: no matches found for cscope query %s of %s"
 msgstr "E259: cscopeクエリー %s of %s に該当がありませんでした"
 
-#, c-format
-msgid "E469: invalid cscopequickfix flag %c for %c"
-msgstr "E469: 無効な cscopequickfix フラグ %c の %c です"
-
 msgid "cscope commands:\n"
 msgstr "cscopeコマンド:\n"
 
 #, c-format
-msgid "%-5s: %-30s (Usage: %s)"
-msgstr "%-5s: %-30s (使用法: %s)"
+msgid "%-5s: %s%*s (Usage: %s)"
+msgstr "%-5s: %s%*s (使用法: %s)"
+
+msgid ""
+"\n"
+"       c: Find functions calling this function\n"
+"       d: Find functions called by this function\n"
+"       e: Find this egrep pattern\n"
+"       f: Find this file\n"
+"       g: Find this definition\n"
+"       i: Find files #including this file\n"
+"       s: Find this C symbol\n"
+"       t: Find this text string\n"
+msgstr ""
+"\n"
+"       c: この関数を呼んでいる関数を探す\n"
+"       d: この関数から呼んでいる関数を探す\n"
+"       e: このegrepパターンを探す\n"
+"       f: このファイルを探す\n"
+"       g: この定義を探す\n"
+"       i: このファイルを#includeしているファイルを探す\n"
+"       s: このCシンボルを探す\n"
+"       t: このテキスト文字列を探す\n"
 
 #, c-format
 msgid "E625: cannot open cscope database: %s"
@@ -2372,9 +2487,6 @@ msgstr "E626: cscopeデータベースの情報を取得できません"
 msgid "E568: duplicate cscope database not added"
 msgstr "E568: 重複するcscopeデータベースは追加されませんでした"
 
-msgid "E569: maximum number of cscope connections reached"
-msgstr "E569: cscope接続の最大数に達しました"
-
 #, c-format
 msgid "E261: cscope connection %s not found"
 msgstr "E261: cscope接続 %s がみつかりませんでした"
@@ -2414,12 +2526,16 @@ msgstr "cscope接続がありません\n"
 msgid " # pid    database name                       prepend path\n"
 msgstr " # pid    データベース名                      prepend パス\n"
 
+msgid "Lua library cannot be loaded."
+msgstr "Luaライブラリをロードできません."
+
+msgid "cannot save undo information"
+msgstr "アンドゥ情報が保存できません"
+
 msgid ""
-"???: Sorry, this command is disabled, the MzScheme library could not be "
+"E815: Sorry, this command is disabled, the MzScheme libraries could not be "
 "loaded."
-msgstr ""
-"???: このコマンドは無効です, ごめんなさい: MzScheme ライブラリをロードできま"
-"せんでした."
+msgstr "E815: このコマンドは無効です. MzScheme ライブラリをロードできません."
 
 msgid "invalid expression"
 msgstr "無効な式です"
@@ -2439,9 +2555,6 @@ msgstr "範囲外のウィンドウ番号です"
 msgid "couldn't open buffer"
 msgstr "バッファを開けません"
 
-msgid "cannot save undo information"
-msgstr "アンドゥ情報が保存できません"
-
 msgid "cannot delete line"
 msgstr "行を消せません"
 
@@ -2472,6 +2585,22 @@ msgstr "範囲外の行番号です"
 msgid "not allowed in the Vim sandbox"
 msgstr "サンドボックスでは許されません"
 
+#, c-format
+msgid "E370: Could not load library %s"
+msgstr "E370: ライブラリ %s をロードできませんでした"
+
+msgid "Sorry, this command is disabled: the Perl library could not be loaded."
+msgstr ""
+"このコマンドは無効です, ごめんなさい: Perlライブラリをロードできませんでした."
+
+msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
+msgstr ""
+"E299: サンドボックスでは Safe モジュールを使用しないPerlスクリプトは禁じられ"
+"ています"
+
+msgid "E836: This Vim cannot execute :python after using :py3"
+msgstr "E836: このVimでは :py3 を使った後に :python を使えません"
+
 msgid ""
 "E263: Sorry, this command is disabled, the Python library could not be "
 "loaded."
@@ -2492,51 +2621,12 @@ msgstr "softspace は integer でなければなりません"
 msgid "invalid attribute"
 msgstr "無効な属性です"
 
-msgid "writelines() requires list of strings"
-msgstr "writelines() には文字列のリストが必要です"
-
-msgid "E264: Python: Error initialising I/O objects"
-msgstr "E264: Python: I/Oオブジェクトの初期化中にエラーです"
-
-msgid "attempt to refer to deleted buffer"
-msgstr "消されたバッファが参照されました"
-
-msgid "line number out of range"
-msgstr "範囲外の行番号です"
-
-#, c-format
-msgid "<buffer object (deleted) at %8lX>"
-msgstr "<バッファオブジェクト (消去済み) %8lX>"
-
-msgid "invalid mark name"
-msgstr "無効なマーク名です"
-
-msgid "no such buffer"
-msgstr "そのようなバッファはありません"
-
-msgid "attempt to refer to deleted window"
-msgstr "消されたウィンドウが参照されました"
-
-msgid "readonly attribute"
-msgstr "読込専用属性"
-
-msgid "cursor position outside buffer"
-msgstr "カーソ\ルがバッファの外にあります"
-
-#, c-format
-msgid "<window object (deleted) at %.8lX>"
-msgstr "<ウィンドウオブジェクト (消去済) %.8lX>"
-
-#, c-format
-msgid "<window object (unknown) at %.8lX>"
-msgstr "<ウィンドウオブジェクト (未知) %.8lX>"
-
-#, c-format
-msgid "<window %d>"
-msgstr "<ウィンドウ %d>"
-
-msgid "no such window"
-msgstr "そのようなウィンドウはありません"
+#, c-format
+msgid "<buffer object (deleted) at %p>"
+msgstr "<バッファオブジェクト (消去済み) %p>"
+
+msgid "E837: This Vim cannot execute :py3 after using :python"
+msgstr "E837: このVimでは :python を使った後に :py3 を使えません"
 
 msgid "E265: $_ must be an instance of String"
 msgstr "E265: $_ は文字列のインスタンスでなければなりません"
@@ -2668,6 +2758,9 @@ msgstr "まだ実装されていません"
 msgid "cannot set line(s)"
 msgstr "行を設定できません"
 
+msgid "invalid mark name"
+msgstr "無効なマーク名です"
+
 msgid "mark not set"
 msgstr "マークは設定されていません"
 
@@ -2678,6 +2771,9 @@ msgstr "行 %d 列 %d"
 msgid "cannot insert/append line"
 msgstr "行の挿入/追加をできません"
 
+msgid "line number out of range"
+msgstr "範囲外の行番号です"
+
 msgid "unknown flag: "
 msgstr "未知のフラグ:"
 
@@ -2766,9 +2862,15 @@ msgstr "無効な引数です: "
 msgid "%d files to edit\n"
 msgstr "%d 個のファイルが編集を控えています\n"
 
+msgid "netbeans is not supported with this GUI\n"
+msgstr "netbeans はこのGUIでは利用できません\n"
+
 msgid "This Vim was not compiled with the diff feature."
 msgstr "このVimにはdiff機能\がありません(コンパイル時設定)."
 
+msgid "'-nb' cannot be used: not enabled at compile time\n"
+msgstr "'-nb' 使用不可能\です: コンパイル時に無効にされています\n"
+
 msgid "Attempt to open script file again: \""
 msgstr "スクリプトファイルを再び開いてみます: \""
 
@@ -2997,7 +3099,7 @@ msgid "--remote <files>\tEdit <files> in
 msgstr "--remote <files>\t可能\ならばVimサーバで <files> を編集する"
 
 msgid "--remote-silent <files>  Same, don't complain if there is no server"
-msgstr "--remote-silnet <files>  同上, サーバが無くても警告文を出力しない"
+msgstr "--remote-silent <files>  同上, サーバが無くても警告文を出力しない"
 
 msgid ""
 "--remote-wait <files>  As --remote but wait for files to have been edited"
@@ -3025,6 +3127,9 @@ msgstr "--serverlist\t\tVimサーバ名の一覧を表\示して終了する"
 msgid "--servername <name>\tSend to/become the Vim server <name>"
 msgstr "--servename <name>\t\tVimサーバ <name> に送信/名前設定する"
 
+msgid "--startuptime <file>\tWrite startup timing messages to <file>"
+msgstr "--startuptime <file>\t起動にかかった時間の詳細を <file> へ出力する"
+
 msgid "-i <viminfo>\t\tUse <viminfo> instead of .viminfo"
 msgstr "-i <viminfo>\t\t.viminfoの代わりに <viminfo> を使う"
 
@@ -3061,12 +3166,6 @@ msgstr "-display <display>\t<display> でvimを実行する"
 msgid "-iconic\t\tStart vim iconified"
 msgstr "-iconic\t\t最小化した状態でvimを起動する"
 
-msgid "-name <name>\t\tUse resource as if vim was <name>"
-msgstr "-name <name>\t\tvimの名が <name> であるとしてリソ\ースを使う"
-
-msgid "\t\t\t  (Unimplemented)\n"
-msgstr "\t\t\t  (実装されていない)\n"
-
 msgid "-background <color>\tUse <color> for the background (also: -bg)"
 msgstr "-background <color>\t背景色に <color> を使う(同義: -bg)"
 
@@ -3191,7 +3290,6 @@ msgstr ""
 "\n"
 "変更   行    列  テキスト"
 
-#, c-format
 msgid ""
 "\n"
 "# File marks:\n"
@@ -3200,7 +3298,6 @@ msgstr ""
 "# ファイルマーク:\n"
 
 #. Write the jumplist with -'
-#, c-format
 msgid ""
 "\n"
 "# Jumplist (newest first):\n"
@@ -3208,7 +3305,6 @@ msgstr ""
 "\n"
 "# ジャンプリスト (新しいものが先):\n"
 
-#, c-format
 msgid ""
 "\n"
 "# History of marks within files (newest to oldest):\n"
@@ -3240,15 +3336,6 @@ msgstr "E288: インプットメソ\ッドはどんなスタイルもサポートしません"
 msgid "E289: input method doesn't support my preedit type"
 msgstr "E289: インプットメソ\ッドは my preedit type をサポートしません"
 
-msgid "E290: over-the-spot style requires fontset"
-msgstr "E290: over-the-spot スタイルにはfontsetが必要です"
-
-msgid "E291: Your GTK+ is older than 1.2.3. Status area disabled"
-msgstr "E291: GTK+が1.2.3よりも古いのでステータスエリアが無効です"
-
-msgid "E292: Input Method Server is not running"
-msgstr "E292: インプットメソ\ッドサーバ が動作していません"
-
 msgid "E293: block was not locked"
 msgstr "E293: ブロックがロックされていません"
 
@@ -3276,6 +3363,9 @@ msgstr "E298: ブロック 1 を取得できません?"
 msgid "E298: Didn't get block nr 2?"
 msgstr "E298: ブロック 2 を取得できません?"
 
+msgid "E843: Error while updating swap file crypt"
+msgstr "E843: スワップファイルの暗号を更新中にエラーが発生しました"
+
 #. could not (re)open the swap file, what can we do????
 msgid "E301: Oops, lost the swap file!!!"
 msgstr "E301: おっと, スワップファイルが失われました!!!"
@@ -3334,6 +3424,12 @@ msgstr ""
 ",\n"
 "もしくはファイルが損傷しています."
 
+#, c-format
+msgid ""
+"E833: %s is encrypted and this version of Vim does not support encryption"
+msgstr ""
+"E833: %s はこのバージョンのVimでサポートしていない形式で暗号化されています"
+
 msgid " has been damaged (page size is smaller than minimum value).\n"
 msgstr " は損傷しています (ページサイズが最小値を下回っています).\n"
 
@@ -3349,6 +3445,38 @@ msgid "E308: Warning: Original file may 
 msgstr "E308: 警告: 原本ファイルが変更されています"
 
 #, c-format
+msgid "Swap file is encrypted: \"%s\""
+msgstr "スワップファイルは暗号化されています: \"%s\""
+
+msgid ""
+"\n"
+"If you entered a new crypt key but did not write the text file,"
+msgstr ""
+"\n"
+"新しい暗号キーを入力したあとにテキストファイルを保存していない場合は,"
+
+msgid ""
+"\n"
+"enter the new crypt key."
+msgstr ""
+"\n"
+"新しい暗号キーを入力してください."
+
+msgid ""
+"\n"
+"If you wrote the text file after changing the crypt key press enter"
+msgstr ""
+"\n"
+"暗号キーを変えたあとにテキストファイルを保存した場合は, テキストファイルと"
+
+msgid ""
+"\n"
+"to use the same key for text file and swap file"
+msgstr ""
+"\n"
+"スワップファイルに同じ暗号キーを使うためにenterだけを押してください."
+
+#, c-format
 msgid "E309: Unable to read block 1 from %s"
 msgstr "E309: %s からブロック 1 を読込めません"
 
@@ -3401,16 +3529,24 @@ msgstr ""
 "\n"
 "(変更をチェックするために, このファイルを別の名前で保存した上で\n"
 
-msgid "and run diff with the original file to check for changes)\n"
-msgstr "原本ファイルとの diff を実行すると良いでしょう)\n"
+msgid "and run diff with the original file to check for changes)"
+msgstr "原本ファイルとの diff を実行すると良いでしょう)"
+
+msgid "Recovery completed. Buffer contents equals file contents."
+msgstr "復元完了. バッファの内容はファイルと同じになりました."
 
 msgid ""
-"Delete the .swp file afterwards.\n"
+"\n"
+"You may want to delete the .swp file now.\n"
 "\n"
 msgstr ""
+"\n"
 "それから.swpファイルを削除してください\n"
 "\n"
 
+msgid "Using crypt key from swap file for the text file.\n"
+msgstr "スワップファイルから取得した暗号キーをテキストファイルに使います.\n"
+
 #. use msg() to start the scrolling properly
 msgid "Swap files found:"
 msgstr "スワップファイルが複数見つかりました:"
@@ -3585,24 +3721,20 @@ msgstr "      スワップファイルよりも新しいです!\n"
 #. * other languages.
 msgid ""
 "\n"
-"(1) Another program may be editing the same file.\n"
-"    If this is the case, be careful not to end up with two\n"
-"    different instances of the same file when making changes.\n"
+"(1) Another program may be editing the same file.  If this is the case,\n"
+"    be careful not to end up with two different instances of the same\n"
+"    file when making changes."
 msgstr ""
 "\n"
 "(1) 別のプログラムが同じファイルを編集しているかもしれません.\n"
 "    この場合には, 変更をした際に最終的に, 同じファイルの異なる\n"
-"    2つのインスタンスができてしまうことに注意してください.\n"
-
-msgid "    Quit, or continue with caution.\n"
-msgstr "    終了するか, 注意しながら続けます.\n"
-
-msgid ""
-"\n"
-"(2) An edit session for this file crashed.\n"
-msgstr ""
-"\n"
-"(2) このファイルの編集セッションがクラッシュした.\n"
+"    2つのインスタンスができてしまうことに注意してください."
+
+msgid "  Quit, or continue with caution.\n"
+msgstr "  終了するか, 注意しながら続けてください.\n"
+
+msgid "(2) An edit session for this file crashed.\n"
+msgstr "(2) このファイルの編集セッションがクラッシュした.\n"
 
 msgid "    If this is the case, use \":recover\" or \"vim -r "
 msgstr "    この場合には \":recover\" か \"vim -r "
@@ -3645,7 +3777,7 @@ msgid ""
 msgstr ""
 "読込専用で開く(&O)\n"
 "とにかく編集する(&E)\n"
-"復活させる(&R)ecover\n"
+"復活させる(&R)\n"
 "終了する(&Q)\n"
 "中止する(&A)"
 
@@ -3659,7 +3791,7 @@ msgid ""
 msgstr ""
 "読込専用で開く(&O)\n"
 "とにかく編集する(&E)\n"
-"復活させる(&R)ecover\n"
+"復活させる(&R)\n"
 "削除する(&D)\n"
 "終了する(&Q)\n"
 "中止する(&A)"
@@ -3789,17 +3921,21 @@ msgstr "E338: コンソ\ールモードではファイルブラウザを使えません, ごめんなさい"
 msgid "E766: Insufficient arguments for printf()"
 msgstr "E766: printf() の引数が不十\分です"
 
+msgid "E807: Expected Float argument for printf()"
+msgstr "E807: printf() の引数には浮動少数が期待されています"
+
 msgid "E767: Too many arguments to printf()"
 msgstr "E767: pirntf() の引数が多過ぎます"
 
 msgid "W10: Warning: Changing a readonly file"
 msgstr "W10: 警告: 読込専用ファイルを変更します"
 
-msgid "Type number or click with mouse (<Enter> cancels): "
-msgstr "数値を入力するかマウスをクリックしてください (<Enter> でキャンセル): "
-
-msgid "Choice number (<Enter> cancels): "
-msgstr "番号を選択してください (<Enter> でキャンセル): "
+msgid "Type number and <Enter> or click with mouse (empty cancels): "
+msgstr ""
+"番号と<Enter>を入力するかマウスでクリックしてください (空でキャンセル): "
+
+msgid "Type number and <Enter> (empty cancels): "
+msgstr "番号と<Enter>を入力してください (空でキャンセル): "
 
 msgid "1 more line"
 msgstr "1 行 追加しました"
@@ -3828,7 +3964,6 @@ msgstr "Vim: ファイルを保存中...\n"
 msgid "Vim: Finished.\n"
 msgstr "Vim: 終了しました.\n"
 
-#, c-format
 msgid "ERROR: "
 msgstr "エラー: "
 
@@ -3911,7 +4046,6 @@ msgstr "E346: cdpathにはこれ以上 \"%s\" というファイルがありません"
 msgid "E347: No more file \"%s\" found in path"
 msgstr "E347: パスにはこれ以上 \"%s\" というファイルがありません"
 
-#. Get here when the server can't be found.
 msgid "Cannot connect to Netbeans #2"
 msgstr "Netbeans #2 に接続できません"
 
@@ -3930,9 +4064,18 @@ msgstr "Netbeans のソ\ケットを読込み"
 msgid "E658: NetBeans connection lost for buffer %ld"
 msgstr "E658: バッファ %ld の NetBeans 接続が失われました"
 
+msgid "E838: netbeans is not supported with this GUI"
+msgstr "E838: NetBeansはこのGUIには対応していません"
+
+msgid "E511: netbeans already connected"
+msgstr "E511: NetBeansは既に接続しています"
+
 msgid "E505: "
 msgstr "E505: "
 
+msgid "E349: No identifier under cursor"
+msgstr "E349: カーソ\ルの位置には識別子がありません"
+
 msgid "E774: 'operatorfunc' is empty"
 msgstr "E774: 'operatorfunc' オプションが空です"
 
@@ -3945,9 +4088,6 @@ msgstr "警告: 使用している端末はハイライトできません"
 msgid "E348: No string under cursor"
 msgstr "E348: カーソ\ルの位置には文字列がありません"
 
-msgid "E349: No identifier under cursor"
-msgstr "E349: カーソ\ルの位置には識別子がありません"
-
 msgid "E352: Cannot erase folds with current 'foldmethod'"
 msgstr "E352: 現在の 'foldmethod' では折畳みを消去できません"
 
@@ -4037,7 +4177,6 @@ msgstr ""
 msgid "Illegal register name"
 msgstr "不正なレジスタ名"
 
-#, c-format
 msgid ""
 "\n"
 "# Registers:\n"
@@ -4055,7 +4194,7 @@ msgstr "%ld 列; "
 
 #, c-format
 msgid "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Bytes"
-msgstr "選択 %s%ld / %ld 行; %ld / %ld 単語; %ld / %ld 文字"
+msgstr "選択 %s%ld / %ld 行; %ld / %ld 単語; %ld / %ld バイト"
 
 #, c-format
 msgid ""
@@ -4065,7 +4204,7 @@ msgstr "選択 %s%ld / %ld 行; %ld / %ld 単語; %ld / %ld 文字; %ld / %ld バイト"
 
 #, c-format
 msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"
-msgstr "列 %s / %s; 行 %ld of %ld; 単語 %ld / %ld; 文字 %ld / %ld"
+msgstr "列 %s / %s; 行 %ld of %ld; 単語 %ld / %ld; バイト %ld / %ld"
 
 #, c-format
 msgid ""
@@ -4093,6 +4232,9 @@ msgstr "E519: オプションはサポートされていません"
 msgid "E520: Not allowed in a modeline"
 msgstr "E520: modeline では許可されません"
 
+msgid "E846: Key code not set"
+msgstr "E846: キーコードが設定されていません"
+
 msgid "E521: Number required after ="
 msgstr "E521: = の後には数字が必要です"
 
@@ -4115,6 +4257,12 @@ msgstr "E531: GUIをスタートするには \":gui\" を使用してください"
 msgid "E589: 'backupext' and 'patchmode' are equal"
 msgstr "E589: 'backupext' と 'patchmode' が同じです"
 
+msgid "E834: Conflicts with value of 'listchars'"
+msgstr "E834: 'listchars'の値に矛盾があります"
+
+msgid "E835: Conflicts with value of 'fillchars'"
+msgstr "E835: 'fillchars'の値に矛盾があります"
+
 msgid "E617: Cannot be changed in the GTK+ 2 GUI"
 msgstr "E617: GTK+2 GUIでは変更できません"
 
@@ -4527,6 +4675,9 @@ msgstr "エラー一覧 %d of %d; %d 個エラー"
 msgid "E382: Cannot write, 'buftype' option is set"
 msgstr "E382: 'buftype' オプションが設定されているので書込みません"
 
+msgid "Error file"
+msgstr "エラーファイル"
+
 msgid "E683: File name missing or invalid pattern"
 msgstr "E683: ファイル名が無いか無効なパターンです"
 
@@ -4751,6 +4902,9 @@ msgstr "E388: 定義をみつけられません"
 msgid "E389: Couldn't find pattern"
 msgstr "E389: パターンをみつけられません"
 
+msgid "Substitute "
+msgstr "Substitute "
+
 #, c-format
 msgid ""
 "\n"
@@ -4789,6 +4943,11 @@ msgid "E756: Spell checking is not enabl
 msgstr "E756: スペルチェックは無効化されています"
 
 #, c-format
+msgid "Warning: Cannot find word list \"%s_%s.spl\" or \"%s_ascii.spl\""
+msgstr ""
+"警告: 単語リスト \"%s_%s.spl\" および \"%s_ascii.spl\" は見つかりません"
+
+#, c-format
 msgid "Warning: Cannot find word list \"%s.%s.spl\" or \"%s.ascii.spl\""
 msgstr ""
 "警告: 単語リスト \"%s.%s.spl\" および \"%s.ascii.spl\" は見つかりません"
@@ -4854,6 +5013,10 @@ msgstr ""
 "ことがあります"
 
 #, c-format
+msgid "Wrong COMPOUNDRULES value in %s line %d: %s"
+msgstr "COMPOUNDRULES の値に誤りがあります. ファイル %s の %d 行目: %s"
+
+#, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
 msgstr "%s の %d 行目の COMPOUNDWORDMAX の値に誤りがあります: %s"
 
@@ -5010,6 +5173,9 @@ msgstr "%s の %d 行目 認識不能\なフラグです: %s"
 msgid "Ignored %d words with non-ASCII characters"
 msgstr "非ASCII文字を含む %d 個の単語を無視しました"
 
+msgid "E845: Insufficient memory, word list will be incomplete"
+msgstr "E845: メモリが足りないので、単語リストは不完全です"
+
 #, c-format
 msgid "Compressed %d of %d nodes; %d (%d%%) remaining"
 msgstr "ノード %d 個(全 %d 個中) を圧縮しました; 残り %d (%d%%)"
@@ -5187,8 +5353,8 @@ msgstr " 個の改行"
 msgid "E395: contains argument not accepted here"
 msgstr "E395: この場所では引数containsは許可されていません"
 
-msgid "E396: containedin argument not accepted here"
-msgstr "E396: この場所では引数containedinは許可されていません"
+msgid "E844: invalid cchar value"
+msgstr "E844: 無効なccharの値です"
 
 msgid "E393: group[t]here not accepted here"
 msgstr "E393: ここではグループは許可されません"
@@ -5391,12 +5557,19 @@ msgstr "E432: タグファイルがソ\ートされていません: %s"
 msgid "E433: No tags file"
 msgstr "E433: タグファイルがありません"
 
+msgid "Ignoring long line in tags file"
+msgstr "タグファイル内の長い行を無視します"
+
 msgid "E434: Can't find tag pattern"
 msgstr "E434: タグパターンをみつけられません"
 
 msgid "E435: Couldn't find tag, just guessing!"
 msgstr "E435: タグをみつけられないので単に推測します!"
 
+#, c-format
+msgid "Duplicate field name: %s"
+msgstr "重複したフィールド名: %s"
+
 msgid "' not known. Available builtin terminals are:"
 msgstr "' は未知です. 現行の組み込み端末は次のとおりです:"
 
@@ -5433,10 +5606,87 @@ msgstr "新しいシェルを起動します\n"
 msgid "Vim: Error reading input, exiting...\n"
 msgstr "Vim: 入力を読込み中のエラーにより終了します...\n"
 
+msgid "Used CUT_BUFFER0 instead of empty selection"
+msgstr "空の選択領域のかわりにCUT_BUFFER0が使用されました"
+
+#. This happens when the FileChangedRO autocommand changes the
+#. * file in a way it becomes shorter.
+msgid "E834: Line count changed unexpectedly"
+msgstr "E834: 予\期せず行カウントが変わりました"
+
 #. must display the prompt
 msgid "No undo possible; continue anyway"
 msgstr "可能\なアンドゥはありません: とりあえず続けます"
 
+#, c-format
+msgid "E828: Cannot open undo file for writing: %s"
+msgstr "E828: 書込み用にアンドゥファイルを開けません: %s"
+
+#, c-format
+msgid "E825: Corrupted undo file (%s): %s"
+msgstr "E825: アンドゥファイルが壊れています (%s): %s"
+
+msgid "Cannot write undo file in any directory in 'undodir'"
+msgstr "'undodir'のディレクトリにアンドゥファイルを書き込めません"
+
+#, c-format
+msgid "Will not overwrite with undo file, cannot read: %s"
+msgstr "アンドゥファイルとして読み込めないので上書きしません: %s"
+
+#, c-format
+msgid "Will not overwrite, this is not an undo file: %s"
+msgstr "アンドゥファイルではないので上書きしません: %s"
+
+msgid "Skipping undo file write, nothing to undo"
+msgstr "対象がないのでアンドゥファイルの書き込みをスキップします"
+
+#, c-format
+msgid "Writing undo file: %s"
+msgstr "アンドゥファイル書き込み中: %s"
+
+#, c-format
+msgid "E829: write error in undo file: %s"
+msgstr "E829: アンドゥファイルの書き込みエラーです: %s"
+
+#, c-format
+msgid "Not reading undo file, owner differs: %s"
+msgstr "オーナーが異なるのでアンドゥファイルを読み込みません: %s"
+
+#, c-format
+msgid "Reading undo file: %s"
+msgstr "アンドゥファイル読込中: %s"
+
+#, c-format
+msgid "E822: Cannot open undo file for reading: %s"
+msgstr "E822: アンドゥファイルを読込用として開けません: %s"
+
+#, c-format
+msgid "E823: Not an undo file: %s"
+msgstr "E823: アンドゥファイルではありません: %s"
+
+#, c-format
+msgid "E832: Non-encrypted file has encrypted undo file: %s"
+msgstr "E832: 非暗号化ファイルが暗号化されたアンドゥファイルを使ってます: %s"
+
+#, c-format
+msgid "E826: Undo file decryption failed: %s"
+msgstr "E826: 暗号化されたアンドゥファイルの解読に失敗しました: %s"
+
+#, c-format
+msgid "E827: Undo file is encrypted: %s"
+msgstr "E827: アンドゥファイルが暗号化されています: %s"
+
+#, c-format
+msgid "E824: Incompatible undo file: %s"
+msgstr "E824: 互換性の無いアンドゥファイルです: %s"
+
+msgid "File contents changed, cannot use undo info"
+msgstr "ファイルの内容が変わっているため、アンドゥ情報を利用できません"
+
+#, c-format
+msgid "Finished reading undo file %s"
+msgstr "アンドゥファイル %s の取込を完了"
+
 msgid "Already at oldest change"
 msgstr "既に一番古い変更です"
 
@@ -5444,8 +5694,8 @@ msgid "Already at newest change"
 msgstr "既に一番新しい変更です"
 
 #, c-format
-msgid "Undo number %ld not found"
-msgstr "アンドゥ番号 %ld がみつかりません"
+msgid "E830: Undo number %ld not found"
+msgstr "E830: アンドゥ番号 %ld はみつかりません"
 
 msgid "E438: u_undo: line numbers wrong"
 msgstr "E438: u_undo: 行番号が間違っています"
@@ -5481,8 +5731,8 @@ msgstr "後方"
 msgid "Nothing to undo"
 msgstr "アンドゥ対象がありません"
 
-msgid "number changes  time"
-msgstr "番号   変更     時刻"
+msgid "number changes  when               saved"
+msgstr "通番   変更数   変更時期           保存済"
 
 #, c-format
 msgid "%ld seconds ago"
@@ -5527,6 +5777,13 @@ msgstr " with OLE サポート"
 
 msgid ""
 "\n"
+"MS-Windows 64-bit console version"
+msgstr ""
+"\n"
+"MS-Windows 64 ビット コンソ\ール 版"
+
+msgid ""
+"\n"
 "MS-Windows 32-bit console version"
 msgstr ""
 "\n"
@@ -5583,11 +5840,25 @@ msgstr ""
 
 msgid ""
 "\n"
+"OpenVMS version"
+msgstr ""
+"\n"
+"OpenVMS 版"
+
+msgid ""
+"\n"
 "Included patches: "
 msgstr ""
 "\n"
 "適用済パッチ: "
 
+msgid ""
+"\n"
+"Extra patches: "
+msgstr ""
+"\n"
+"追加拡張パッチ: "
+
 msgid "Modified by "
 msgstr "Modified by "
 
@@ -5642,15 +5913,9 @@ msgstr "without GUI."
 msgid "with GTK2-GNOME GUI."
 msgstr "with GTK2-GNOME GUI."
 
-msgid "with GTK-GNOME GUI."
-msgstr "with GTK-GNOME GUI."
-
 msgid "with GTK2 GUI."
 msgstr "with GTK2 GUI."
 
-msgid "with GTK GUI."
-msgstr "with GTK GUI."
-
 msgid "with X11-Motif GUI."
 msgstr "with X11-Motif GUI."
 
@@ -5819,6 +6084,12 @@ msgstr "E443: 他のウィンドウが分割されている時には順回できません"
 msgid "E444: Cannot close last window"
 msgstr "E444: 最後のウィンドウを閉じることはできません"
 
+msgid "E813: Cannot close autocmd window"
+msgstr "E813: autocmdウィンドウは閉じられません"
+
+msgid "E814: Cannot close window, only autocmd window would remain"
+msgstr "E814: autocmdウィンドウしか残らないため、ウィンドウは閉じられません"
+
 msgid "E445: Other window contains changes"
 msgstr "E445: 他のウィンドウには変更があります"
 
@@ -5829,19 +6100,6 @@ msgstr "E446: カーソ\ルの下にファイル名がありません"
 msgid "E447: Can't find file \"%s\" in path"
 msgstr "E447: pathには \"%s\" というファイルがありません"
 
-#, c-format
-msgid "E370: Could not load library %s"
-msgstr "E370: ライブラリ %s をロードできませんでした"
-
-msgid "Sorry, this command is disabled: the Perl library could not be loaded."
-msgstr ""
-"このコマンドは無効です, ごめんなさい: Perlライブラリをロードできませんでした."
-
-msgid "E299: Perl evaluation forbidden in sandbox without the Safe module"
-msgstr ""
-"E299: サンドボックスでは Safe モジュールを使用しないPerlスクリプトは禁じられ"
-"ています"
-
 msgid "Edit with &multiple Vims"
 msgstr "複数のVimで編集する (&M)"
 
@@ -6210,3 +6468,43 @@ msgstr "上まで検索したので下に戻ります"
 
 msgid "search hit BOTTOM, continuing at TOP"
 msgstr "下まで検索したので上に戻ります"
+
+#, c-format
+msgid "Need encryption key for \"%s\""
+msgstr "暗号キーが必要です: \"%s\""
+
+msgid "writelines() requires list of strings"
+msgstr "writelines() は文字列の配列を要求します"
+
+msgid "E264: Python: Error initialising I/O objects"
+msgstr "E264: Python: I/Oオブジェクトの初期化エラー"
+
+msgid "no such buffer"
+msgstr "そのようなバッファはありません"
+
+msgid "attempt to refer to deleted window"
+msgstr "削除されたウィンドウを参照しようとしました"
+
+msgid "readonly attribute"
+msgstr "読込専用属性"
+
+msgid "cursor position outside buffer"
+msgstr "カーソ\ルがバッファの外にあります"
+
+#, c-format
+msgid "<window object (deleted) at %p>"
+msgstr "<ウィンドウオブジェクト (消去済) %p>"
+
+#, c-format
+msgid "<window object (unknown) at %p>"
+msgstr "<ウィンドウオブジェクト (未知) %p>"
+
+#, c-format
+msgid "<window %d>"
+msgstr "<ウィンドウ %d>"
+
+msgid "no such window"
+msgstr "そのようなウィンドウはありません"
+
+msgid "attempt to refer to deleted buffer"
+msgstr "消されたバッファが参照されました"