changeset 2420:6de9efd58dc0 vim73

Updated runtime files. New netrw plugin version.
author Bram Moolenaar <bram@vim.org>
date Tue, 27 Jul 2010 22:50:36 +0200
parents f579b934f51d
children c0e675a3e363
files runtime/autoload/netrw.vim runtime/doc/map.txt runtime/doc/pi_netrw.txt runtime/doc/todo.txt runtime/indent/haml.vim runtime/plugin/netrwPlugin.vim
diffstat 6 files changed, 186 insertions(+), 142 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,10 +1,10 @@
 " netrw.vim: Handles file transfer and remote directory listing across
 "            AUTOLOAD SECTION
-" Date:		May 14, 2010
-" Version:	138
+" Date:		Jul 27, 2010
+" Version:	139
 " Maintainer:	Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
-" Copyright:    Copyright (C) 1999-2009 Charles E. Campbell, Jr. {{{1
+" Copyright:    Copyright (C) 1999-2010 Charles E. Campbell, Jr. {{{1
 "               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,
@@ -22,7 +22,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v138"
+let g:loaded_netrw = "v139"
 if v:version < 702
  echohl WarningMsg
  echo "***warning*** this version of netrw needs vim 7.2"
@@ -153,6 +153,7 @@ call s:NetrwInit("g:netrw_alto"        ,
 call s:NetrwInit("g:netrw_altv"        , &spr)
 call s:NetrwInit("g:netrw_banner"      , 1)
 call s:NetrwInit("g:netrw_browse_split", 0)
+call s:NetrwInit("g:netrw_bufsettings" , "noma nomod nonu nobl nowrap ro")
 call s:NetrwInit("g:netrw_chgwin"      , -1)
 call s:NetrwInit("g:netrw_compress"    , "gzip")
 call s:NetrwInit("g:netrw_ctags"       , "ctags")
@@ -163,7 +164,7 @@ if !exists("g:netrw_cursorline")
 endif
 " 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"}')
+call s:NetrwInit("g:netrw_decompress"       , '{ ".gz" : "gunzip", ".bz2" : "bunzip2", ".zip" : "unzip", ".tar" : "tar -xf", ".xz" : "unxz" }')
 call s:NetrwInit("g:netrw_dirhistmax"       , 10)
 call s:NetrwInit("g:netrw_fastbrowse"       , 1)
 call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$')
@@ -325,7 +326,7 @@ fun! s:NetrwOptionSave(vt)
 "   call Dret("s:NetrwOptionSave : options already saved")
    return
   endif
-"  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
+"  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist")." diff=".&l:diff)
 
   " Save current settings and current directory
   let s:yykeep          = @@
@@ -340,6 +341,7 @@ fun! s:NetrwOptionSave(vt)
   let {a:vt}netrw_cinokeep  = &l:cino
   let {a:vt}netrw_comkeep   = &l:com
   let {a:vt}netrw_cpokeep   = &l:cpo
+  let {a:vt}netrw_diffkeep  = &l:diff
   if g:netrw_keepdir
    let {a:vt}netrw_dirkeep  = getcwd()
   endif
@@ -349,6 +351,7 @@ fun! s:NetrwOptionSave(vt)
   let {a:vt}netrw_imkeep    = &l:im
   let {a:vt}netrw_magickeep = &l:magic
   let {a:vt}netrw_repkeep   = &l:report
+  let {a:vt}netrw_selkeep   = &l:sel
   let {a:vt}netrw_spellkeep = &l:spell
   let {a:vt}netrw_twkeep    = &l:tw           " textwidth
   let {a:vt}netrw_wigkeep   = &l:wig          " wildignore
@@ -398,6 +401,7 @@ fun! s:NetrwOptionRestore(vt)
   if exists("{a:vt}netrw_cinokeep") |let &l:cino   = {a:vt}netrw_cinokeep    |unlet {a:vt}netrw_cinokeep |endif
   if exists("{a:vt}netrw_comkeep")  |let &l:com    = {a:vt}netrw_comkeep     |unlet {a:vt}netrw_comkeep  |endif
   if exists("{a:vt}netrw_cpokeep")  |let &l:cpo    = {a:vt}netrw_cpokeep     |unlet {a:vt}netrw_cpokeep  |endif
+  if exists("{a:vt}netrw_diffkeep") |let &l:diff   = {a:vt}netrw_diffkeep    |unlet {a:vt}netrw_diffkeep |endif
   if exists("{a:vt}netrw_dirkeep") && isdirectory({a:vt}netrw_dirkeep) && g:netrw_keepdir
    let dirkeep = substitute({a:vt}netrw_dirkeep,'\\','/','g')
    if exists("{a:vt}netrw_dirkeep")  |exe "keepjumps lcd ".fnameescape(dirkeep)|unlet {a:vt}netrw_dirkeep  |endif
@@ -408,6 +412,7 @@ fun! s:NetrwOptionRestore(vt)
   if exists("{a:vt}netrw_imkeep")   |let &l:im     = {a:vt}netrw_imkeep      |unlet {a:vt}netrw_imkeep   |endif
   if exists("{a:vt}netrw_magic")    |let &l:magic  = {a:vt}netrw_magic       |unlet {a:vt}netrw_magic    |endif
   if exists("{a:vt}netrw_repkeep")  |let &l:report = {a:vt}netrw_repkeep     |unlet {a:vt}netrw_repkeep  |endif
+  if exists("{a:vt}netrw_selkeep")  |let &l:sel    = {a:vt}netrw_selkeep     |unlet {a:vt}netrw_selkeep  |endif
   if exists("{a:vt}netrw_spellkeep")|let &l:spell  = {a:vt}netrw_spellkeep   |unlet {a:vt}netrw_spellkeep|endif
   if exists("{a:vt}netrw_twkeep")   |let &l:tw     = {a:vt}netrw_twkeep      |unlet {a:vt}netrw_twkeep   |endif
   if exists("{a:vt}netrw_wigkeep")  |let &l:wig    = {a:vt}netrw_wigkeep     |unlet {a:vt}netrw_wigkeep  |endif
