updated for version 7.0026

This commit is contained in:
Bram Moolenaar
2004-12-29 20:58:21 +00:00
parent 86b6835997
commit 81695250ef
38 changed files with 1781 additions and 1282 deletions

View File

@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" last change: Dec 06, 2004
" last change: Dec 29, 2004
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 53
" Version: 54
" License: Vim License (see vim's :help license)
"
" But be doers of the Word, and not only hearers, deluding your own selves
@ -14,7 +14,7 @@
if exists("g:loaded_netrw") || &cp
finish
endif
let g:loaded_netrw = "v53"
let g:loaded_netrw = "v54"
let s:save_cpo = &cpo
let loaded_explorer = 1
set cpo&vim
@ -228,9 +228,9 @@ if version >= 600
au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
endif
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau FileReadPost ".expand("<afile>")
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau FileWritePost ".expand("<afile>")
augroup END
endif
@ -262,15 +262,21 @@ endfun
fun! <SID>NetRestorePosn()
" call Dfunc("NetRestorePosn() winnr=".s:netrw_winnr." line=".s:netrw_line." col=".s:netrw_col." hline=".s:netrw_hline)
" restore window
" call Decho("restore window: exe silent! ".s:netrw_winnr."wincmd w")
exe "silent! ".s:netrw_winnr."wincmd w"
if v:shell_error == 0
" as suggested by Bram M: redraw on no error
" allows protocol error messages to remain visible
redraw!
endif
" restore top-of-screen line
" call Decho("restore topofscreen: exe norm! ".s:netrw_hline."G0z")
exe "norm! ".s:netrw_hline."G0z\<CR>"
" restore position
" call Decho("restore posn: exe norm! ".s:netrw_line."G0".s:netrw_col."|")
exe "norm! ".s:netrw_line."G0".s:netrw_col."\<bar>"
" call Dret("NetRestorePosn")
@ -670,77 +676,40 @@ fun! s:NetGetFile(readcmd, fname, method)
" call Decho("(copied) fname<".fname.">")
endif
" get the file, but disable undo when reading a new buffer
if a:readcmd[0] == '0'
let use_e_cmd = 0 " 1 when using ':edit'
let delline = 0 " 1 when have to delete empty last line
if line("$") == 1 && getline(1) == ""
" Now being asked to 0r a file into an empty file.
" Safe to :e it instead, unless there is another window on the same buffer.
let curbufnr = bufnr("%")
let use_e_cmd = 1
let delline = 1
" Loop over all windows,
" reset use_e_cmd when another one is editing the current buffer.
let i = 1
while 1
if i != winnr() && winbufnr(i) == curbufnr
let use_e_cmd = 0
break
endif
let i = i + 1
if winbufnr(i) < 0
break
endif
endwhile
endif
if use_e_cmd > 0
" ':edit' the temp file, wipe out the old buffer and rename the buffer
let curfilename = expand("%")
let binlocal = &l:bin
let binglobal = &g:bin
if binlocal
setglobal bin " Need to set 'bin' globally for ":e" command.
endif
silent exe "e! ".v:cmdarg." ".fname
if binlocal && !binglobal
setglobal nobin
setlocal bin
endif
exe curbufnr . "bwipe!"
exe "f ".escape(curfilename," ")
" the ":f newname" apparently leaves the temporary file as the alternate
" file in the buffer list (see :ls!). The following command wipes it out.
exe bufnr("#")."bwipe!"
else
let oldul= &ul
setlocal ul=-1
exe a:readcmd." ".v:cmdarg." ".escape(fname," ")
if delline > 0
" wipe out last line, which should be a blank line anyway
$del
endif
let &ul= oldul
endif
" get file into buffer
" record remote filename
let rfile= bufname("%")
" call Decho("edit remotefile<".rfile.">")
" rename the current buffer to the temp file (ie. fname)
exe "keepalt file ".fname
" edit temporary file
e
" rename buffer back to remote filename
exe "keepalt file ".rfile
" wipe out the buffer with the temp file name
exe "bwipe ".fname
let line1 = 1
let line2 = line("$")
elseif filereadable(fname)
" call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname.">")
" read file after current line
let curline = line(".")
let lastline= line("$")
" call Decho("exe<".a:readcmd." ".v:cmdarg." ".fname."> line#".curline)
exe a:readcmd." ".v:cmdarg." ".fname
let line1 = curline + 1
let line2 = line("$") - lastline + 1
let s:netrw_line = s:netrw_line + 1
let s:netrw_col = 1
else
" call Dret("NetGetFile")
" not readable
" call Dret("NetGetFile : fname<".fname."> not readable")
return
endif
" User-provided (ie. optional) fix-it-up command
if exists("*NetReadFixup")
let line1= line(".")
if a:readcmd == "r"
let line2= line("$") - line2 + line1
else
let line2= line("$") - line2
endif
" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
call NetReadFixup(a:method, line1, line2)
endif
@ -2604,7 +2573,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
" call Decho("scp://...")
let b:netrw_method = 4
let g:netrw_machine= substitute(a:choice,scpurm,'\1',"")
let b:netrw_port = substitute(a:choice,scpurm,'\2',"")
let g:netrw_port = substitute(a:choice,scpurm,'\2',"")
let b:netrw_fname = substitute(a:choice,scpurm,'\3',"")
" http://user@hostname/...path-to-file
@ -2639,9 +2608,6 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
let g:netrw_machine= substitute(a:choice,ftpurm,'\3',"")
let g:netrw_port = substitute(a:choice,ftpurm,'\4',"")
let b:netrw_fname = substitute(a:choice,ftpurm,'\5',"")
if g:netrw_port != ""
let g:netrw_port = substitute(g:netrw_port,"[#:]","","")
endif
if userid != ""
let g:netrw_uid= userid
endif
@ -2725,6 +2691,11 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
endif
let b:netrw_method = -1
endif
" remove any leading [:#] from port number
if g:netrw_port != ""
let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
endif
" call Decho("a:choice <".a:choice.">")
" call Decho("b:netrw_method <".b:netrw_method.">")