diff options
author | Bram Moolenaar <Bram@vim.org> | 2006-03-09 22:32:39 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2006-03-09 22:32:39 +0000 |
commit | 4ea8fe1d0600a7020c9f3a652f1d429a96965311 (patch) | |
tree | 11539bbb19bde18e6d1cc20ddd8109c7a05f174d | |
parent | 0fd9289de3079583cd19c88425277b99b5a15253 (diff) |
updated for version 7.0219
-rw-r--r-- | Filelist | 1 | ||||
-rw-r--r-- | runtime/autoload/netrw.vim | 571 | ||||
-rw-r--r-- | runtime/autoload/netrwSettings.vim | 1 | ||||
-rw-r--r-- | runtime/doc/os_mac.txt | 31 | ||||
-rw-r--r-- | runtime/doc/pi_netrw.txt | 59 | ||||
-rw-r--r-- | runtime/doc/tags | 31 | ||||
-rw-r--r-- | runtime/menu.vim | 59 | ||||
-rw-r--r-- | runtime/syntax/sqlanywhere.vim | 706 | ||||
-rw-r--r-- | src/ex_getln.c | 4 | ||||
-rw-r--r-- | src/gui_mac.c | 4 | ||||
-rw-r--r-- | src/option.c | 14 | ||||
-rw-r--r-- | src/version.h | 4 |
12 files changed, 1198 insertions, 287 deletions
@@ -498,6 +498,7 @@ RT_SCRIPTS = \ runtime/filetype.vim \ runtime/scripts.vim \ runtime/menu.vim \ + runtime/macmap.vim \ runtime/delmenu.vim \ runtime/synmenu.vim \ runtime/makemenu.vim \ diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim index 3a184a1499..54613511ce 100644 --- a/runtime/autoload/netrw.vim +++ b/runtime/autoload/netrw.vim @@ -1,7 +1,7 @@ " netrw.vim: Handles file transfer and remote directory listing across a network " AUTOLOAD PORTION -" Date: Jan 30, 2006 -" Version: 78 +" Date: Mar 09, 2006 +" Version: 79 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim " Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1 @@ -23,7 +23,7 @@ if &cp || exists("g:loaded_netrw") finish endif -let g:loaded_netrw = "v78" +let g:loaded_netrw = "v79" if v:version < 700 echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None finish @@ -76,7 +76,7 @@ if !exists("g:netrw_ssh_cmd") let g:netrw_ssh_cmd= "ssh" endif -if has("win32") || has("win95") || has("win64") || has("win16") +if (has("win32") || has("win95") || has("win64") || has("win16")) \ && exists("g:netrw_use_nt_rcp") \ && g:netrw_use_nt_rcp \ && executable( $SystemRoot .'/system32/rcp.exe') @@ -191,6 +191,9 @@ if exists("g:netrw_silent") && g:netrw_silent != 0 else let g:netrw_silentxfer= "" endif +if !exists("g:netrw_fastbrowse") + let g:netrw_fastbrowse= 1 +endif if !exists("g:netrw_sort_by") " alternatives: date size let g:netrw_sort_by= "name" @@ -224,6 +227,12 @@ if !exists("s:netrw_cd_escape") let s:netrw_cd_escape="[]#*$%'\" ?`!&();<>\\" endif endif +if !exists("g:netrw_fname_escape") + let g:netrw_fname_escape= ' ?&;' +endif +if !exists("g:netrw_tmpfile_escape") + let g:netrw_tmpfile_escape= ' ?&;' +endif if !exists("s:netrw_glob_escape") if has("win32") || has("win95") || has("win64") || has("win16") let s:netrw_glob_escape= "" @@ -292,49 +301,48 @@ endfun " ------------------------------------------------------------------------ " NetRead: responsible for reading a file over the net {{{2 -fun! netrw#NetRead(...) -" call Dfunc("NetRead(a:1<".a:1.">)") - +fun! netrw#NetRead(mode,...) +" call Dfunc("NetRead(mode=".a:mode.",...) a:0=".a:0) + " save options call s:NetOptionSave() - - " Special Exception: if a file is named "0r", then {{{3 - " "0r" will be used to read the - " following files instead of "r" - if a:0 == 0 - let readcmd= "r" - let ichoice= 0 - elseif a:1 == "0r" + + if a:mode == 0 " read remote file before current line let readcmd = "0r" - let ichoice = 2 + elseif a:mode == 1 " read file after current line + let readcmd = "r" + elseif a:mode == 2 " replace with remote file + let readcmd = "%r" else + exe a:mode let readcmd = "r" - let ichoice = 1 endif - + let ichoice = (a:0 == 0)? 0 : 1 +" call Decho("readcmd<".readcmd."> ichoice=".ichoice) + " get name of a temporary file and set up shell-quoting character {{{3 let tmpfile= tempname() - let tmpfile= substitute(tmpfile,'\','/','ge') + let tmpfile= escape(substitute(tmpfile,'\','/','ge'),g:netrw_tmpfile_escape) if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call Dret("NetRead") return endif - -" call Decho("ichoice=".ichoice." readcmd<".readcmd.">") +" call Decho("tmpfile<".tmpfile.">") + while ichoice <= a:0 - + " attempt to repeat with previous host-file-etc if exists("b:netrw_lastfile") && a:0 == 0 " call Decho("using b:netrw_lastfile<" . b:netrw_lastfile . ">") let choice = b:netrw_lastfile let ichoice= ichoice + 1 - + else exe "let choice= a:" . ichoice " call Decho("no lastfile: choice<" . choice . ">") - + if match(choice,"?") == 0 " give help echomsg 'NetRead Usage:' @@ -361,7 +369,7 @@ fun! netrw#NetRead(...) " case "... ... ..." let choice = strpart(choice,1,strlen(choice)-1) let wholechoice = "" - + while match(choice,"\"$") == -1 let wholechoice = wholechoice . " " . choice let ichoice = ichoice + 1 @@ -382,7 +390,7 @@ fun! netrw#NetRead(...) " call Decho("choice<" . choice . ">") let ichoice= ichoice + 1 - + " fix up windows urls if has("win32") || has("win95") || has("win64") || has("win16") let choice = substitute(choice,'\\','/','ge') @@ -391,10 +399,10 @@ fun! netrw#NetRead(...) exe 'lcd ' . fnamemodify(tmpfile,':h') let tmpfile = fnamemodify(tmpfile,':t') endif - + " Determine method of read (ftp, rcp, etc) {{{3 call s:NetMethod(choice) - + " Check if NetBrowse() should be handling this request " call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">") if choice =~ "^.*[\/]$" @@ -409,14 +417,14 @@ fun! netrw#NetRead(...) let tmpfile= substitute(tmpfile,"$",suffix,'e') " call Decho("chgd tmpfile<".tmpfile."> (added ".suffix." suffix) netrw_fname<".b:netrw_fname.">") endif - + " ============ " Perform Protocol-Based Read {{{3 " =========================== if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your read request..." endif - + "......................................... " rcp: NetRead Method #1 {{{3 if b:netrw_method == 1 " read with rcp @@ -439,16 +447,16 @@ fun! netrw#NetRead(...) let uid_machine = g:netrw_machine endif endif -" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile +" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".uid_machine.":".escape(b:netrw_fname,' ?&;')." ".tmpfile let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " ftp + <.netrc>: NetRead Method #2 {{{3 elseif b:netrw_method == 2 " read with ftp + <.netrc> " call Decho("read via ftp+.netrc (method #2)") - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix exe "put ='".g:netrw_ftpmode."'" @@ -473,13 +481,13 @@ fun! netrw#NetRead(...) bd! let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " ftp + machine,id,passwd,filename: NetRead Method #3 {{{3 elseif b:netrw_method == 3 " read with ftp + machine, id, passwd, and fname " Construct execution string (four lines) which will be passed through filter " call Decho("read via ftp+mipf (method #3)") - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" @@ -489,7 +497,7 @@ fun! netrw#NetRead(...) put ='open '.g:netrw_machine " call Decho("filter input: ".getline(".")) endif - + if exists("g:netrw_ftp") && g:netrw_ftp == 1 put =g:netrw_uid " call Decho("filter input: ".getline(".")) @@ -499,14 +507,14 @@ fun! netrw#NetRead(...) put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"' " call Decho("filter input: ".getline(".")) endif - + if exists("g:netrw_ftpmode") && g:netrw_ftpmode != "" put =g:netrw_ftpmode " call Decho("filter input: ".getline(".")) endif put ='get \"'.netrw_fname.'\" '.tmpfile " call Decho("filter input: ".getline(".")) - + " perform ftp: " -i : turns off interactive prompting from ftp " -n unix : DON'T use <.netrc>, even though it exists @@ -525,7 +533,7 @@ fun! netrw#NetRead(...) bd! let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " scp: NetRead Method #4 {{{3 elseif b:netrw_method == 4 " read with scp @@ -537,15 +545,15 @@ fun! netrw#NetRead(...) endif if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".cygtmpfile +" call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".cygtmpfile) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".cygtmpfile else -" call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."' ".tmpfile +" call Decho("executing: !".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." '".g:netrw_machine.":".escape(b:netrw_fname,g:netrw_fname_escape)."' ".tmpfile endif let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " http: NetRead Method #5 (wget) {{{3 elseif b:netrw_method == 5 @@ -558,17 +566,18 @@ fun! netrw#NetRead(...) " call Dret("NetRead") return endif - + if match(b:netrw_fname,"#") == -1 " simple wget -" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.escape(b:netrw_fname,' ?&') + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) +" call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_fname let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) - + else " wget plus a jump to an in-page marker (ie. http://abc/def.html#aMarker) - let netrw_html= substitute(b:netrw_fname,"#.*$","","") - let netrw_tag = substitute(b:netrw_fname,"^.*#","","") + let netrw_html= substitute(netrw_fname,"#.*$","","") + let netrw_tag = substitute(netrw_fname,"^.*#","","") " call Decho("netrw_html<".netrw_html.">") " call Decho("netrw_tag <".netrw_tag.">") " call Decho("executing: !".g:netrw_http_cmd." ".tmpfile." http://".g:netrw_machine.netrw_html) @@ -578,14 +587,14 @@ fun! netrw#NetRead(...) exe 'norm! 1G/<\s*a\s*name=\s*"'.netrw_tag.'"/'."\<CR>" endif let b:netrw_lastfile = choice - + "......................................... " cadaver: NetRead Method #6 {{{3 elseif b:netrw_method == 6 " call Decho("read via cadaver (method #6)") - + " Construct execution string (four lines) which will be passed through filter - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" @@ -594,7 +603,7 @@ fun! netrw#NetRead(...) put ='open '.g:netrw_machine endif put ='user '.g:netrw_uid.' '.g:netrw_passwd - + if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') put ='get '.netrw_fname.' '.cygtmpfile @@ -602,7 +611,7 @@ fun! netrw#NetRead(...) put ='get '.netrw_fname.' '.tmpfile endif put ='quit' - + " perform cadaver operation: norm! 1Gdd " call Decho("executing: %!".g:netrw_dav_cmd) @@ -610,26 +619,28 @@ fun! netrw#NetRead(...) bd! let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " 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) if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile +" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile else -" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile +" call Decho("executing: !".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile endif let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " fetch: NetRead Method #8 {{{3 " fetch://[user@]host[:http]/path elseif b:netrw_method == 8 + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if g:netrw_fetch_cmd == "" if !exists("g:netrw_quiet") echohl Error | echo "***netrw*** fetch command not available" | echohl None @@ -643,41 +654,42 @@ fun! netrw#NetRead(...) let netrw_option= "ftp" endif " call Decho("read via fetch for ".netrw_option) - + if exists("g:netrw_uid") && g:netrw_uid != "" && exists("g:netrw_passwd") && g:netrw_passwd != "" -" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".escape(b:netrw_fname,' ?&') +" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_uid.':'.g:netrw_passwd.'@'.g:netrw_machine."/".netrw_fname else -" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".escape(b:netrw_fname,' ?&') +" call Decho("executing: !".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_fetch_cmd." ".tmpfile." ".netrw_option."://".g:netrw_machine."/".netrw_fname endif - + let result = s:NetGetFile(readcmd,tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " sftp: NetRead Method #9 {{{3 elseif b:netrw_method == 9 " call Decho("read via sftp (method #4)") + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) -" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile) - exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".cygtmpfile +" call Decho("!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile) +" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile) + exe "!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".cygtmpfile else -" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile) - exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile +" call Decho("executing: !".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile) + exe g:netrw_silentxfer."!".g:netrw_sftp_cmd." ".g:netrw_machine.":".netrw_fname." ".tmpfile endif let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method) let b:netrw_lastfile = choice - + "......................................... " Complain {{{3 else echo "***warning*** unable to comply with your request<" . choice . ">" endif endwhile - + " cleanup {{{3 " call Decho("cleanup") if exists("b:netrw_method") @@ -691,18 +703,21 @@ endfun " ------------------------------------------------------------------------ " NetGetFile: Function to read temporary file "tfile" with command "readcmd". {{{2 +" readcmd == %r : replace buffer with newly read file +" == 0r : read file at top of buffer +" == r : read file after current line fun! s:NetGetFile(readcmd, tfile, method) -" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") +" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") " get name of remote filename (ie. url and all) let rfile= bufname("%") " call Decho("rfile<".rfile.">") - + if exists("*NetReadFixup") " for the use of NetReadFixup (not otherwise used internally) let line2= line("$") endif - + " transform paths from / to \ for Windows (except for cygwin) if &term == "win32" if g:netrw_cygwin @@ -716,8 +731,8 @@ fun! s:NetGetFile(readcmd, tfile, method) let tfile= a:tfile " call Decho("tfile=a:tfile<".tfile.">") endif - - if a:readcmd[0] == '0' + + if a:readcmd[0] == '%' " get file into buffer " call Dredir("ls!","starting buffer list") @@ -749,18 +764,17 @@ fun! s:NetGetFile(readcmd, tfile, method) let lastline= line("$") " call Decho("exe<".a:readcmd." ".v:cmdarg." ".tfile."> line#".curline) exe a:readcmd." ".v:cmdarg." ".tfile - let line1 = curline + 1 - let line2 = line("$") - lastline + 1 + let line1= curline + 1 + let line2= line("$") - lastline + 1 else " not readable -" call Dfunc("NetGetFile(readcmd<".a:readcmd.">,tfile<".a:tfile."> method<".a:method.">)") echohl WarningMsg | echo "***netrw*** file <".tfile."> not readable"| echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call Dret("NetGetFile : tfile<".tfile."> not readable") return endif - + " User-provided (ie. optional) fix-it-up command if exists("*NetReadFixup") " call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")") @@ -773,9 +787,9 @@ fun! s:NetGetFile(readcmd, tfile, method) if has("gui") && has("gui_running") silent! emenu Buffers.Refresh\ menu endif - + " call Decho("readcmd<".a:readcmd."> cmdarg<".v:cmdarg."> tfile<".a:tfile."> readable=".filereadable(a:tfile)) - + " make sure file is being displayed redraw! " call Dret("NetGetFile") @@ -785,26 +799,26 @@ endfun " NetWrite: responsible for writing a file over the net {{{2 fun! netrw#NetWrite(...) range " call Dfunc("NetWrite(a:0=".a:0.")") - + " option handling let mod= 0 call s:NetOptionSave() - + " Get Temporary Filename {{{3 - let tmpfile= tempname() + let tmpfile= escape(tempname(),g:netrw_tmpfile_escape) if !isdirectory(substitute(tmpfile,'[^/]\+$','','e')) echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!" call inputsave()|call input("Press <cr> to continue")|call inputrestore() " call Dret("NetWrite") return endif - + if a:0 == 0 let ichoice = 0 else let ichoice = 1 endif - + if &binary " for binary writes, write entire file. Line numbers don't really make sense. " Supports the writing of tar and zip files. @@ -815,9 +829,9 @@ fun! netrw#NetWrite(...) range " call Decho("silent exe ".a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile) silent exe a:firstline."," . a:lastline . "w! ".v:cmdarg." ".tmpfile endif - + while ichoice <= a:0 - + " Process arguments: {{{3 " attempt to repeat with previous host-file-etc if exists("b:netrw_lastfile") && a:0 == 0 @@ -826,7 +840,7 @@ fun! netrw#NetWrite(...) range let ichoice= ichoice + 1 else exe "let choice= a:" . ichoice - + " Reconstruct Choice if choice starts with '"' if match(choice,"?") == 0 echomsg 'NetWrite Usage:"' @@ -841,7 +855,7 @@ fun! netrw#NetWrite(...) range echomsg ':Nwrite scp://[user@]machine[[:#]port]/path uses scp' echomsg ':Nwrite sftp://[user@]machine/path uses sftp' break - + elseif match(choice,"^\"") != -1 if match(choice,"\"$") != -1 " case "..." @@ -850,7 +864,7 @@ fun! netrw#NetWrite(...) range " case "... ... ..." let choice = strpart(choice,1,strlen(choice)-1) let wholechoice = "" - + while match(choice,"\"$") == -1 let wholechoice= wholechoice . " " . choice let ichoice = ichoice + 1 @@ -870,7 +884,7 @@ fun! netrw#NetWrite(...) range endif " call Decho("choice<" . choice . ">") let ichoice= ichoice + 1 - + " fix up windows urls if has("win32") || has("win95") || has("win64") || has("win16") let choice= substitute(choice,'\\','/','ge') @@ -878,17 +892,17 @@ fun! netrw#NetWrite(...) range exe 'lcd ' . fnamemodify(tmpfile,':h') let tmpfile = fnamemodify(tmpfile,':t') endif - + " Determine method of read (ftp, rcp, etc) {{{3 call s:NetMethod(choice) - + " ============= " Perform Protocol-Based Write {{{3 " ============================ if exists("g:netrw_silent") && g:netrw_silent == 0 && &ch >= 1 echo "(netrw) Processing your write request..." endif - + "......................................... " rcp: NetWrite Method #1 {{{3 if b:netrw_method == 1 @@ -906,14 +920,15 @@ fun! netrw#NetWrite(...) range let uid_machine = g:netrw_machine endif endif -" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".escape(b:netrw_fname,' ?&') + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) +" call Decho("executing: !".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_rcp_cmd." ".s:netrw_rcpmode." ".tmpfile." ".uid_machine.":".netrw_fname let b:netrw_lastfile = choice - + "......................................... " ftp + <.netrc>: NetWrite Method #2 {{{3 elseif b:netrw_method == 2 - let netrw_fname = b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix exe "put ='".g:netrw_ftpmode."'" @@ -937,11 +952,11 @@ fun! netrw#NetWrite(...) range endif bd! let b:netrw_lastfile = choice - + "......................................... " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{3 elseif b:netrw_method == 3 - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" @@ -964,7 +979,7 @@ fun! netrw#NetWrite(...) range " call Decho("filter input: ".getline(".")) " save choice/id/password for future use let b:netrw_lastfile = choice - + " perform ftp: " -i : turns off interactive prompting from ftp " -n unix : DON'T use <.netrc>, even though it exists @@ -981,10 +996,11 @@ fun! netrw#NetWrite(...) range let mod=1 endif bd! - + "......................................... " scp: NetWrite Method #4 {{{3 elseif b:netrw_method == 4 + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if exists("g:netrw_port") && g:netrw_port != "" let useport= " -P ".g:netrw_port else @@ -992,14 +1008,14 @@ fun! netrw#NetWrite(...) range endif if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'") - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'" +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".netrw_fname."'") + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".cygtmpfile." '".g:netrw_machine.":".netrw_fname."'" else -" call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'") - exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".escape(b:netrw_fname,' ?&')."'" +" call Decho("executing: !".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".netrw_fname."'") + exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".tmpfile." '".g:netrw_machine.":".netrw_fname."'" endif let b:netrw_lastfile = choice - + "......................................... " http: NetWrite Method #5 {{{3 elseif b:netrw_method == 5 @@ -1007,14 +1023,14 @@ fun! netrw#NetWrite(...) range echohl Error | echo "***netrw*** currently <netrw.vim> does not support writing using http:" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() endif - + "......................................... " dav: NetWrite Method #6 (cadaver) {{{3 elseif b:netrw_method == 6 " call Decho("write via cadaver (method #6)") - + " Construct execution string (four lines) which will be passed through filter - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) new setlocal ff=unix if exists("g:netrw_port") && g:netrw_port != "" @@ -1023,38 +1039,39 @@ fun! netrw#NetWrite(...) range put ='open '.g:netrw_machine endif put ='user '.g:netrw_uid.' '.g:netrw_passwd - + if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') put ='put '.cygtmpfile.' '.netrw_fname else put ='put '.tmpfile.' '.netrw_fname endif - + " perform cadaver operation: norm! 1Gdd " call Decho("executing: %!".g:netrw_dav_cmd) exe g:netrw_silentxfer."%!".g:netrw_dav_cmd bd! let b:netrw_lastfile = choice - + "......................................... " rsync: NetWrite Method #7 {{{3 elseif b:netrw_method == 7 + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if g:netrw_cygwin == 1 let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e') -" call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') +" call Decho("executing: !".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".cygtmpfile." ".g:netrw_machine.":".netrw_fname else -" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')) - exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&') +" call Decho("executing: !".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname) + exe g:netrw_silentxfer."!".g:netrw_rsync_cmd." ".tmpfile." ".g:netrw_machine.":".netrw_fname endif let b:netrw_lastfile = choice - + "......................................... " sftp: NetWrite Method #9 {{{3 elseif b:netrw_method == 9 - let netrw_fname= b:netrw_fname + let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape) if exists("g:netrw_uid") && ( g:netrw_uid != "" ) let uid_machine = g:netrw_uid .'@'. g:netrw_machine else @@ -1068,23 +1085,23 @@ fun! netrw#NetWrite(...) range exe g:netrw_silentxfer."%!".g:netrw_sftp_cmd.' '.uid_machine bd! let b:netrw_lastfile= choice - + "......................................... " Complain {{{3 else echo "***warning*** unable to comply with your request<" . choice . ">" endif endwhile - + " cleanup {{{3 " call Decho("cleanup") let result=delete(tmpfile) call s:NetOptionRestore() - + if a:firstline == 1 && a:lastline == line("$") let &mod= mod " usually equivalent to set nomod endif - + " call Dret("NetWrite") endfun @@ -1135,6 +1152,10 @@ fun! s:NetBrowse(dirname) " use buffer-oriented WinVars if buffer ones exist but window ones don't call s:UseBufWinVars() + " set up menus + let b:netrw_browser_active= 1 + call s:NetMenu() + " make this buffer modifiable setlocal ma nonu nowrap @@ -1216,14 +1237,14 @@ fun! s:NetBrowse(dirname) " call Decho("exe file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)) exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape) exe "silent doau BufReadPre ".fname - silent call netrw#NetRead(method."://".user.machine."/".path) + silent call netrw#NetRead(2,method."://".user.machine."/".path) exe "silent doau BufReadPost ".fname keepjumps 1d " save certain window-oriented variables into buffer-oriented variables call s:SetBufWinVars() call s:NetOptionRestore() - setlocal nomod + setlocal nomod nowrap " call Dret("NetBrowse : file<".fname.">") return @@ -1256,7 +1277,10 @@ fun! s:NetBrowse(dirname) " call Decho("exe file ".escape(bufname,s:netrw_cd_escape)) exe 'file '.escape(bufname,s:netrw_cd_escape) " call Decho("renaming file to bufname<".bufname.">") - setlocal bh=hide bt=nofile nobl nonu noswf + setlocal bt=nofile nobl nonu noswf + if g:netrw_fastbrowse >= 1 + setlocal bh=hide + endif " save current directory on directory history list call s:NetBookmarkDir(3,expand("%")) @@ -1276,7 +1300,7 @@ fun! s:NetBrowse(dirname) nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(0)<cr> nnoremap <buffer> <silent> i :call <SID>NetLongList(0)<cr> nnoremap <buffer> <silent> o :call <SID>NetSplit(0)<cr> - nnoremap <buffer> <silent> O :call <SID>NetObtain()<cr> + nnoremap <buffer> <silent> O :call netrw#NetObtain()<cr> nnoremap <buffer> <silent> P :call <SID>NetPrevWinOpen(0)<cr> nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,expand("%"))<cr> nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr> @@ -1475,12 +1499,16 @@ fun! s:NetBrowseChgDir(dirname,newdir) rightb vert new wincmd | endif + call s:NetMenu() " call Decho("handling a file: dirname<".dirname.">") elseif newdir == './' " refresh the directory list " call Decho("refresh directory listing") - setlocal ma nobl bh=hide + setlocal ma nobl + if g:netrw_fastbrowse >= 1 + setlocal bh=hide + endif %d elseif newdir == '../' @@ -1630,7 +1658,7 @@ fun! s:NetBrowseRm(usrhost,path) range elseif ok =~ 'q\%[uit]' break endif - + else " attempt to remove directory if !all @@ -1661,7 +1689,7 @@ fun! s:NetBrowseRm(usrhost,path) range " call Decho("2nd attempt to remove dir: system(".netrw_rmf_cmd.")") let ret= system(netrw_rmf_cmd) " call Decho("returned=".ret." errcode=".v:shell_error) - + if v:shell_error != 0 && !exists("g:netrw_quiet") echohl Error | echo "***netrw*** unable to remove directory<".rmfile."> -- is it empty?" | echohl None call inputsave()|call input("Press <cr> to continue")|call inputrestore() @@ -1795,25 +1823,23 @@ fun! netrw#NetBrowseX(fname,remote) " 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 "kicker" running, though... (tnx Mikolaj Machowski) - if !exists("s:haskicker") + " usually have "kdeinit" running, though... (tnx Mikolaj Machowski) + if !exists("s:haskdeinit") if has("unix") - let v:shell_error=0 - silent! let s:haskicker= system('ps -e') =~ 'kicker' + silent! let s:haskdeinit= system('ps -e') =~ 'kdeinit' if v:shell_error - let s:haskicker = 0 - let v:shell_error = 0 + let s:haskdeinit = 0 endif else - let s:haskicker= 0 + let s:haskdeinit= 0 endif -" call Decho("setting s:haskicker=".s:haskicker) +" call Decho("setting s:haskdeinit=".s:haskdeinit) endif if a:remote == 1 " create a local copy let fname= tempname().".".exten -" call Decho("create a local copy of <".a:fname."> |