@@ -433,6 +438,7 @@ fun! s:NetrwOptionRestore(vt)
 "  call Decho("g:netrw_keepdir=".g:netrw_keepdir.": getcwd<".getcwd()."> acd=".&acd)
 "  call Decho("fo=".&fo.(exists("&acd")? " acd=".&acd : " acd doesn't exist"))
 "  call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
+"  call Decho("diff=".&l:diff." win#".winnr()." w:netrw_diffkeep=".(exists("w:netrw_diffkeep")? w:netrw_diffkeep : "doesn't exist"))
 "  call Dret("s:NetrwOptionRestore : win#".winnr()." buf#".bufnr("%"))
 endfun
 
@@ -450,12 +456,14 @@ fun! s:NetrwSafeOptions()
   setlocal tw=0
   setlocal report=10000
   setlocal isk+=@ isk+=* isk+=/
+  setlocal sel=inclusive
   if g:netrw_use_noswf && has("win32") && !has("win95")
    setlocal noswf
   endif
   call s:NetrwCursorline()
 
   " 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
@@ -920,7 +928,7 @@ fun! netrw#NetRead(mode,...)
    unlet b:netrw_method
    unlet b:netrw_fname
   endif
-  if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
+  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
@@ -1371,8 +1379,8 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
    else
     let tfile= a:tfile
    endif
-"   call Decho("exe silent! keepalt file ".fnameescape(tfile))
-   exe "silent! keepalt file ".fnameescape(tfile)
+"   call Decho("exe sil! keepalt file ".fnameescape(tfile))
+   exe "sil! keepalt file ".fnameescape(tfile)
 
    " edit temporary file (ie. read the temporary file in)
    if     rfile =~ '\.zip$'
@@ -1381,19 +1389,25 @@ fun! s:NetrwGetFile(readcmd, tfile, meth
    elseif rfile =~ '\.tar$'
 "    call Decho("handling remote tar file with tar#Browse(tfile<".tfile.">)")
     call tar#Browse(tfile)
-   elseif rfile =~ '\.tar\.gz'
+   elseif rfile =~ '\.tar\.gz$'
 "    call Decho("handling remote gzip-compressed tar file")
     call tar#Browse(tfile)
-   elseif rfile =~ '\.tar\.bz2'
+   elseif rfile =~ '\.tar\.bz2$'
 "    call Decho("handling remote bz2-compressed tar file")
     call tar#Browse(tfile)
+   elseif rfile =~ '\.tar\.xz$'
+"    call Decho("handling remote xz-compressed tar file")
+    call tar#Browse(tfile)
+   elseif rfile =~ '\.txz$'
+"    call Decho("handling remote xz-compressed tar file (.txz)")
+    call tar#Browse(tfile)
    else
 "    call Decho("edit temporary file")
     e!
    endif
 
    " rename buffer back to remote filename
-"   call Decho("exe silent! keepalt file ".fnameescape(rfile))
+"   call Decho("exe sil! keepalt file ".fnameescape(rfile))
    exe "sil! keepalt file ".fnameescape(rfile)
    filetype detect
 "   call Dredir("renamed buffer back to remote filename<".rfile."> : expand(%)<".expand("%").">","ls!")
@@ -2242,8 +2256,6 @@ fun! s:NetrwBrowse(islocal,dirname)
   if !exists("s:netrw_initbookhist")
    call s:NetrwBookHistRead()
   endif
-"  call FOTEST(7)
-"call Decho("COMBAK#01 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " simplify the dirname (especially for ".."s in dirnames)
   if a:dirname !~ '^\a\+://'
@@ -2251,8 +2263,6 @@ fun! s:NetrwBrowse(islocal,dirname)
   else
    let dirname= a:dirname
   endif
-"  call FOTEST(8)
-"call Decho("COMBAK#02 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   if exists("s:netrw_skipbrowse")
    unlet s:netrw_skipbrowse
@@ -2271,17 +2281,13 @@ fun! s:NetrwBrowse(islocal,dirname)
    return
   endif
 
-  call s:NetrwOptionSave("w:")
-"  call FOTEST(9)
-"call Decho("COMBAK#03 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
+  call s:NetrwOptionSave("w:")                                                                                                            
 
   " re-instate any marked files
   if exists("s:netrwmarkfilelist_{bufnr('%')}")
 "   call Decho("clearing marked files")
    exe "2match netrwMarkFile /".s:netrwmarkfilemtch_{bufnr("%")}."/"
   endif
-"  call FOTEST(10)
-"call Decho("COMBAK#04 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   if a:islocal && exists("w:netrw_acdkeep") && w:netrw_acdkeep
 "   call Decho("handle w:netrw_acdkeep:")
@@ -2308,11 +2314,11 @@ fun! s:NetrwBrowse(islocal,dirname)
    setlocal ma noro
 "   call Decho("setlocal ma noro")
    let b:netrw_curdir= dirname
-"   call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
+"   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)
+   exe "sil! keepalt doau BufReadPre ".fnameescape(s:fname)
    silent call netrw#NetRead(2,s:method."://".s:user.s:machine."/".s:path)
-   if s:path !~ '.tar.bz2$' && s:path !~ '.tar.gz'
+   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)
    endif
@@ -2326,8 +2332,6 @@ fun! s:NetrwBrowse(islocal,dirname)
 "   call Dret("s:NetrwBrowse : file<".s:fname.">")
    return
   endif
-"  call FOTEST(11)
-"call Decho("COMBAK#05 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " use buffer-oriented WinVars if buffer ones exist but window ones don't {{{3
   call s:UseBufWinVars()
@@ -2339,8 +2343,6 @@ fun! s:NetrwBrowse(islocal,dirname)
 
   " set up menu {{{3
   call s:NetrwMenu(1)
-"  call FOTEST(12)
-"call Decho("COMBAK#06 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " set up buffer {{{3
   let reusing= s:NetrwGetBuffer(a:islocal,dirname)
