summaryrefslogtreecommitdiffstats
path: root/runtime/autoload/netrw.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/autoload/netrw.vim')
-rw-r--r--runtime/autoload/netrw.vim895
1 files changed, 469 insertions, 426 deletions
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 6064a6570d..6221294bbd 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across
" AUTOLOAD SECTION
-" Date: Jun 12, 2008
-" Version: 125
+" Date: Jul 12, 2008
+" Version: 127
" 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
@@ -27,19 +27,13 @@ if !exists("s:NOTE")
let s:WARNING = 1
let s:ERROR = 2
endif
-let g:loaded_netrw = "v125"
+let g:loaded_netrw = "v127"
" sanity checks
if v:version < 700
call netrw#ErrorMsg(s:WARNING,"you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw",1)
finish
endif
-if !exists("*shellescape")
- call netrw#ErrorMsg(s:ERROR,"you need to upgade your vim so that it has shellescape()",64)
-endif
-if !exists("*fnameescape")
- call netrw#ErrorMsg(s:ERROR,"you need to upgade your vim so that it has fnameescape()",65)
-endif
let s:keepcpo= &cpo
setlocal cpo&vim
@@ -312,6 +306,9 @@ if !exists("g:netrw_sort_by")
" alternatives: date size
let g:netrw_sort_by= "name"
endif
+if !exists("g:netrw_sort_options")
+ let g:netrw_sort_options= ""
+endif
if !exists("g:netrw_sort_direction")
" alternative: reverse (z y x ...)
let g:netrw_sort_direction= "normal"
@@ -415,7 +412,7 @@ fun! s:NetrwOptionSave(vt)
let {a:vt}netrw_twkeep = &l:tw " textwidth
let {a:vt}netrw_wigkeep = &l:wig " wildignore
if has("win32") && !has("win95")
- let {a:vt}netrw_swfkeep= &l:swf " swapfile
+ 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= @/
@@ -428,7 +425,7 @@ endfun
fun! s:NetrwOptionRestore(vt)
" call Dfunc("s:NetrwOptionRestore(vt<".a:vt.">) win#".winnr()." buf#".bufnr("%"))
if !exists("{a:vt}netrw_optionsave")
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwOptionRestore : ".a:vt."netrw_optionsave doesn't exist")
return
endif
@@ -492,7 +489,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=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwOptionRestore : win#".winnr()." buf#".bufnr("%"))
endfun
@@ -536,12 +533,12 @@ fun! netrw#NetrwClean(sys)
for dir in split(&rtp,',')
if filereadable(dir."/plugin/netrwPlugin.vim")
" call Decho("removing netrw-related files from ".dir)
- if s:System("delete",dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif
- if s:System("delete",dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif
- if s:System("delete",dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif
- if s:System("delete",dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif
- if s:System("delete",dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif
- if s:System("delete",dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif
+ if s:NetrwDelete(dir."/plugin/netrwPlugin.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/plugin/netrwPlugin.vim",55) |endif
+ if s:NetrwDelete(dir."/autoload/netrwFileHandlers.vim")|call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwFileHandlers.vim",55)|endif
+ if s:NetrwDelete(dir."/autoload/netrwSettings.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrwSettings.vim",55) |endif
+ if s:NetrwDelete(dir."/autoload/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/autoload/netrw.vim",55) |endif
+ if s:NetrwDelete(dir."/syntax/netrw.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrw.vim",55) |endif
+ if s:NetrwDelete(dir."/syntax/netrwlist.vim") |call netrw#ErrorMsg(1,"unable to remove ".dir."/syntax/netrwlist.vim",55) |endif
let diddir= dir
let diddel= diddel + 1
if !a:sys|break|endif
@@ -704,8 +701,8 @@ fun! netrw#NetRead(mode,...)
let uid_machine = g:netrw_machine
endif
endif
-" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile)
- exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile)
+" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+ exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(uid_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
@@ -725,18 +722,18 @@ fun! netrw#NetRead(mode,...)
exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'"
" call Decho("filter input: ".getline('.'))
if exists("g:netrw_port") && g:netrw_port != ""
-" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
- exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".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)
else
-" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
- exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
+" 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)
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
+ let debugkeep = &debug
setlocal debug=msg
call netrw#ErrorMsg(s:ERROR,getline(1),4)
- let &debug= debugkeep
+ let &debug = debugkeep
endif
call s:SaveBufVars()|bd!|call s:RestoreBufVars()
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
@@ -806,8 +803,8 @@ fun! netrw#NetRead(mode,...)
else
let useport= ""
endif
-" call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape))." ".tmpfile)
- exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape))." ".tmpfile
+" call Decho("exe s:netrw_silentxfer.!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+ exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
@@ -823,23 +820,22 @@ fun! netrw#NetRead(mode,...)
return
endif
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
if match(b:netrw_fname,"#") == -1
- " simple wget
-" call Decho('using simple wget (# not in b:netrw_fname<'.b:netrw_fname.">)")
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_fname))
- exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_fname)
+ " using g:netrw_http_cmd (usually wget or curl)
+" call Decho('using '.g:netrw_http_cmd.' (# not in b:netrw_fname<'.b:netrw_fname.">)")
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1)
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
else
- " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker)
+ " wget/curl 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.">)")
- let netrw_html= substitute(netrw_fname,"#.*$","","")
- let netrw_tag = substitute(netrw_fname,"^.*#","","")
+ let netrw_html= substitute(b:netrw_fname,"#.*$","","")
+ let netrw_tag = substitute(b:netrw_fname,"^.*#","","")
" call Decho("netrw_html<".netrw_html.">")
" call Decho("netrw_tag <".netrw_tag.">")
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_html))
- exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile)." ".shellescape("http://".g:netrw_machine.netrw_html)
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1))
+ 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>"
@@ -877,9 +873,8 @@ fun! netrw#NetRead(mode,...)
" rsync: NetRead Method #7 {{{3
elseif b:netrw_method == 7
" call Decho("read via rsync (method #7)")
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile)
- exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1))
+ exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".shellescape(tmpfile,1)
let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
@@ -888,7 +883,6 @@ fun! netrw#NetRead(mode,...)
" fetch://[user@]host[:http]/path
elseif b:netrw_method == 8
" call Decho("read via fetch (method #8)")
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
if g:netrw_fetch_cmd == ""
if !exists("g:netrw_quiet")
call netrw#ErrorMsg(s:ERROR,"fetch command not available",7)
@@ -903,11 +897,11 @@ fun! netrw#NetRead(mode,...)
" call Decho("read via fetch for ".netrw_option)
if exists("g:netrw_uid") && g:netrw_uid != "" && exists("s:netrw_passwd") && s:netrw_passwd != ""
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname))
- exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname)
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_uid.':'.s:netrw_passwd.'@'.g:netrw_machine."/".b:netrw_fname,1)
else
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_machine."/".netrw_fname))
- exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".shellescape(netrw_option."://".g:netrw_machine."/".netrw_fname)
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_fetch_cmd." ".shellescape(tmpfile,1)." ".shellescape(netrw_option."://".g:netrw_machine."/".b:netrw_fname,1)
endif
let result = s:NetrwGetFile(readcmd,tmpfile, b:netrw_method)
@@ -918,9 +912,8 @@ fun! netrw#NetRead(mode,...)
" sftp: NetRead Method #9 {{{3
elseif b:netrw_method == 9
" call Decho("read via sftp (method #9)")
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile)
- exe s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".netrw_fname)." ".tmpfile
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile)
+ exe s:netrw_silentxfer."!".g:netrw_sftp_cmd." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)." ".tmpfile
let result = s:NetrwGetFile(readcmd, tmpfile, b:netrw_method)
let b:netrw_lastfile = choice
@@ -939,7 +932,7 @@ fun! netrw#NetRead(mode,...)
endif
if s:FileReadable(tmpfile) && tmpfile !~ '.tar.bz2$' && tmpfile !~ '.tar.gz$' && tmpfile !~ '.zip' && tmpfile !~ '.tar' && readcmd != 't'
" call Decho("cleanup by deleting tmpfile<".tmpfile.">")
- call s:System("delete",fnameescape(tmpfile))
+ call s:NetrwDelete(fnameescape(tmpfile))
endif
call s:NetrwOptionRestore("w:")
@@ -975,17 +968,17 @@ 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! ".v:cmdarg." ".tmpfile)
- silent exe "w! ".v:cmdarg." ".tmpfile
+" call Decho("(write entire file) silent exe w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+ silent exe "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! ".v:cmdarg." ".cygtmpfile)
- silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".cygtmpfile
+" call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(cygtmpfile))
+ silent exe 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! ".v:cmdarg." ".tmpfile)
- silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile
+" call Decho("(write selected portion) silent exe ".a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile))
+ silent exe a:firstline."," . a:lastline . "w! ".fnameescape(v:cmdarg)." ".fnameescape(tmpfile)
endif
if curbufname == ""
@@ -1079,9 +1072,8 @@ fun! netrw#NetWrite(...) range
let uid_machine = g:netrw_machine
endif
endif
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile)." ".shellescape(uid_machine.":".netrw_fname))
- exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile)." ".shellescape(uid_machine.":".netrw_fname)
+" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile,1)." ".shellescape(uid_machine.":".b:netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".shellescape(tmpfile,1)." ".shellescape(uid_machine.":".b:netrw_fname,1)
let b:netrw_lastfile = choice
".........................................
@@ -1101,12 +1093,12 @@ fun! netrw#NetWrite(...) range
exe "put ='".'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 ".g:netrw_machine." ".g:netrw_port)
- exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".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)
else
" call Decho("filter input window#".winnr())
-" call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
- exe s:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
+" 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)
endif
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
if getline(1) !~ "^$"
@@ -1167,14 +1159,13 @@ fun! netrw#NetWrite(...) range
" scp: NetWrite Method #4 {{{4
elseif b:netrw_method == 4
" call Decho("write via scp (method #4)")
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
if exists("g:netrw_port") && g:netrw_port != ""
- let useport= " ".g:netrw_scpport." ".g:netrw_port
+ let useport= " ".g:netrw_scpport." ".fnameescape(g:netrw_port)
else
let useport= ""
endif
-" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile)." ".shellescape(g:netrw_machine.":".netrw_fname))
- exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile)." ".shellescape(g:netrw_machine.":".netrw_fname)
+" call Decho("exe ".s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)
let b:netrw_lastfile = choice
".........................................
@@ -1215,9 +1206,8 @@ fun! netrw#NetWrite(...) range
" rsync: NetWrite Method #7 {{{4
elseif b:netrw_method == 7
" call Decho("write via rsync (method #7)")
- let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
-" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname)
- exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname
+" call Decho("executing: !".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1))
+ exe s:netrw_silentxfer."!".g:netrw_rsync_cmd." ".shellescape(tmpfile,1)." ".shellescape(g:netrw_machine.":".b:netrw_fname,1)
let b:netrw_lastfile = choice
".........................................
@@ -1235,8 +1225,8 @@ fun! netrw#NetWrite(...) range
put ='put \"'.escape(tmpfile,'\').'\" '.netrw_fname
" call Decho("filter input: ".getline('.'))
norm! 1Gdd
-" call Decho("executing: %!".g:netrw_sftp_cmd.' '.uid_machine)
- exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine
+" call Decho("executing: %!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1))
+ exe s:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.shellescape(uid_machine,1)
bd!
let b:netrw_lastfile= choice
@@ -1251,7 +1241,7 @@ fun! netrw#NetWrite(...) range
" call Decho("cleanup")
if s:FileReadable(tmpfile)
" call Decho("tmpfile<".tmpfile."> readable, will now delete it")
- call s:System("delete",tmpfile)
+ call s:NetrwDelete(tmpfile)
endif
call s:NetrwOptionRestore("w:")
@@ -1312,7 +1302,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" readcmd=='t': simply do nothing
if a:readcmd == 't'
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("NetrwGetFile : skip read of <".a:tfile.">")
return
endif
@@ -1336,8 +1326,8 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
else
let tfile= a:tfile
endif
-" " call Decho("exe silent! keepalt file ".tfile)
- exe "silent! keepalt file ".tfile
+" call Decho("exe silent! keepalt file ".fnameescape(tfile))
+ exe "silent! keepalt file ".fnameescape(tfile)
" edit temporary file (ie. read the temporary file in)
if rfile =~ '\.zip$'
@@ -1358,8 +1348,8 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
endif
" rename buffer back to remote filename
-" call Decho("exe silent! keepalt file ".escape(rfile,' '))
- exe "silent! keepalt file ".escape(rfile,' ')
+" call Decho("exe silent! keepalt file ".fnameescape(rfile))
+ exe "silent! keepalt file ".fnameescape(rfile)
if a:method == 5
set ft=html
else
@@ -1374,14 +1364,14 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" call Decho("read file<".a:tfile."> after current line")
let curline = line(".")
let lastline= line("$")
-" call Decho("exe<".a:readcmd." ".v:cmdarg." ".a:tfile."> line#".curline)
- exe a:readcmd." ".v:cmdarg." ".a:tfile
+" call Decho("exe<".a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile)."> line#".curline)
+ exe a:readcmd." ".fnameescape(v:cmdarg)." ".fnameescape(a:tfile)
let line1= curline + 1
let line2= line("$") - lastline + 1
else
" not readable
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" 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)
" call Dret("NetrwGetFile : tfile<".a:tfile."> not readable")
@@ -1406,7 +1396,7 @@ fun! s:NetrwGetFile(readcmd, tfile, method)
" make sure file is being displayed
" redraw!
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("NetrwGetFile")
endfun
@@ -1704,6 +1694,7 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(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>
if !hasmapto('<Plug>NetrwHideEdit')
nmap <buffer> <unique> <c-h> <Plug>NetrwHideEdit
endif
@@ -1775,6 +1766,7 @@ fun! s:BrowserMaps(islocal)
nnoremap <buffer> <silent> U :<c-u>call <SID>NetrwBookmarkDir(5,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> v :call <SID>NetrwSplit(2)<cr>
nnoremap <buffer> <silent> x :call netrw#NetrwBrowseX(<SID>NetrwBrowseChgDir(0,<SID>NetrwGetWord()),1)<cr>
+ nnoremap <buffer> <silent> % :call <SID>NetrwOpenFile(0)<cr>
if !hasmapto('<Plug>NetrwHideEdit')
nmap <buffer> <c-h> <Plug>NetrwHideEdit
endif
@@ -1797,7 +1789,7 @@ fun! s:BrowserMaps(islocal)
exe 'vnoremap <buffer> <silent> D :call <SID>NetrwRemoteRm("'.s:user.s:machine.'","'.s:path.'")<cr>'
exe 'nnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>'
exe 'vnoremap <buffer> <silent> R :call <SID>NetrwRemoteRename("'.s:user.s:machine.'","'.s:path.'")<cr>'
- nnoremap <buffer> <F1> :he netrw-browse-cmds<cr>
+ nnoremap <buffer> <F1> :he netrw-quickhelp<cr>
endif
call s:SetRexDir(a:islocal,b:netrw_curdir)
" call Dret("s:BrowserMaps")
@@ -1921,8 +1913,8 @@ fun! s:NetrwBookmarkDir(chg,curdir)
setlocal nomod
" call Decho("setlocal nomod")
endif
-" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
- exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
+" " call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
+ exe "e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
else
let g:NETRW_DIRHIST_CNT= ( g:NETRW_DIRHIST_CNT + 1 ) % g:netrw_dirhistmax
echo "Sorry, no predecessor directory exists yet"
@@ -1942,8 +1934,8 @@ fun! s:NetrwBookmarkDir(chg,curdir)
setlocal nomod
" call Decho("setlocal nomod")
endif
-" call Decho("exe e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT})
- exe "e! ".g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}
+" call Decho("exe e! ".fnameescape(g:NETRW_DIRHIST_{g:NETRW_DIRHIST_CNT}))
+ exe "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
@@ -2008,7 +2000,7 @@ fun! s:NetrwBrowse(islocal,dirname)
if exists("s:netrw_skipbrowse")
unlet s:netrw_skipbrowse
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : s:netrw_skipbrowse=".s:netrw_skipbrowse)
return
endif
@@ -2055,13 +2047,13 @@ fun! s:NetrwBrowse(islocal,dirname)
setlocal ma noro
" call Decho("setlocal ma noro")
let b:netrw_curdir= a:dirname
-" call Decho("exe silent! keepalt file ".s:method."://".s:user.s:machine."/".fnameescape(s:path)." (bt=".&bt.")")
- exe "silent! keepalt file ".s:method."://".s:user.s:machine."/".fnameescape(s:path)
- exe "silent keepalt doau BufReadPre ".s:fname
+" call Decho("exe silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)." (bt=".&bt.")")
+ exe "silent! keepalt file ".fnameescape(s:method."://".s:user.s:machine."/".s:path)
+ exe "silent 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'
" netrw.vim and tar.vim have already handled decompression of the tarball; avoiding gzip.vim error
- exe "silent keepalt doau BufReadPost ".s:fname
+ exe "silent keepalt doau BufReadPost ".fnameescape(s:fname)
endif
" save certain window-oriented variables into buffer-oriented variables {{{3
@@ -2069,7 +2061,7 @@ fun! s:NetrwBrowse(islocal,dirname)
call s:NetrwOptionRestore("w:")
setlocal ma nomod
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : file<".s:fname.">")
return
endif
@@ -2099,7 +2091,7 @@ fun! s:NetrwBrowse(islocal,dirname)
if reusing
call s:NetrwOptionRestore("w:")
setlocal noma nomod nowrap
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : re-using buffer")
return
endif
@@ -2150,7 +2142,7 @@ fun! s:NetrwBrowse(islocal,dirname)
call s:NetrwOptionRestore("w:")
setlocal noma nomod nowrap
let b:netrw_curdir= dirname
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : reusing buffer#".(exists("bufnum")? bufnum : 'N/A')."<".dirname."> getcwd<".getcwd().">")
return
endif
@@ -2188,7 +2180,7 @@ fun! s:NetrwBrowse(islocal,dirname)
endif
call s:NetrwOptionRestore("w:")
setlocal noma nomod nowrap
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : badly formatted dirname<".dirname.">")
return
endif
@@ -2202,7 +2194,7 @@ fun! s:NetrwBrowse(islocal,dirname)
call s:BrowserMaps(a:islocal)
call s:PerformListing(a:islocal)
-" call Decho("ro=".&ro." ma=".&ma." mod=".&mod." wrap=".&wrap)
+" call Decho("ro=".&l:ro." ma=".&l:ma." mod=".&l:mod." wrap=".&l:wrap)
" call Dret("s:NetrwBrowse : did PerformListing")
return
endfun
@@ -2299,14 +2291,15 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" note: !~ was used just below, but that means using ../ to go back would match (ie. abc/def/ and abc/ matches)
if bufnum > 0 && bufname(bufnum) != dirname && bufname(bufnum) != '.'
" handle approximate matches
-" call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx= dirname<".dirname.">")
+" call Decho(" handling approx match: bufnum#%d<".bufname(bufnum)."> approx=dirname<".dirname.">")
let ibuf = 1
let buflast = bufnr("$")
" call Decho(" findbuf2: buflast=".buflast)
while ibuf <= buflast
let bname= substitute(bufname(ibuf),'\\','/','g')
+ let bname= substitute(bname,'.\zs/$','','')
" call Decho(" findbuf3: dirname<".dirname."> bufname(".ibuf.")<".bname.">")
- if bname != '' && bname !~ '/' && dirname =~ '/'.bname.'/\=$' | break | endif
+ if bname != '' && dirname =~ '/'.bname.'/\=$' | break | endif
if bname =~ '^'.dirname.'/\=$' | break | endif
if dirname =~ '^'.bname.'/$' | break | endif
let ibuf= ibuf + 1
@@ -2336,8 +2329,8 @@ 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 ".s:netrw_treelistnum)
- exe 'silent! keepalt file NetrwTreeListing\ '.s:netrw_treelistnum
+" call Decho(" exe silent! keepalt file NetrwTreeListing ".fnameescape(s:netrw_treelistnum))
+ exe 'silent! keepalt file NetrwTreeListing\ '.fnameescape(s:netrw_treelistnum)
nnoremap <silent> <buffer> [ :silent call <SID>TreeListMove('[')<cr>
nnoremap <silent> <buffer> ] :silent call <SID>TreeListMove(']')<cr>
nnoremap <silent> <buffer> [[ :silent call <SID>TreeListMove('[')<cr>
@@ -2347,8 +2340,8 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" let v:errmsg= "" " Decho
let escdirname= fnameescape(dirname)
" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
-" call Decho(' exe silent! keepalt file '.escdirname)
- exe 'silent! keepalt file '.escdirname
+" call Decho(' exe silent! keepalt file '.fnameescape(escdirname))
+ exe 'silent! keepalt file '.fnameescape(escdirname)
" call Decho(" errmsg<".v:errmsg."> bufnr(".escdirname.")=".bufnr(escdirname)."<".bufname(bufnr(escdirname)).">")
endif
" call Decho(" named enew buffer#".bufnr("%")."<".bufname("%").">")
@@ -2365,7 +2358,8 @@ fun! s:NetrwGetBuffer(islocal,dirname)
exe "b ".bufnum
endif
if bufname("%") == '.'
- exe "silent! keepalt file ".escape(getcwd(),' ')
+" call Decho("exe silent! keepalt file ".fnameescape(getcwd()))
+ exe "silent! keepalt file ".fnameescape(getcwd())
endif
let &ei= eikeep
if line("$") <= 1
@@ -2393,7 +2387,8 @@ fun! s:NetrwGetBuffer(islocal,dirname)
" call Decho("--do netrw settings: make this buffer not-a-file, modifiable, not line-numbered, etc--")
let fname= expand("%")
call s:NetrwListSettings(a:islocal)
- exe "keepalt file ".escape(fname,' ')
+" call Decho("exe keepalt file ".fnameescape(fname))
+ exe "keepalt file ".fnameescape(fname)
" delete all lines from buffer {{{3
" call Decho("--delete all lines from buffer--")
@@ -2502,8 +2497,13 @@ fun! s:NetrwGetWord()
norm! ma
endif
let rega= @a
- call cursor(line("."),filestart+b:netrw_cpf+1)
- norm! "ay`a
+ let eofname= filestart + b:netrw_cpf + 1
+ if eofname <= col("$")
+ call cursor(line("."),filestart+b:netrw_cpf+1)
+ norm! "ay`a
+ else
+ norm! "ay$
+ endif
let dirname = @a
let @a = rega
" call Decho("2: dirname<".dirname.">")
@@ -2526,9 +2526,10 @@ endfun
fun! s:NetrwListSettings(islocal)
" call Dfunc("s:NetrwListSettings(islocal=".a:islocal.")")
let fname= bufname("%")
- setlocal bt=nofile nobl ma nonu nowrap noro
" call Decho("setlocal bt=nofile nobl ma nonu nowrap noro")
- exe "keepalt file ".escape(fname,' ')
+ setlocal bt=nofile nobl ma nonu nowrap noro
+" call Decho("exe keepalt file ".fnameescape(fname))
+ exe "keepalt file ".fnameescape(fname)
if g:netrw_use_noswf
setlocal noswf
endif
@@ -2642,7 +2643,7 @@ fun! s:NetrwBookmarkMenu()
let histcnt = histcnt + 1
let priority = g:NETRW_DIRHIST_CNT + histcnt
if exists("g:NETRW_DIRHIST_{cnt}")
- let bmdir= escape(g:NETRW_DIRHIST_{cnt},'. ')
+ let bmdir= escape(g:NETRW_DIRHIST_{cnt},'/&? ')
" call Decho('silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir)
exe 'silent! menu '.g:NetrwMenuPriority.".3.".priority." ".g:NetrwTopLvlMenu.'History.'.bmdir.' :e '.bmdir."\<cr>"
endif
@@ -2718,7 +2719,6 @@ fun! s:NetrwBrowseChgDir(islocal,newdir,...)
" call Decho("handling a file: dirname<".dirname."> (a:0=".a:0.")")
" this lets NetrwBrowseX avoid the edit
if a:0 < 1
-" call Decho("dirname<".dirname."> netrw_cd_escape<".g:netrw_cd_escape."> browse_split=".g:netrw_browse_split)
" call Decho("set up windows for editing<".fnameescape(dirname)."> didsplit=".(exists("s:didsplit")? s:didsplit : "doesn't exist"))
call s:NetrwOptionRestore("s:")
if !exists("s:didsplit")
@@ -2900,15 +2900,13 @@ fun! netrw#NetrwBrowseX(fname,remote)
if has("win32") || has("win95") || has("win64") || has("win16")
let exten= substitute(exten,'^.*$','\L&\E','')
endif
- let fname= escape(a:fname,"%#")
-" call Decho("fname<".fname."> after escape()")
" seems kde systems often have gnome-open due to dependencies, even though
" gnome-open's subsidiary display tools are largely absent. Kde systems
" usually have "kdeinit" running, though... (tnx Mikolaj Machowski)
if !exists("s:haskdeinit")
if has("unix")
- let s:haskdeinit= s:System("system",'ps -e') =~ 'kdeinit'
+ let s:haskdeinit= system("ps -e") =~ 'kdeinit'
if v:shell_error
let s:haskdeinit = 0
endif
@@ -2921,12 +2919,14 @@ fun! netrw#NetrwBrowseX(fname,remote)
if a:remote == 1
" create a local copy
let fname= fnamemodify(tempname(),":r").".".exten
-" call Decho("a:remote=".a:remote.": create a local copy of <".a:fname."> as <".fname.">")
- exe "silent keepjumps bot 1new ".a:fname
+" call Decho("a:remote=".a:remote.": create a local copy of <".fname."> as <".fname.">")
+ exe "silent keepjumps bot 1new ".fnameescape(fname)
setlocal bh=delete
-" call Decho("read <".fname.">, now writing: exe w! ".fname)
- exe "silent! w! ".fname
+" call Decho("read <".fnameescape(fname).">, now writing: exe w! ".fnameescape(fname))
+ exe "silent! w! ".fnameescape(fname)
q
+ else
+ let fname= a:fname
endif
" call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
@@ -2972,29 +2972,29 @@ 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).redir)
- exe "silent !".viewer." ".viewopt.shellescape(fname).redir
+" call Decho("exe silent !".viewer." ".viewopt.shellescape(fname,1).redir)
+ exe "silent !".viewer." ".viewopt.shellescape(fname,1).redir
let ret= v:shell_error
elseif has("win32") || has("win64")
-" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname))
- exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname)
+" call Decho('exe silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1))
+ exe 'silent !start rundll32 url.dll,FileProtocolHandler '.shellescape(fname,1)
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
let ret= v:shell_error
elseif has("unix") && executable("gnome-open") && !s:haskdeinit
-" call Decho("exe silent !gnome-open ".shellescape(fname)." ".redir)
- exe "silent !gnome-open ".shellescape(fname).redir
+" call Decho("exe silent !gnome-open ".shellescape(fname,1)." ".redir)
+ exe "silent !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)." ".redir)
- exe "silent !kfmclient exec ".shellescape(fname)." ".redir
+" call Decho("exe silent !kfmclient exec ".shellescape(fname,1)." ".redir)
+ exe "silent !kfmclient exec ".shellescape(fname,1)." ".redir
let ret= v:shell_error
elseif has("macunix") && executable("open")
-" call Decho("exe silent !open ".shellescape(fname)." ".redir)
- exe "silent !open ".shellescape(fname)." ".redir
+" call Decho("exe silent !open ".shellescape(fname,1)." ".redir)
+ exe "silent !open ".shellescape(fname,1)." ".redir
let ret= v:shell_error
else
@@ -3007,7 +3007,8 @@ fun! netrw#NetrwBrowseX(fname,remote)
let ret= netrwFileHandlers#Invoke(exten,fname)
endif
-" redraw!
+ " restoring redraw! after external file handlers
+ redraw!
" cleanup: remove temporary file,
" delete current buffer if success with handler,
@@ -3016,7 +3017,7 @@ fun! netrw#NetrwBrowseX(fname,remote)
" temporary file because it wasn't getting seen.
" if a:remote == 1 && fname != a:fname
" call Decho("deleting temporary file<".fname.">")
-" call s:System("delete",fname)
+" call s:NetrwDelete(fname)
" endif
if a:remote == 1
@@ -3652,8 +3653,8 @@ fun! s:NetrwMakeDir(usrhost)
let netrw_origdir= s:NetrwGetcwd(1)
exe 'keepjumps 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))
- exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname)
+" call Decho("exe silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1))
+ exe "silent! !".g:netrw_local_mkdir.' '.shellescape(newdirname,1)
if !g:netrw_keepdir
exe 'keepjumps lcd '.fnameescape(netrw_origdir)
" call Decho("netrw_keepdir=".g:netrw_keepdir.": keepjumps lcd ".fnameescape(netrw_origdir)." getcwd<".getcwd().">")
@@ -3676,8 +3677,8 @@ 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))
- exe "silent! !".mkdircmd." ".shellescape(newdirname)
+" call Decho("exe silent! !".mkdircmd." ".shellescape(newdirname,1))
+ exe "silent! !".mkdircmd." ".shellescape(newdirname,1)
if v:shell_error == 0
" refresh listing
let svpos= netrw#NetrwSavePosn()
@@ -3818,14 +3819,14 @@ fun! s:NetrwMarkFileCompress(islocal)
for sfx in sort(keys(g:netrw_decompress))
if fname =~ '\'.sfx.'$'
" fname has a suffix indicating that its compressed; apply associated decompression routine
- let exe= g:netrw_decompress[sfx]
+ let exe= s:WinPath(g:netrw_decompress[sfx])
" call Decho("fname<".fname."> is compressed so decompress with <".exe.">")
if a:islocal
if g:netrw_keepdir
- let fname= s:ComposePath(curdir,fname)
+ let fname= shellescape(s:ComposePath(curdir,fname))
endif
else
- let fname= b:netrw_curdir.fname
+ let fname= shellescape(b:netrw_curdir.fname)
endif
if executable(exe)
if a:islocal
@@ -3843,10 +3844,10 @@ fun! s:NetrwMarkFileCompress(islocal)
unlet exe
elseif a:islocal
" fname not a compressed file, so compress it
- call system(g:netrw_compress." ".s:ComposePath(b:netrw_curdir,fname))
+ call system(s:WinPath(g:netrw_compress)." ".shellescape(s:ComposePath(b:netrw_curdir,fname)))
else
" fname not a compressed file, so compress it
- call s:RemoteSystem(g:netrw_compress." ".fname)
+ call s:RemoteSystem(s:WinPath(g:netrw_compress)." ".shellescape(fname))
endif
endfor
call s:NetrwUnmarkList(curbufnr,curdir)
@@ -3887,7 +3888,7 @@ fun! s:NetrwMarkFileCopy(islocal)
" call Decho("copy from local to local")
let args= join(map(copy(s:netrwmarkfilelist_{bufnr('%')}),"b:netrw_curdir.\"/\".shellescape(v:val)"))
" call Decho("system(".g:netrw_localcopycmd." ".args." ".shellescape(s:netrwmftgt).")")
- call system(g:net