updated for version 7.0145

This commit is contained in:
Bram Moolenaar
2005-09-10 19:22:57 +00:00
parent 32330d3c67
commit 578b49e4f7
12 changed files with 692 additions and 335 deletions

View File

@ -1,8 +1,8 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" AUTOLOAD PORTION
" Last Change: Aug 19, 2005
" Date: Sep 09, 2005
" Version: 69
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" Version: 65
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
@ -17,7 +17,17 @@
" But be doers of the Word, and not only hearers, deluding your own selves {{{1
" (James 1:22 RSV)
" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
let s:keepcpo= &cpo
" Exception for &cp: {{{1
if &cp
finish
endif
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
endif
let g:loaded_netrw = "v69"
let s:keepcpo = &cpo
set cpo&vim
" call Decho("doing autoload/netrw.vim")
@ -90,8 +100,10 @@ if !exists("g:netrw_sort_direction")
" alternative: reverse (z y x ...)
let g:netrw_sort_direction= "normal"
endif
if !exists("g:netrw_longlist") || g:netrw_longlist == 0
if !exists("g:netrw_longlist")
let g:netrw_longlist= 0
endif
if g:netrw_longlist == 0 || g:netrw_longlist == 2
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
else
let g:netrw_longlist= 1
@ -275,8 +287,9 @@ fun! netrw#NetRead(...)
" get name of a temporary file and set up shell-quoting character
let tmpfile= tempname()
let tmpfile= substitute(tmpfile,'\','/','ge')
if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!"
echohl Error | echo "***netrw*** your <".substitute(tmpfile,'[^/]\+$','','e')."> directory is missing!"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("NetRead")
return
@ -661,11 +674,7 @@ fun! s:NetGetFile(readcmd, fname, method)
" call Dredir("ls!","starting buffer list")
" rename the current buffer to the temp file (ie. fname)
if v:version < 700
exe "file ".fname
else
keepalt exe "file ".fname
endif
keepalt exe "file ".fname
" call Dredir("ls!","after renaming current buffer to <".fname.">")
" edit temporary file
@ -673,11 +682,7 @@ fun! s:NetGetFile(readcmd, fname, method)
" call Dredir("ls!","after editing temporary file")
" rename buffer back to remote filename
if v:version < 700
exe "file ".rfile
else
keepalt exe "file ".rfile
endif
keepalt exe "file ".rfile
" call Dredir("ls!","renaming buffer back to remote filename<".rfile.">")
let line1 = 1
let line2 = line("$")
@ -1015,7 +1020,8 @@ endfun
" g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
" with the requested remote hostname first.
fun! s:NetBrowse(dirname)
" call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist)
if !exists("w:netrw_longlist")|let w:netrw_longlist= g:netrw_longlist|endif
" call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".w:netrw_longlist)
if exists("s:netrw_skipbrowse")
unlet s:netrw_skipbrowse
@ -1127,7 +1133,8 @@ fun! s:NetBrowse(dirname)
" call Decho("new path<".path.">")
" remote-read the requested file into current buffer
enew!
keepjumps keepalt enew!
set ma
" 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
@ -1138,7 +1145,7 @@ fun! s:NetBrowse(dirname)
" save certain window-oriented variables into buffer-oriented variables
call s:BufWinVars()
call s:NetOptionRestore()
setlocal nonu nomod noma
setlocal nomod
" call Dret("NetBrowse : file<".fname.">")
return
@ -1162,7 +1169,7 @@ fun! s:NetBrowse(dirname)
endif
else
" call Decho("generate a new buffer")
enew!
keepjumps keepalt enew!
endif
" rename file to reflect where its from
@ -1178,15 +1185,20 @@ fun! s:NetBrowse(dirname)
" set up buffer-local mappings
" call Decho("set up buffer-local mappings")
nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <cr> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <c-l> :call <SID>NetRefresh(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'../'))<cr>
nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<cr>
nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr>
if w:netrw_longlist != 2
nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,expand("%"))<cr>
endif
nnoremap <buffer> <silent> Nb :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
nnoremap <buffer> <silent> NB :<c-u>call <SID>NetBookmarkDir(0,expand("%"))<cr>
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> 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>
nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),'./'))<bar>call <SID>NetRestoreWordPosn()<cr>
@ -1194,14 +1206,14 @@ fun! s:NetBrowse(dirname)
nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(1)<cr>
nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
exe 'nnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <buffer> <silent> <del> :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'nnoremap <buffer> <silent> d :call <SID>NetMakeDir("'.user.machine.'")<cr>'
exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'nnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <buffer> <silent> D :call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
exe 'nnoremap <buffer> <silent> R :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
exe 'vnoremap <buffer> <silent> R :call <SID>NetBrowseRename("'.user.machine.'","'.path.'")<cr>'
nnoremap <buffer> ? :he netrw-browse-cmds<cr>
setlocal ma nonu nowrap
@ -1209,7 +1221,7 @@ fun! s:NetBrowse(dirname)
" Set up the banner
" call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method.">")
keepjumps put ='\" ==========================================================================='
keepjumps put ='\" Netrw Remote Directory Listing'
keepjumps put ='\" Netrw Remote Directory Listing (netrw '.g:loaded_netrw.')'
keepjumps put ='\" '.bufname
let w:netrw_bannercnt = 7
let sortby = g:netrw_sort_by
@ -1246,7 +1258,7 @@ fun! s:NetBrowse(dirname)
call s:NetBrowseFtpCmd(path,listcmd)
keepjumps 1d
if !g:netrw_longlist
if w:netrw_longlist == 0 || w:netrw_longlist == 2
" shorten the listing
" call Decho("generate short listing")
exe "keepjumps ".w:netrw_bannercnt
@ -1255,6 +1267,7 @@ fun! s:NetBrowse(dirname)
if g:netrw_ftp_browse_reject != ""
exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
endif
silent! keepjumps %s/\r$//e
" if there's no ../ listed, then put ./ and ../ in
let line1= line(".")
@ -1269,9 +1282,9 @@ fun! s:NetBrowse(dirname)
keepjumps norm! 0
" more cleanup
exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
endif
else
@ -1305,7 +1318,7 @@ fun! s:NetBrowse(dirname)
call s:NetrwListHide()
endif
if g:netrw_longlist
if w:netrw_longlist == 1
" do a long listing; these substitutions need to be done prior to sorting
" call Decho("manipulate long listing")
@ -1328,33 +1341,34 @@ fun! s:NetBrowse(dirname)
keepjumps norm! 0
endif
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e'
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
exe w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
exe 'silent keepjumps '.w:netrw_bannercnt
endif
if line("$") >= w:netrw_bannercnt
if g:netrw_sort_by =~ "^n"
call s:SetSort()
if v:version < 700
exe 'keepjumps silent '.w:netrw_bannercnt.',$call s:NetSort()'
elseif g:netrw_sort_direction =~ 'n'
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
else
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
endif
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
endif
if g:netrw_longlist
" shorten the list to keep its width <= 80 characters
exe "keepjumps silent ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
if w:netrw_longlist == 1
" shorten the list to keep its width <= winwidth characters
exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
endif
endif
endif
" cleanup any windows mess at end-of-line
keepjumps silent! %s/\r$//e
exe "keepjumps ".w:netrw_bannercnt
call s:NetrwWideListing()
if line("$") >= w:netrw_bannercnt
" place cursor on the top-left corner of the file listing
exe "keepjumps ".w:netrw_bannercnt
norm! 0
endif
call s:NetOptionRestore()
setlocal nomod noma nonu
@ -1412,7 +1426,19 @@ fun! s:NetGetWord()
" call Dfunc("NetGetWord() line#".line("."))
call s:UseBufWinVars()
" insure that w:netrw_longlist is set up
if !exists("w:netrw_longlist")
if exists("g:netrw_longlist")
let w:netrw_longlist= g:netrw_longlist
else
let w:netrw_longlist= 0
endif
endif
if exists("w:netrw_bannercnt") && line(".") < w:netrw_bannercnt
" Active Banner support
" call Decho("active banner handling")
norm! 0
let dirname= "./"
let curline= getline(".")
if curline =~ '"\s*Sorted by\s'
@ -1431,14 +1457,40 @@ fun! s:NetGetWord()
let s:netrw_skipbrowse= 1
echo 'Pressing "a" also works'
elseif line("$") > w:netrw_bannercnt
exe w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt
endif
else
elseif w:netrw_longlist == 0
" call Decho("thin column handling")
norm! 0
let dirname= getline(".")
if dirname =~ '\t'
let dirname= substitute(dirname,'\t.*$','','e')
elseif w:netrw_longlist == 1
" call Decho("long column handling")
norm! 0
let dirname= substitute(getline("."),'^\(\%(\S\+\s\)*\S\+\).\{-}$','\1','e')
else
" call Decho("obtain word from wide listing")
let dirname= getline(".")
if !exists("b:netrw_cpf")
let b:netrw_cpf= 0
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
" call Decho("computed cpf")
endif
let filestart = (virtcol(".")/b:netrw_cpf)*b:netrw_cpf
" call Decho("virtcol=".virtcol(".")." cpf=".b:netrw_cpf." bannercnt=".w:netrw_bannercnt." filestart=".filestart)
" call Decho("1: dirname<".dirname.">")
if filestart > 0|let dirname= substitute(dirname,'^.\{'.filestart.'}','','')|endif
" call Decho("2: dirname<".dirname.">")
let dirname = substitute(dirname,'^\(.\{'.b:netrw_cpf.'}\).*$','\1','e')
" call Decho("3: dirname<".dirname.">")
let dirname = substitute(dirname,'\s\+$','','e')
" call Decho("4: dirname<".dirname.">")
endif
" call Dret("NetGetWord <".dirname.">")
return dirname
endfun
@ -1646,7 +1698,7 @@ fun! s:NetBrowseX(fname,remote)
" create a local copy
let fname= tempname().".".exten
" call Decho("create a local copy of <".a:fname."> as <".fname.">")
exe "keepjumps silent bot 1new ".a:fname
exe "silent keepjumps bot 1new ".a:fname
set bh=delete
exe "w! ".fname
q
@ -1717,13 +1769,15 @@ fun! s:NetBrowseFtpCmd(path,cmd)
let curline= w:netrw_bannercnt+1
exe "silent! keepjumps ".curline.",$d"
".........................................
if w:netrw_method == 2 || w:netrw_method == 5
".........................................
if w:netrw_method == 2 || w:netrw_method == 5
" ftp + <.netrc>: Method #2
if a:path != ""
put ='cd '.a:path
" call Decho("ftp: cd ".a:path)
endif
exe "put ='".a:cmd."'"
" call Decho("ftp: ".a:cmd)
" redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
if exists("g:netrw_port") && g:netrw_port != ""
" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
@ -1769,14 +1823,14 @@ fun! s:NetBrowseFtpCmd(path,cmd)
" cleanup for Windows
if has("win32") || has("win95") || has("win64") || has("win16")
keepjumps silent!! %s/\r$//e
silent! keepjumps! %s/\r$//e
endif
if a:cmd == "dir"
" infer directory/link based on the file permission string
keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
if !g:netrw_longlist
exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
if w:netrw_longlist == 0 || w:netrw_longlist == 2
exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
endif
endif
@ -1814,9 +1868,9 @@ fun! s:NetrwListHide()
" Prune the list by hiding any files which match
" call Decho("pruning <".hide."> listhide<".listhide.">")
if g:netrw_hide == 1
exe 'keepjumps silent '.w:netrw_bannercnt.',$g~'.hide.'~d'
exe 'silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d'
elseif g:netrw_hide == 2
exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d'
exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d'
endif
endwhile
@ -1866,20 +1920,25 @@ endfun
" ---------------------------------------------------------------------
" NetLongList: {{{2
fun! s:NetLongList(mode)
" call Dfunc("NetLongList(mode=".a:mode.") netrw_longlist=".g:netrw_longlist)
call netrw#NetSavePosn()
" call Dfunc("NetLongList(mode=".a:mode.") netrw_longlist=".w:netrw_longlist)
let fname = s:NetGetWord()
let w:netrw_longlist = (w:netrw_longlist + 1) % 3
" call Decho("fname<".fname.">")
if g:netrw_longlist != 0
" turn long listing off
" call Decho("turn long listing off")
let g:netrw_longlist = 0
if w:netrw_longlist == 0
" use one column listing
" call Decho("use one column list")
let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
else
" turn long listing on
" call Decho("turn long listing on")
let g:netrw_longlist = 1
elseif w:netrw_longlist == 1
" use long list
" call Decho("use long list")
let g:netrw_list_cmd = g:netrw_list_cmd." -l"
else
" give wide list
" call Decho("use wide list")
let g:netrw_list_cmd = substitute(g:netrw_list_cmd,' -l','','ge')
endif
setlocal ma
@ -1893,9 +1952,65 @@ fun! s:NetLongList(mode)
silent call s:LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,"./"))
endif
call netrw#NetRestorePosn()
" keep cursor on the filename
silent keepjumps $
if fname =~ '/$'
silent call search('\%(^\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bW')
else
silent call search('\%(^\|\s\{2,}\)\zs'.escape(fname,'.\[]*$^').'\%(\s\{2,}\|$\)','bW')
endif
" call Dret("NetLongList : g:netrw_longlist=".g:netrw_longlist)
" call Dret("NetLongList : w:netrw_longlist=".w:netrw_longlist)
endfun
" ---------------------------------------------------------------------
" NetrwWideListing: {{{2
fun! s:NetrwWideListing()
" call Dfunc("NetrwWideListing()")
if w:netrw_longlist == 2
" look for longest filename (cpf=characters per filename)
" cpf: characters per file
" fpl: files per line
" fpc: files per column
set ma
let b:netrw_cpf= 0
if line("$") >= w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/^./if virtcol("$") > b:netrw_cpf|let b:netrw_cpf= virtcol("$")|endif'
else
" call Dret("NetrwWideListing")
return
endif
" call Decho("max file strlen+1=".b:netrw_cpf)
let b:netrw_cpf= b:netrw_cpf + 1
" determine qty files per line (fpl)
let w:netrw_fpl= winwidth(0)/b:netrw_cpf
" call Decho("fpl= ".winwidth(0)."/[b:netrw_cpf=".b:netrw_cpf.']='.w:netrw_fpl)
" make wide display
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^.*$/\=printf("%-'.b:netrw_cpf.'s",submatch(0))/'
let fpc = (line("$") - w:netrw_bannercnt + w:netrw_fpl)/w:netrw_fpl
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."]")
while line("$") >= newcolstart
if newcolend > line("$") | let newcolend= line("$") | endif
let newcolqty= newcolend - newcolstart
exe newcolstart
if newcolqty == 0
exe "silent keepjumps norm! 0\<c-v>$hx".w:netrw_bannercnt."G$p"
else
exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
endif
exe "silent keepjumps ".newcolstart.','.newcolend.'d'
exe 'silent keepjumps '.w:netrw_bannercnt
endwhile
exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
set noma nomod
endif
" call Dret("NetrwWideListing")
endfun
" ---------------------------------------------------------------------
@ -2023,7 +2138,7 @@ fun! s:NetBookmarkDir(chg,curdir)
if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
" looks like a "b" was pressed while in the banner region
if line("$") > w:netrw_bannercnt
exe w:netrw_bannercnt
exe 'silent keepjumps '.w:netrw_bannercnt
endif
echo ""
" call Dret("NetBookmarkDir - ignoring")
@ -2119,6 +2234,121 @@ fun! s:NetBookmarkDir(chg,curdir)
" call Dret("NetBookmarkDir")
endfun
" ---------------------------------------------------------------------
" NetObtain: obtain file under cursor (for remote browsing support) {{{2
fun! s:NetObtain()
if !exists("s:netrw_users_stl")
let s:netrw_users_stl= &stl
endif
let fname= expand("<cWORD>")
exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ')
redraw!
" call Dfunc("NetObtain() method=".w:netrw_method)
if exists("w:netrw_method") && w:netrw_method =~ '[235]'
if executable("ftp")
let curdir = expand("%")
let path = substitute(curdir,'ftp://[^/]\+/','','e')
let curline= line(".")
let endline= line("$")+1
set ma
keepjumps $
".........................................
if w:netrw_method == 2
" ftp + <.netrc>: Method #2
if path != ""
put ='cd '.path
" call Decho("ftp: cd ".path)
endif
put ='get '.fname
" call Decho("ftp: get ".fname)
if exists("g:netrw_port") && g:netrw_port != ""
" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
else
" call Decho("exe ".g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine)
exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine
endif
".........................................
elseif w:netrw_method == 3
" ftp + machine,id,passwd,filename: Method #3
setlocal ff=unix
if exists("g:netrw_port") && g:netrw_port != ""
put ='open '.g:netrw_machine.' '.g:netrw_port
" call Decho('ftp: open '.g:netrw_machine.' '.g:netrw_port)
else
put ='open '.g:netrw_machine
" call Decho('ftp: open '.g:netrw_machine
endif
if exists("g:netrw_ftp") && g:netrw_ftp == 1
put =g:netrw_uid
put =g:netrw_passwd
" call Decho('ftp: g:netrw_uid')
" call Decho('ftp: g:netrw_passwd')
else
put ='user '.g:netrw_uid.' '.g:netrw_passwd
" call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
endif
if a:path != ""
put ='cd '.a:path
" call Decho('cd '.a:path)
endif
exe "put ='".a:cmd."'"
" call Decho("ftp: ".a:cmd)
" perform ftp:
" -i : turns off interactive prompting from ftp
" -n unix : DON'T use <.netrc>, even though it exists
" -n win32: quit being obnoxious about password
" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i -n")
exe g:netrw_silentxfer.endline.",$!".g:netrw_ftp_cmd." -i -n"
".........................................
else
echo "***warning*** unable to comply with your request<" . choice . ">"
endif
" restore
exe "silent! ".endline.",$d"
exe "keepjumps ".curline
set noma nomod
else
if !exists("g:netrw_quiet")
echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("NetObtain")
return
endif
".........................................
else
" scp: Method#4
if exists("g:netrw_port") && g:netrw_port != ""
let useport= " -P ".g:netrw_port
else
let useport= ""
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(fname,' ?&')." .")
exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ."
else
" call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." .")
exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ."
endif
endif
" restore status line
let &stl= s:netrw_users_stl
redraw!
" call Dret("NetObtain")
endfun
" ==========================================
" Local Directory Browsing Support: {{{1
" ==========================================
@ -2138,6 +2368,7 @@ endfun
" ---------------------------------------------------------------------
" DirBrowse: supports local file/directory browsing {{{2
fun! netrw#DirBrowse(dirname)
if !exists("w:netrw_longlist")|let w:netrw_longlist= g:netrw_longlist|endif
" call Dfunc("DirBrowse(dirname<".a:dirname.">) buf#".bufnr("%")." winnr=".winnr()." sortby=".g:netrw_sort_by)
" call Dredir("ls!")
@ -2181,18 +2412,10 @@ fun! netrw#DirBrowse(dirname)
" get cleared buffer
if bufnum < 0 || !bufexists(bufnum)
if v:version < 700
enew!
else
keepalt enew!
endif
keepjumps keepalt enew!
" call Decho("enew buffer")
else
if v:version < 700
exe "b ".bufnum
else
exe "keepalt b ".bufnum
endif
exe "keepalt b ".bufnum
if exists("s:last_sort_by") && g:netrw_sort_by == s:last_sort_by
if getline(2) =~ '^" Directory Listing '
if !g:netrw_keepdir
@ -2246,11 +2469,7 @@ fun! netrw#DirBrowse(dirname)
" make this buffer not-a-file, modifiable, not line-numbered, etc
setlocal bh=hide bt=nofile nobl ma nonu
if v:version < 700
silent! %d
else
keepalt silent! %d
endif
keepalt silent! %d
" ---------------------------
" Perform Directory Listing:
@ -2260,18 +2479,23 @@ fun! netrw#DirBrowse(dirname)
" set up all the maps
" call Decho("Setting up local browser maps")
nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <cr> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <c-l> :set ma<bar>%d<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>redraw!<cr>
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
nnoremap <buffer> <silent> a :let g:netrw_hide=(g:netrw_hide+1)%3<bar>exe "norm! 0"<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr>
nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
if w:netrw_longlist != 2
nnoremap <buffer> <silent> b :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> B :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
endif
nnoremap <buffer> <silent> Nb :<c-u>call <SID>NetBookmarkDir(0,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> NB :<c-u>call <SID>NetBookmarkDir(1,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> c :exe "cd ".b:netrw_curdir<cr>
nnoremap <buffer> <silent> d :call <SID>NetMakeDir("")<cr>
nnoremap <buffer> <silent> <c-h> :call <SID>NetHideEdit(1)<cr>
nnoremap <buffer> <silent> i :call <SID>NetLongList(1)<cr>
nnoremap <buffer> <silent> o :call <SID>NetSplit(2)<cr>
nnoremap <buffer> <silent> p :exe "norm! 0"<bar>call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr>
nnoremap <buffer> <silent> O :call <SID>LocalObtain()<cr>
nnoremap <buffer> <silent> p :call <SID>LocalPreview(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),1))<cr>
nnoremap <buffer> <silent> q :<c-u>call <SID>NetBookmarkDir(2,b:netrw_curdir)<cr>
nnoremap <buffer> <silent> r :let g:netrw_sort_direction= (g:netrw_sort_direction =~ 'n')? 'r' : 'n'<bar>exe "norm! 0"<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr>
nnoremap <buffer> <silent> s :call <SID>NetSaveWordPosn()<bar>let g:netrw_sort_by= (g:netrw_sort_by =~ 'n')? 'time' : (g:netrw_sort_by =~ 't')? 'size' : 'name'<bar>exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<bar>call <SID>NetRestoreWordPosn()<cr>
@ -2279,15 +2503,15 @@ fun! netrw#DirBrowse(dirname)
nnoremap <buffer> <silent> u :<c-u>call <SID>NetBookmarkDir(4,expand("%"))<cr>
nnoremap <buffer> <silent> U :<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
nnoremap <buffer> <silent> v :call <SID>NetSplit(3)<cr>
nnoremap <buffer> <silent> x :exe "norm! 0"<bar>call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)<cr>
nnoremap <buffer> <silent> <2-leftmouse> :exe "norm! 0"<bar>call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> x :call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
nnoremap <buffer> <silent> <2-leftmouse> :call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
nnoremap <buffer> <silent> <s-up> :Pexplore<cr>
nnoremap <buffer> <silent> <s-down> :Nexplore<cr>
exe 'nnoremap <buffer> <silent> <del> :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'vnoremap <buffer> <silent> <del> :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> D :exe "norm! 0"<bar>call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'vnoremap <buffer> <silent> D :call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> R :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
exe 'vnoremap <buffer> <silent> R :call <SID>LocalBrowseRename("'.b:netrw_curdir.'")<cr>'
exe 'nnoremap <buffer> <silent> <Leader>m :call <SID>NetMakeDir("")<cr>'
nnoremap <buffer> ? :he netrw-dir<cr>
@ -2357,30 +2581,30 @@ fun! netrw#DirBrowse(dirname)
if g:netrw_sort_by =~ "^n"
call s:SetSort()
if v:version < 700
exe 'keepjumps silent '.w:netrw_bannercnt.',$call s:NetSort()'
elseif g:netrw_sort_direction =~ 'n'
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
else
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
endif
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
else
if v:version < 700
exe 'keepjumps silent '.w:netrw_bannercnt.',$call s:NetSort()'
elseif g:netrw_sort_direction =~ 'n'
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
if g:netrw_sort_direction =~ 'n'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
else
exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
endif
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
endif
endif
endif
call s:NetrwWideListing()
if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
exe w:netrw_bannercnt
" place cursor on the top-left corner of the file listing
exe 'silent '.w:netrw_bannercnt
norm! 0
endif
" record previous current directory
@ -2427,6 +2651,7 @@ fun! s:LocalBrowseList()
" call Decho("filelist<".filelist.">")
endif
let filelist= substitute(filelist,'\n\{2,}','\n','ge')
let filelist= substitute(filelist,'\','/','ge')
" call Decho("dirname<".dirname.">")
" call Decho("dirnamelen<".dirnamelen.">")
@ -2453,14 +2678,10 @@ fun! s:LocalBrowseList()
" call Decho("filename<".filename.">")
" call Decho("pfile <".pfile.">")
if g:netrw_longlist
if w:netrw_longlist == 1
let sz = getfsize(filename)
if v:version <= 700
let fsz = strpart(" ",1,15-strlen(sz)).sz
let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
else
let pfile= printf('%-'.g:netrw_maxfilenamelen.'s%15d%s',pfile,sz,getftime(filename))
endif
let fsz = strpart(" ",1,15-strlen(sz)).sz
let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
" call Decho("sz=".sz." fsz=".fsz)
endif
@ -2490,7 +2711,7 @@ fun! s:LocalBrowseList()
endwhile
" cleanup any windows mess at end-of-line
keepjumps silent! %s/\r$//e
silent! keepjumps %s/\r$//e
setlocal ts=32
" call Dret("LocalBrowseList")
@ -2521,6 +2742,7 @@ fun! s:LocalBrowseChgDir(dirname,newdir,...)
" call Decho("dirname<".dirname."> netrw_cd_escape<".s:netrw_cd_escape.">")
" call Decho("about to edit<".escape(dirname,s:netrw_cd_escape).">")
exe "e! ".escape(dirname,s:netrw_cd_escape)
set ma nomod
endif
elseif newdir == './'
@ -2620,11 +2842,11 @@ fun! s:LocalBrowseRm(path) range
if errcode != 0
if has("unix")
" call Decho("3rd attempt to remove directory<".rmfile.">")
call system("rm ".rmfile)
call system("rm ".rmfile)
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()
endif
endif
elseif !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()
@ -2694,6 +2916,24 @@ fun! s:LocalBrowseRename(path) range
" call Dret("LocalBrowseRename")
endfun
" ---------------------------------------------------------------------
" LocalObtain: copy selected file to current working directory {{{2
fun! s:LocalObtain()
" call Dfunc("LocalObtain()")
if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir
let fname= expand("<cWORD>")
let fcopy= readfile(b:netrw_curdir."/".fname,"b")
call writefile(fcopy,getcwd()."/".fname,"b")
elseif !exists("b:netrw_curdir")
echohl Error | echo "***netrw*** local browsing directory doesn't exist!"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
else
echohl Error | echo "***netrw*** local browsing directory and current directory are identical"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" call Dret("LocalObtain")
endfun
" ---------------------------------------------------------------------
" LocalPreview: {{{2
fun! s:LocalPreview(path) range
@ -2778,7 +3018,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
elseif a:1 =~ '\*\*/' || a:indx < 0
" Nexplore Pexplore -or- Explore **/...
if has("path_extra") && v:version >= 700
if has("path_extra")
if !exists("w:netrw_explore_indx")
let w:netrw_explore_indx= 0
endif
@ -2804,8 +3044,8 @@ fun! netrw#Explore(indx,dosplit,style,...)
" NetrwStatusLine support
let w:netrw_explore_indx= indx
if !exists("s:netrw_explore_stl")
let s:netrw_explore_stl= &stl
if !exists("s:netrw_users_stl")
let s:netrw_users_stl= &stl
endif
set stl=%f\ %h%m%r%=%{NetrwStatusLine()}
" call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
@ -2832,9 +3072,7 @@ fun! netrw#Explore(indx,dosplit,style,...)
" call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
else
if v:version < 700
echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for Exploring with **!" | echohl None
elseif !exists("g:netrw_quiet")
if !exists("g:netrw_quiet")
echohl WarningMsg | echo "***netrw*** your vim needs the +path_extra feature for Exploring with **!" | echohl None | echohl None
endif
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
@ -2854,7 +3092,8 @@ endfun
fun! NetrwStatusLine()
" let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
let &stl= s:netrw_explore_stl
" restore user's status line
let &stl= s:netrw_users_stl
if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
return ""
@ -2940,7 +3179,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
" scp://user@hostname/...path-to-file
elseif match(a:choice,scpurm) == 0
" call Decho("scp://...")
let b:netrw_method = 4
let b:netrw_method = 4
let g:netrw_machine = substitute(a:choice,scpurm,'\1',"")
let g:netrw_port = substitute(a:choice,scpurm,'\2',"")
let b:netrw_fname = substitute(a:choice,scpurm,'\3',"")
@ -2973,7 +3212,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
" ftp://[user@]hostname[[:#]port]/...path-to-file
elseif match(a:choice,ftpurm) == 0
" call Decho("ftp://...")
let userid = substitute(a:choice,ftpurm,'\2',"")
let userid = substitute(a:choice,ftpurm,'\2',"")
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',"")
@ -3107,6 +3346,12 @@ fun! NetUserPass(...)
" call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
let g:netrw_passwd=a:2
endif
" surround password with double-quotes if it contains embedded blanks
if g:netrw_passwd !~ '^"' && g:netrw_passwd =~ ' '
let g:netrw_passwd= '"'.g:netrw_passwd.'"'
endif
" call Dret("NetUserPass")
endfun
@ -3158,27 +3403,26 @@ endfun
fun! s:NetOptionRestore()
" call Dfunc("NetOptionRestore()")
if !exists("w:netoptionsave")
" call Dret("NetOptionRestore : netoptionsave=".w:netoptionsave)
" call Dret("NetOptionRestore : w:netoptionsave doesn't exist")
return
endif
unlet w:netoptionsave
let &ai = w:aikeep
if has("netbeans_intg") || has("sun_workshop")
let &acd = w:acdkeep
if exists("w:aikeep")| let &ai= w:aikeep|endif
if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
let &acd= w:acdkeep
unlet w:acdkeep
endif
let &cin = w:cinkeep
let &cino = w:cinokeep
let &com = w:comkeep
let &cpo = w:cpokeep
if exists("w:dirkeep")
exe "lcd ".w:dirkeep
endif
let &gd = w:gdkeep
let &report = w:repkeep
let &tw = w:twkeep
if exists("w:cinkeep") |let &cin = w:cinkeep |unlet w:cinkeep |endif
if exists("w:cinokeep")|let &cino = w:cinokeep|unlet w:cinokeep|endif
if exists("w:comkeep") |let &com = w:comkeep |unlet w:comkeep |endif
if exists("w:cpokeep") |let &cpo = w:cpokeep |unlet w:cpokeep |endif
if exists("w:dirkeep") |exe "lcd ".w:dirkeep |unlet w:dirkeep |endif
if exists("w:gdkeep") |let &gd = w:gdkeep |unlet w:gdkeep |endif
if exists("w:repkeep") |let &report = w:repkeep |unlet w:repkeep |endif
if exists("w:twkeep") |let &tw = w:twkeep |unlet w:twkeep |endif
if exists("w:swfkeep")
if &directory == ""
if &directory == "" && exists("w:swfkeep")
" user hasn't specified a swapfile directory;
" netrw will temporarily make the swapfile
" directory the current local one.
@ -3190,17 +3434,6 @@ fun! s:NetOptionRestore()
endif
unlet w:swfkeep
endif
unlet w:aikeep
unlet w:cinkeep
unlet w:cinokeep
unlet w:comkeep
unlet w:cpokeep
unlet w:gdkeep
unlet w:repkeep
unlet w:twkeep
if exists("w:dirkeep")
unlet w:dirkeep
endif
" call Dret("NetOptionRestore")
endfun
@ -3212,7 +3445,7 @@ endfun
" example and as a fix for a Windows 95 problem: in my
" experience, win95's ftp always dumped four blank lines
" at the end of the transfer.
if has("win95") && g:netrw_win95ftp
if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
fun! NetReadFixup(method, line1, line2)
" call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
if method == 3 " ftp (no <.netrc>)
@ -3276,7 +3509,7 @@ endif
" front. An "*" pattern handles the default priority.
fun! s:SetSort()
" call Dfunc("SetSort() bannercnt=".w:netrw_bannercnt)
if g:netrw_longlist
if w:netrw_longlist == 1
let seqlist = substitute(g:netrw_sort_sequence,'\$','\\%(\t\\|\$\\)','ge')
else
let seqlist = g:netrw_sort_sequence
@ -3313,14 +3546,14 @@ fun! s:SetSort()
return
endif
if seq == '*'
exe 'keepjumps silent '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
else
exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
endif
let priority = priority + 1
endwhile
exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
" call Dret("SetSort")
endfun
@ -3366,6 +3599,7 @@ endfun
" UseBufWinVars() get around that.
fun! s:BufWinVars()
" call Dfunc("BufWinVars()")
if exists("w:netrw_longlist") |let b:netrw_longlist = w:netrw_longlist |endif
if exists("w:netrw_bannercnt") |let b:netrw_bannercnt = w:netrw_bannercnt |endif
if exists("w:netrw_method") |let b:netrw_method = w:netrw_method |endif
if exists("w:netrw_prvdir") |let b:netrw_prvdir = w:netrw_prvdir |endif
@ -3383,6 +3617,7 @@ endfun
" Matching function to BufferWinVars()
fun! s:UseBufWinVars()
" call Dfunc("UseBufWinVars()")
if exists("b:netrw_longlist") && !exists("w:netrw_longlist") |let w:netrw_longlist = b:netrw_longlist |endif
if exists("b:netrw_bannercnt") && !exists("w:netrw_bannercnt") |let w:netrw_bannercnt = b:netrw_bannercnt |endif
if exists("b:netrw_method") && !exists("w:netrw_method") |let w:netrw_method = b:netrw_method |endif
if exists("b:netrw_prvdir") && !exists("w:netrw_prvdir") |let w:netrw_prvdir = b:netrw_prvdir |endif