@@ -2360,12 +2362,10 @@ fun! s:NetrwBrowse(islocal,dirname)
 "   call Dret("s:NetrwBrowse : re-using buffer")
    return
   endif
-""  call FOTEST(13) " PROBLEM WITH LISTING
-"call Decho("COMBAK#07 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " set b:netrw_curdir to the new directory name {{{3
 "  call Decho("set b:netrw_curdir to the new directory name:  (buf#".bufnr("%").")")
-   let b:netrw_curdir= dirname
+  let b:netrw_curdir= dirname
   if b:netrw_curdir =~ '[/\\]$'
    let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
   endif
@@ -2383,8 +2383,6 @@ fun! s:NetrwBrowse(islocal,dirname)
    let b:netrw_curdir= b:netrw_curdir.'/'
   endif
 "  call Decho("b:netrw_curdir<".b:netrw_curdir.">")
-""  call FOTEST(14) " PROBLEM WITH LISTING
-"call Decho("COMBAK#08 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " ------------
   " (local only) {{{3
@@ -2456,17 +2454,12 @@ fun! s:NetrwBrowse(islocal,dirname)
    let b:netrw_curdir= dirname
 "   call Decho("b:netrw_curdir<".b:netrw_curdir."> (remote)")
   endif  " (additional remote handling)
-""  call FOTEST(15) " PROBLEM WITH LISTING
-"call Decho("COMBAK#09 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " -----------------------
   " Directory Listing: {{{3
   " -----------------------
   call s:BrowserMaps(a:islocal)
-""  call FOTEST(16) " PROBLEM WITH LISTING
   call s:PerformListing(a:islocal)
-"  call FOTEST(17)
-"call Decho("COMBAK#10 buf(%)#".bufnr("%")."<".bufname("%")."> win#".winnr()." bufnr(win#1)=".winbufnr(1)."<".bufname(winbufnr(1))." bufnr(win#2)=".winbufnr(2)."<".bufname(winbufnr(2)).">")
 
   " The s:LocalBrowseShellCmdRefresh() function is called by an autocmd
   " installed by s:LocalFastBrowser() when g:netrw_fastbrowse <= 1 (ie. slow, medium speed).
@@ -2534,7 +2527,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "    call Decho("  re-use w:netrw_treebufnr=".w:netrw_treebufnr)
     let eikeep= &ei
     set ei=all
-    exe "b ".w:netrw_treebufnr
+    exe "sil! b ".w:netrw_treebufnr
     let &ei= eikeep
 "    call Dret("s:NetrwGetBuffer : bufnum#".w:netrw_treebufnr."<NetrwTreeListing>")
     return
@@ -2614,7 +2607,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
   endif
 
   " get enew buffer and name it -or- re-use buffer {{{3
-  keepj mark '
+  sil! keepj mark '
   if bufnum < 0 || !bufexists(bufnum)
 "   call Decho("--get enew buffer and name it (bufexists([bufnum=".bufnum."])=".bufexists(bufnum).")")
    call s:NetrwEnew(dirname)
@@ -2629,7 +2622,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
      let s:netrw_treelistnum= s:netrw_treelistnum + 1
     endif
     let w:netrw_treebufnr= bufnr("%")
-"    call Decho("  exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
+"    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>
@@ -2641,7 +2634,7 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "    let v:errmsg= "" " Decho
     let escdirname= fnameescape(dirname)
 "    call Decho("  errmsg<".v:errmsg."> bufnr(escdirname<".escdirname.">)=".bufnr(escdirname)." bufname()<".bufname(bufnr(escdirname)).">")
-"    call Decho('  exe silent! keepalt file '.escdirname)
+"    call Decho('  exe sil! keepalt file '.escdirname)
 "    let v:errmsg= "" " Decho
     exe 'sil! keepalt file '.escdirname
 "    call Decho("  errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
@@ -2654,13 +2647,13 @@ fun! s:NetrwGetBuffer(islocal,dirname)
    set ei=all
    if getline(2) =~ '^" Netrw Directory Listing'
 "    call Decho("  re-use buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using:  keepalt b ".bufnum)
-    exe "keepalt b ".bufnum
+    exe "sil! keepalt b ".bufnum
    else
 "    call Decho("  reusing buffer#".bufnum."<".((bufnum > 0)? bufname(bufnum) : "")."> using:  b ".bufnum)
-    exe "b ".bufnum
+    exe "sil! b ".bufnum
    endif
    if bufname("%") == '.'
-"    call Decho("exe silent! keepalt file ".fnameescape(getcwd()))
+"    call Decho("exe sil! keepalt file ".fnameescape(getcwd()))
     exe "sil! keepalt file ".fnameescape(getcwd())
    endif
    let &ei= eikeep
@@ -2689,8 +2682,8 @@ fun! s:NetrwGetBuffer(islocal,dirname)
 "  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)
-"  call Decho("exe keepalt file ".fnameescape(fname))
-  exe "keepalt file ".fnameescape(fname)
+"  call Decho("exe sil! keepalt file ".fnameescape(fname))
+  exe "sil! keepalt file ".fnameescape(fname)
 
   " delete all lines from buffer {{{3
 "  call Decho("--delete all lines from buffer--")
@@ -2831,8 +2824,8 @@ fun! s:NetrwListSettings(islocal)
   let fname= bufname("%")
 "  call Decho("setlocal bt=nofile nobl ma nonu nowrap noro")
   setlocal bt=nofile nobl ma nonu nowrap noro
-"  call Decho("exe keepalt file ".fnameescape(fname))
-  exe "keepalt file ".fnameescape(fname)
+"  call Decho("exe sil! keepalt file ".fnameescape(fname))
+  exe "sil! keepalt file ".fnameescape(fname)
   if g:netrw_use_noswf
    setlocal noswf
   endif
@@ -2891,7 +2884,7 @@ fun! s:NetrwListStyle(islocal)
 
   " clear buffer - this will cause NetrwBrowse/LocalBrowseCheck to do a refresh
 "  call Decho("clear buffer<".expand("%")."> with :%d")
-  keepj %d
+  sil! keepj %d
   " following prevents tree listing buffer from being marked "modified"
   setlocal nomod
 
@@ -2903,11 +2896,11 @@ fun! s:NetrwListStyle(islocal)
   call s:NetrwCursorline()
 
   " keep cursor on the filename
-  sil keepj $
+  sil! keepj $
   let result= search('\%(^\%(|\+\s\)\=\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bc')
 "  call Decho("search result=".result." w:netrw_bannercnt=".(exists("w:netrw_bannercnt")? w:netrw_bannercnt : 'N/A'))
   if result <= 0 && exists("w:netrw_bannercnt")
-   exe "keepj ".w:netrw_bannercnt
+   exe "sil! keepj ".w:netrw_bannercnt
   endif
 
 "  call Dret("NetrwListStyle".(exists("w:netrw_liststyle")? ' : w:netrw_liststyle='.w:netrw_liststyle : ""))
@@ -3095,6 +3088,7 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
       endif
      endif
     endif
+
     " the point where netrw actually edits the (local) file
     " if its local only: LocalBrowseCheck() doesn't edit a file, but NetrwBrowse() will
     if a:islocal
@@ -3110,9 +3104,12 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
     "   or as a list of function references.  It will ignore anything that's not
     "   a function reference.  See  :help Funcref  for information about function references.
     if exists("g:Netrw_funcref")
+"     call Decho("handle optional Funcrefs")
      if type(g:Netrw_funcref) == 2
+"      call Decho("handling a g:Netrw_funcref")
       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()
@@ -3246,8 +3243,14 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,
 
   call s:NetrwOptionRestore("s:")
   if dolockout
-"   call Decho("doing modification lockout settings: ma nomod noro")
-   setlocal ma nomod noro
+"   call Decho("filewritable(dirname<".dirname.">)=".filewritable(dirname))
+   if filewritable(dirname)
+"    call Decho("doing modification lockout settings: ma nomod noro")
+    setlocal ma nomod noro
+   else
+"    call Decho("doing modification lockout settings: ma nomod ro")
+    setlocal ma nomod ro
+   endif
 "   call Decho("setlocal ma nomod noro")
   endif
 
@@ -3510,7 +3513,6 @@ fun! netrw#Explore(indx,dosplit,style,..
   let curdir     = simplify(b:netrw_curdir)
   let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e')
 "  call Decho("curdir<".curdir.">  curfiledir<".curfiledir.">")
-"  call FOTEST(1)
 
   " save registers
   sil! let keepregstar = @*
@@ -3561,7 +3563,6 @@ fun! netrw#Explore(indx,dosplit,style,..
 "   call Decho("case a:dosplit=".a:dosplit." AND modified=".&modified." AND a:style=".a:style." is not 6")
   endif
   keepj norm! 0
-"  call FOTEST(2)
 
   if a:0 > 0
 "   call Decho("case [a:0=".a:0."] > 0: a:1<".a:1.">")
@@ -3596,7 +3597,6 @@ fun! netrw#Explore(indx,dosplit,style,..
    return
   endif
 
-"  call FOTEST(3)
 "  call Decho("dirname<".dirname.">")
   if dirname =~ '\.\./\=$'
    let dirname= simplify(fnamemodify(dirname,':p:h'))
@@ -3648,7 +3648,6 @@ fun! netrw#Explore(indx,dosplit,style,..
    let starpat= 0
 "   call Decho("default case: starpat=".starpat)
   endif
-"  call FOTEST(4)
 
   if starpat == 0 && a:indx >= 0
    " [Explore Hexplore Vexplore Sexplore] [dirname]
@@ -3875,7 +3874,6 @@ fun! netrw#Explore(indx,dosplit,style,..
     call netrw#LocalBrowseCheck(s:NetrwBrowseChgDir(1,newdir))
    endif
   endif
-"  call FOTEST(5)
 
   " visual display of **/ **// */ Exploration files
 "  call Decho("w:netrw_explore_indx=".(exists("w:netrw_explore_indx")? w:netrw_explore_indx : "doesn't exist"))
@@ -3920,7 +3918,6 @@ fun! netrw#Explore(indx,dosplit,style,..
    echo " "
 "   call Decho("cleared explore match list")
   endif
-"  call FOTEST(6)
 
   sil! let @* = keepregstar
   sil! let @+ = keepregstar
@@ -4390,7 +4387,7 @@ endfun
 "                          using g:netrw_compress_suffix to know which to
 "                          do.  By default:
 "                            g:netrw_compress        = "gzip"
-"                            g:netrw_decompress      = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf"}
+"                            g:netrw_decompress      = { ".gz" : "gunzip" , ".bz2" : "bunzip2" , ".zip" : "unzip" , ".tar" : "tar -xf", ".xz" : "unxz"}
 fun! s:NetrwMarkFileCompress(islocal)
 "  call Dfunc("s:NetrwMarkFileCompress(islocal=".a:islocal.")")
   let svpos    = netrw#NetrwSavePosn()
@@ -4423,6 +4420,7 @@ fun! s:NetrwMarkFileCompress(islocal)
       endif
       break
      endif
+     unlet sfx
     endfor
     if exists("exe")
      unlet exe
@@ -5219,6 +5217,7 @@ fun! s:NetrwMenu(domenu)
     exe 'sil! menu '.g:NetrwMenuPriority.'.9.4   '.g:NetrwTopLvlMenu.'Browsing\ Control.Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
     exe 'sil! menu '.g:NetrwMenuPriority.'.9.5   '.g:NetrwTopLvlMenu.'Browsing\ Control.Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
     exe 'sil! menu '.g:NetrwMenuPriority.'.10    '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
+    exe 'sil! menu '.g:NetrwMenuPriority.'.11.1  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Create\ New\ File<tab>%	%'
     exe 'sil! menu '.g:NetrwMenuPriority.'.11.1  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Current\ Window<tab><cr>	'."\<cr>"
     exe 'sil! menu '.g:NetrwMenuPriority.'.11.2  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.Preview\ File/Directory<tab>p	p'
     exe 'sil! menu '.g:NetrwMenuPriority.'.11.3  '.g:NetrwTopLvlMenu.'Edit\ File/Dir.In\ Previous\ Window<tab>P	P'
@@ -5814,7 +5813,7 @@ fun! s:NetrwRefresh(islocal,dirname)
   setlocal ma noro
 "  call Decho("setlocal ma noro")
 "  call Decho("clear buffer<".expand("%")."> with :%d")
-  keepj %d
+  sil! keepj %d
   if a:islocal
    call netrw#LocalBrowseCheck(a:dirname)
   else
@@ -6093,7 +6092,7 @@ fun! s:NetrwTreeDir()
 "    call Decho("user attempted to close treeroot")
     " now force a refresh
 "    call Decho("clear buffer<".expand("%")."> with :%d")
-    keepj %d
+    sil! keepj %d
 "    call Dret("NetrwTreeDir <".treedir."> : (side effect) s:treecurpos<".string(s:treecurpos).">")
     return b:netrw_curdir
    endif
@@ -6174,7 +6173,7 @@ fun! s:NetrwTreeDisplay(dir,depth)
     call s:NetrwTreeDisplay(direntry.'/',depth)
    else
 "    call Decho("<".entry."> is not a key in treedict (no subtree)")
-    keepj call setline(line("$")+1,depth.entry)
+    sil! keepj call setline(line("$")+1,depth.entry)
    endif
   endfor
 "  call Dret("NetrwTreeDisplay")
@@ -6206,10 +6205,10 @@ fun! s:NetrwTreeListing(dirname)
    " update the directory listing for the current directory
 "   call Decho("updating dictionary with ".a:dirname.":[..directory listing..]")
 "   call Decho("bannercnt=".w:netrw_bannercnt." line($)=".line("$"))
-   exe "silent! keepjumps ".w:netrw_bannercnt.',$g@^\.\.\=/$@d'
+   exe "sil! keepj ".w:netrw_bannercnt.',$g@^\.\.\=/$@d'
    let w:netrw_treedict[a:dirname]= getline(w:netrw_bannercnt,line("$"))
 "   call Decho("w:treedict[".a:dirname."]= ".string(w:netrw_treedict[a:dirname]))
-   exe "silent! keepjumps ".w:netrw_bannercnt.",$d"
+   exe "sil! keepj ".w:netrw_bannercnt.",$d"
 
    " if past banner, record word
    if exists("w:netrw_bannercnt") && line(".") > w:netrw_bannercnt
@@ -6263,21 +6262,21 @@ fun! s:NetrwWideListing()
    let newcolstart = w:netrw_bannercnt + fpc
    let newcolend   = newcolstart + fpc - 1
 "   call Decho("bannercnt=".w:netrw_bannercnt." fpl=".w:netrw_fpl." fpc=".fpc." newcol[".newcolstart.",".newcolend."]")
-   silent! let keepregstar = @*
+   sil! let keepregstar = @*
    while line("$") >= newcolstart
     if newcolend > line("$") | let newcolend= line("$") | endif
     let newcolqty= newcolend - newcolstart
     exe newcolstart
     if newcolqty == 0
-     exe "sil keepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
+     exe "sil! keepj norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
     else
-     exe "sil keepj norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
-    endif
-    exe "sil keepj ".newcolstart.','.newcolend.'d'
-    exe 'sil keepj '.w:netrw_bannercnt
+     exe "sil! keepj norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
+    endif
+    exe "sil! keepj ".newcolstart.','.newcolend.'d'
+    exe 'sil! keepj '.w:netrw_bannercnt
    endwhile
    silent! let @*= keepregstar
-   exe "sil keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
+   exe "sil! keepj ".w:netrw_bannercnt.',$s/\s\+$//e'
    call histdel("/",-1)
    setlocal noma nomod ro
 "   call Dret("NetrwWideListing")
@@ -6302,7 +6301,7 @@ fun! s:PerformListing(islocal)
   if exists("w:netrw_liststyle") && w:netrw_liststyle == s:TREELIST && exists("w:netrw_treedict")
    " force a refresh for tree listings
 "   call Decho("force refresh for treelisting: clear buffer<".expand("%")."> with :%d")
-   keepj %d
+   sil! keepj %d
   endif
 
   " save current directory on directory history list
@@ -6316,7 +6315,7 @@ fun! s:PerformListing(islocal)
    keepj put ='\"   '.b:netrw_curdir
    keepj 1d
    let w:netrw_bannercnt= 3
-   exe "keepj ".w:netrw_bannercnt
+   exe "sil! keepj ".w:netrw_bannercnt
   else
    keepj 1
    let w:netrw_bannercnt= 1
@@ -6342,7 +6341,7 @@ fun! s:PerformListing(islocal)
     keepj put ='\"   Sorted by '.sortby
     let w:netrw_bannercnt= w:netrw_bannercnt + 1
    endif
-   exe "keepj ".w:netrw_bannercnt
+   exe "sil! keepj ".w:netrw_bannercnt
   endif
 
   " show copy/move target, if any
@@ -6351,15 +6350,15 @@ fun! s:PerformListing(islocal)
 "    call Decho("show copy/move target<".s:netrwmftgt.">")
     keepj put =''
     if s:netrwmftgt_islocal
-     keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
+     sil! keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (local)')
     else
-     keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
+     sil! keepj call setline(line("."),'"   Copy/Move Tgt: '.s:netrwmftgt.' (remote)')
     endif
     let w:netrw_bannercnt= w:netrw_bannercnt + 1
    else
 "    call Decho("s:netrwmftgt does not exist, don't make Copy/Move Tgt")
    endif
-   exe "keepj ".w:netrw_bannercnt
+   exe "sil! keepj ".w:netrw_bannercnt
   endif
 
   " Hiding...  -or-  Showing... {{{3
@@ -6382,14 +6381,14 @@ fun! s:PerformListing(islocal)
   " bannercnt should index the line just after the banner
   if g:netrw_banner
    let w:netrw_bannercnt= w:netrw_bannercnt + 1
-   exe "keepj ".w:netrw_bannercnt
+   exe "sil! keepj ".w:netrw_bannercnt
 "   call Decho("bannercnt=".w:netrw_bannercnt." (should index line just after banner) line($)=".line("$"))
   endif
 
   " set up syntax highlighting {{{3
 "  call Decho("set up syntax highlighting")
   if has("syntax")
-   setlocal ft=netrw
+   setf netrw
    if !exists("g:syntax_on") || !g:syntax_on
     setlocal ft=
    endif
@@ -6430,7 +6429,7 @@ fun! s:PerformListing(islocal)
      endif
      " remove priority pattern prefix
 "     call Decho("remove priority pattern prefix")
-     exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
+     exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{3}'.g:netrw_sepchr.'//e'
      call histdel("/",-1)
 
     elseif a:islocal
@@ -6438,12 +6437,12 @@ fun! s:PerformListing(islocal)
 "      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')
-       exe 'sil keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
+       exe 'sil! keepj '.w:netrw_bannercnt.',$sort'.' '.g:netrw_sort_options
       else
 "       call Decho('exe silent keepjumps '.w:netrw_bannercnt.',$sort!')
-       exe 'sil keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
+       exe 'sil! keepj '.w:netrw_bannercnt.',$sort!'.' '.g:netrw_sort_options
       endif
-     exe 'sil keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     exe 'sil! keepj '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
      call histdel("/",-1)
      endif
     endif
@@ -6451,7 +6450,7 @@ fun! s:PerformListing(islocal)
    elseif g:netrw_sort_direction =~ 'r'
 "    call Decho('reverse the sorted listing')
     if !g:netrw_banner || w:netrw_bannercnt < line('$')
-     exe 'sil keepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
+     exe 'sil! keepj '.w:netrw_bannercnt.',$g/^/m '.w:netrw_bannercnt
      call histdel("/",-1)
     endif
    endif
@@ -6465,8 +6464,8 @@ fun! s:PerformListing(islocal)
   if exists("w:netrw_bannercnt") && (line("$") > w:netrw_bannercnt || !g:netrw_banner)
    " place cursor on the top-left corner of the file listing
 "   call Decho("place cursor on top-left corner of file listing")
-   exe 'sil keepj '.w:netrw_bannercnt
-   keepj norm! 0
+   exe 'sil! keepj '.w:netrw_bannercnt
+   sil! keepj norm! 0
   endif
 
   " record previous current directory
@@ -6479,7 +6478,7 @@ fun! s:PerformListing(islocal)
 
   " set display to netrw display settings
 "  call Decho("set display to netrw display settings (noma nomod etc)")
-  setlocal noma nomod nonu nobl nowrap ro
+  exe "setl ".g:netrw_bufsettings
   if exists("s:treecurpos")
 
    call netrw#NetrwRestorePosn(s:treecurpos)
@@ -6586,16 +6585,16 @@ fun! s:NetrwRemoteListing()
    endif
 "   call Decho("listcmd<".listcmd."> (using g:netrw_ftp_list_cmd)")
    call s:NetrwRemoteFtpCmd(s:path,listcmd)
-"   exe "keepj ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
+"   exe "sil! keepalt keepj ".w:netrw_bannercnt.',$g/^./call Decho("raw listing: ".getline("."))'
 
    if w:netrw_liststyle == s:THINLIST || w:netrw_liststyle == s:WIDELIST || w:netrw_liststyle == s:TREELIST
     " shorten the listing
 "    call Decho("generate short listing")
-    exe "keepj ".w:netrw_bannercnt
+    exe "sil! keepalt keepj ".w:netrw_bannercnt
 
     " cleanup
     if g:netrw_ftp_browse_reject != ""
-     exe "sil! keepj g/".g:netrw_ftp_browse_reject."/keepj d"
+     exe "sil! keepalt keepj g/".g:netrw_ftp_browse_reject."/keepj d"
      call histdel("/",-1)
     endif
     sil! keepj %s/\r$//e
@@ -6603,15 +6602,15 @@ fun! s:NetrwRemoteListing()
 
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
-    exe "keepj ".w:netrw_bannercnt
+    exe "sil! keepj ".w:netrw_bannercnt
     let line2= search('^\.\.\/\%(\s\|$\)','cnW')
     if line2 == 0
 "     call Decho("netrw is putting ./ and ../ into listing")
-     keepj put='../'
-     keepj put='./'
-    endif
-    exe "keepj ".line1
-    keepjumps norm! 0
+     sil! keepj put='../'
+     sil! keepj put='./'
+    endif
+    exe "sil! keepj ".line1
+    sil! keepj norm! 0
 
 "    call Decho("line1=".line1." line2=".line2." line(.)=".line("."))
     if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
@@ -6636,25 +6635,25 @@ fun! s:NetrwRemoteListing()
 "   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))
-    exe "silent r! ".listcmd.shellescape(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
-    keepj g/^Listing directory/keepj d
-    keepj g/^d[-rwx][-rwx][-rwx]/keepj s+$+/+e
-    sil keepj g/^l[-rwx][-rwx][-rwx]/keepj s+$+@+e
+    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)
     if g:netrw_liststyle != s:LONGLIST
-     keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
+     sil! keepj g/^[dlsp-][-rwx][-rwx][-rwx]/keepj s/^.*\s\(\S\+\)$/\1/e
      call histdel("/",-1)
     endif
    else
     if s:path == ""
 "     call Decho("2: exe silent r! ".listcmd)
-     exe "sil r! ".listcmd
+     exe "sil! keepalt r! ".listcmd
     else
 "     call Decho("3: exe silent r! ".listcmd.' '.shellescape(s:path,1))
-     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
    endif
@@ -6662,7 +6661,7 @@ fun! s:NetrwRemoteListing()
    " cleanup
    if g:netrw_ftp_browse_reject != ""
 "    call Decho("(cleanup) exe silent! g/".g:netrw_ssh_browse_reject."/keepjumps d")
-    exe "sil! g/".g:netrw_ssh_browse_reject."/keepjumps d"
+    exe "sil! g/".g:netrw_ssh_browse_reject."/keepj d"
     call histdel("/",-1)
    endif
   endif
@@ -6673,23 +6672,23 @@ fun! s:NetrwRemoteListing()
 
    if s:method == "ftp"
     " cleanup
-    exe "keepj ".w:netrw_bannercnt
+    exe "sil! keepj ".w:netrw_bannercnt
     while getline('.') =~ g:netrw_ftp_browse_reject
-     keepj d
+     sil! keepj d
     endwhile
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
-    keepj 1
-    sil keepj call search('^\.\.\/\%(\s\|$\)','W')
+    sil! keepj 1
+    sil! keepj call search('^\.\.\/\%(\s\|$\)','W')
     let line2= line(".")
     if line2 == 0
-     exe 'keepj '.w:netrw_bannercnt."put='./'"
+     exe 'sil! keepj '.w:netrw_bannercnt."put='./'"
      if b:netrw_curdir != '/'
-      exe 'keepj '.w:netrw_bannercnt."put='../'"
+      exe 'sil! keepj '.w:netrw_bannercnt."put='../'"
      endif
     endif
-   exe "keepj ".line1
-   keepjumps norm! 0
+    exe "sil! keepj ".line1
+    sil! keepj norm! 0
    endif
 
    if search('^\d\{2}-\d\{2}-\d\{2}\s','n') " M$ ftp site cleanup
@@ -6796,7 +6795,7 @@ fun! s:NetrwRemoteRmFile(path,rmfile,all
      if path =~ '^\a\+://'
       let path= substitute(path,'^\a\+://[^/]\+/','','')
      endif
-     silent! keepjumps .,$d
+     sil! keepj .,$d
      call s:NetrwRemoteFtpCmd(path,"delete ".'"'.a:rmfile.'"')
     else
 "     call Decho("case ssh: g:netrw_rm_cmd<".g:netrw_rm_cmd.">")
@@ -7868,8 +7867,10 @@ fun! s:GetTempfile(fname)
   if a:fname != ""
    if a:fname =~ '\.[^./]\+$'
 "    call Decho("using fname<".a:fname.">'s suffix")
-    if a:fname =~ '.tar.gz' || a:fname =~ '.tar.bz2'
+    if a:fname =~ '\.tar\.gz$' || a:fname =~ '\.tar\.bz2$' || a:fname =~ '\.tar\.xz$'
      let suffix = ".tar".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
+    elseif a:fname =~ '.txz$'
+     let suffix = ".txz".substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
     else
      let suffix = substitute(a:fname,'^.*\(\.[^./]\+\)$','\1','e')
     endif
@@ -8023,7 +8024,9 @@ fun! s:NetrwEnew(...)
 
   call s:NetrwOptionRestore("w:")
 "  call Decho("generate a buffer with keepjumps keepalt enew!")
+  let netrw_keepdiff= &l:diff
   keepj keepalt enew!
+  let &l:diff= netrw_keepdiff
 "  call Decho("bufnr($)=".bufnr("$"))
   call s:NetrwOptionSave("w:")
 
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.3c.  Last change: 2010 Jul 20
+*map.txt*       For Vim version 7.3c.  Last change: 2010 Jul 27
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1266,6 +1266,8 @@ the 'path' option: >
     :    return split(globpath(&path, a:A), "\n")
     :endfun
 <
+This example does not work for file names with spaces!
+
 
 Range handling				*E177* *E178* *:command-range*
 							*:command-count*
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.3c.  Last change: 2010 May 14
+*pi_netrw.txt*  For Vim version 7.3c.  Last change: 2010 Jul 27
 
 	    -----------------------------------------------------
 	    NETRW REFERENCE MANUAL    by Charles E. Campbell, Jr.
@@ -318,15 +318,24 @@ settings are described below, in |netrw-
  *b:netrw_lastfile*	last file Network-read/written retained on a
 			per-buffer basis (supports plain :Nw )
 
+ *g:netrw_bufsettings*	the settings that netrw buffers have
+ 			(default) noma nomod nonu nowrap ro nobl
+
  *g:netrw_chgwin*	specifies a window number where file edits will take
 			place.  (also see |netrw-C|)
 			(default) not defined
 
- *g:Netrw_funcref*	specifies a function to be called when netrw edits
-			a file.  The file is first edited, and then the
-			function reference (|Funcref|) is called.
+ *g:Netrw_funcref*	specifies a function (or functions) to be called when
+			netrw edits a file.  The file is first edited, and
+			then the function reference (|Funcref|) is called.
+			This variable may also hold a |List| of Funcrefs.
 			(default) not defined
-
+>
+			    Example: place in .vimrc; affects all file opening
+			    fun! MyFuncRef()
+			    endfun
+			    let g:Netrw_funcref= function("MyFuncRef")
+<
  *g:netrw_ftp*		if it doesn't exist, use default ftp
 			=0 use default ftp		       (uid password)
 			=1 use alternate ftp method	  (user uid password)
@@ -456,7 +465,7 @@ browsed remote directories, for example.
 On the other hand, thanks go to Jan M. for pointing out the many
 vulnerabilities that netrw (and vim itself) had had in handling "crafted"
 filenames.  The |shellescape()| and |fnameescape()| functions were written in
-response by Bram Moolenaar to handle this sort of problems, and netrw has
+response by Bram Moolenaar to handle these sort of problems, and netrw has
 been modified to use them.  Still, my advice is, if the "filename" looks like
 a vim command that you aren't comfortable with having executed, don't open it.
 
@@ -589,7 +598,7 @@ password.
 PASSWORD						*netrw-passwd*
 
 The script attempts to get passwords for ftp invisibly using |inputsecret()|,
-a built-in Vim function.  See |NetUserPass()| for how to change the password
+a built-in Vim function.  See |netrw-uidpass| for how to change the password
 after one has set it.
 
 Unfortunately there doesn't appear to be a way for netrw to feed a password to
@@ -778,8 +787,10 @@ variables listed below, and may be modif
 
 The g:netrw_..._cmd options (|g:netrw_ftp_cmd| and |g:netrw_sftp_cmd|)
 specify the external program to use handle the ftp protocol.  They may
-include command line options (such as -p for passive mode).
-
+include command line options (such as -p for passive mode). Example: >
+
+	let g:netrw_ftp_cmd= "ftp -p"
+<
 Browsing is supported by using the |g:netrw_list_cmd|; the substring
 "HOSTNAME" will be changed via substitution with whatever the current request
 is for a hostname.
@@ -803,7 +814,7 @@ temporary file:
                                               get filename tempfile >
   ---------------------------------------------------------------------
 <
-The |g:netrw_ftpmode| and g:netrw_extracmd are optional.
+The |g:netrw_ftpmode| and |g:netrw_extracmd| are optional.
 
 Netrw then executes the lines above by use of a filter:
 >
@@ -2544,13 +2555,13 @@ 10. Problems and Fixes					*netrw-proble
 
 		(Vit Gottwald) How to generate public/private key and save
 		public key it on server: >
-  http://www.tartarus.org/~simon/puttydoc/Chapter8.html#pubkey-gettingready
-			8.3 Getting ready for public key authentication
+  http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter8.html#pubkey-gettingready
+			(8.3 Getting ready for public key authentication)
 <
 		How to use a private key with 'pscp': >
 
-			http://www.tartarus.org/~simon/puttydoc/Chapter5.html
-			5.2.4 Using public key authentication with PSCP
+  http://www.chiark.greenend.org.uk/~sgtatham/putty/0.60/htmldoc/Chapter5.html
+			(5.2.4 Using public key authentication with PSCP)
 <
 		(Ben Schmidt) I find the ssh included with cwRsync is
 		brilliant, and install cwRsync or cwRsyncServer on most
@@ -2695,9 +2706,25 @@ which is loaded automatically at startup
 ==============================================================================
 12. History						*netrw-history* {{{1
 
+	v139: May 14, 2010 * when viewing remote directory listings and
+			     changing listing style, going to tree listing
+			     mode was issuing two rather useless messages
+			     about the buffer name.  They have now been
+			     silenced.
+			   * (Jean Johner) with "behave mswin", clicking
+			     on a filename in wide mode opened a new file
+			     with a missing first letter
+			   * (Britton Kerin) wanted netrw listings to be
+			     buflisted; the |g:netrw_bufsettings| option
+			     permits that.
+			   * (John Orr) pointed out that the intended maparg
+			     test for gx was actually testing for g rather
+			     than gx.  Fixed.
+	      Jun 18, 2010 * (Jan Steffens) added support for xz compression
+	      Jun 23, 2010 * vimdiff dir1 dir2 now works
 	v138: May 01, 2010 * added the bomb setting to the Save-Set-Restore
 			     option handling (for Tony M)
-			   * (Bram Moolenaar) netrw optionally sets cursorline
+	      May 14, 2010 * (Bram Moolenaar) netrw optionally sets cursorline
 			     (and sometimes cursorcolumn) for its display.
 			     This option setting was leaking through with
 			     remote file handling.
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.3c.  Last change: 2010 Jul 26
+*todo.txt*      For Vim version 7.3c.  Last change: 2010 Jul 27
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,18 +30,30 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Problem with concealends in v50 of tex.vim? (Charles Campbell, 2010 Jul 26)
+Fixed by patch from Vince?
+
+Conceal problem: CTRL-L draws differently than individual line. (Benjamin
+Fritz, 2010 Jul 27)
+
 Access to free memory with :redir command. (Dominique Pelle, 2010 Jul 25)
-Easier way to reproduce in later message.
+Easier way to reproduce in later message. (2010 Jul 26)
+call get_lval() again in var_redir_stop().
 
 Patch for VMS. Zoltan Arpadffy, 2010 Jul 26.
 
-Patch for :find completion. (Nazri Ramliy)
-But I prefer to keep term.h and include/term.h  Nazri will work on it.
+Patch for :find completion. (Nazri Ramliy, 2010 Jul 27, and leak fix)
+
+Windows 7: "Open with..." menu starts Vim without a file.
+
+Windows 7: installing Vim again doesn't find the previously installed Vim.
+
+ftplugin/mupad.vim should not source AppendMatchGroup.vim, it should use an
+autoload function.
+Same for indent/GenericIndent.vim
 
 Move more common code from if_python.c and if_python3.c to if_py_both.h
 
-Problem with concealends in v50 of tex.vim? (Charles Campbell, 2010 Jul 26)
-
 Add filetype completion to user commands. (Christian Brabandt, 2010 Jul 26)
 But call it "filetype" instead of "syntax".
 
--- a/runtime/indent/haml.vim
+++ b/runtime/indent/haml.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	Haml
 " Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
-" Last Change:	2008 Sep 11
+" Last Change:	2010 May 21
 
 if exists("b:did_indent")
   finish
--- 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:		Aug 10, 2008
+" Date:		Jul 27, 2010
 " 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 = "v138"
+let g:loaded_netrwPlugin = "v139"
 if v:version < 702
  echohl WarningMsg | echo "***netrw*** you need vim version 7.2 for this version of netrw" | echohl None
  finish
@@ -81,7 +81,7 @@ com! -nargs=0	NetrwSettings	call netrwSe
 com! -bang	NetrwClean	call netrw#NetrwClean(<bang>0)
 
 " Maps:
-if !exists("g:netrw_nogx") && maparg('g','n') == ""
+if !exists("g:netrw_nogx") && maparg('gx','n') == ""
  if !hasmapto('<Plug>NetrwBrowseX')
   nmap <unique> gx <Plug>NetrwBrowseX
  endif