updated for version 7.0122
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
" netrw.vim: Handles file transfer and remote directory listing across a network
|
||||
" last change: Dec 29, 2004
|
||||
" Last Change: Aug 01, 2005
|
||||
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
|
||||
" Version: 54
|
||||
" Version: 56
|
||||
" License: Vim License (see vim's :help license)
|
||||
"
|
||||
" But be doers of the Word, and not only hearers, deluding your own selves
|
||||
@ -10,13 +10,13 @@
|
||||
" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Prevent Reloading: {{{1
|
||||
" Load Once: {{{1
|
||||
if exists("g:loaded_netrw") || &cp
|
||||
finish
|
||||
endif
|
||||
let g:loaded_netrw = "v54"
|
||||
let s:save_cpo = &cpo
|
||||
let g:loaded_netrw = "v56"
|
||||
let loaded_explorer = 1
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
@ -43,7 +43,7 @@ if !exists("g:netrw_list_cmd")
|
||||
" provide a default listing command
|
||||
let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
|
||||
else
|
||||
" call Decho("ssh is not executable, can't do remote directory exploring")
|
||||
" call Decho("ssh is not executable, can't do remote directory exploring with ssh")
|
||||
let g:netrw_list_cmd= ""
|
||||
endif
|
||||
endif
|
||||
@ -100,15 +100,6 @@ endif
|
||||
if !exists("g:netrw_local_rmdir")
|
||||
let g:netrw_local_rmdir= "rmdir"
|
||||
endif
|
||||
if !exists("g:netrw_local_rename")
|
||||
if g:netrw_cygwin
|
||||
let g:netrw_local_rename= "mv"
|
||||
elseif has("win32") || has("win95") || has("win64") || has("win16")
|
||||
let g:netrw_local_rename= "rename"
|
||||
elseif has("unix")
|
||||
let g:netrw_local_rename= "mv"
|
||||
endif
|
||||
endif
|
||||
if !exists("g:netrw_local_mkdir")
|
||||
let g:netrw_local_mkdir= "mkdir"
|
||||
endif
|
||||
@ -216,30 +207,36 @@ endif
|
||||
if version >= 600
|
||||
augroup FileExplorer
|
||||
au!
|
||||
au BufEnter * call <SID>LocalBrowse(expand("<afile>"))
|
||||
au BufEnter * call <SID>LocalBrowse(expand("<amatch>"))
|
||||
augroup END
|
||||
" Network Handler: {{{2
|
||||
augroup Network
|
||||
au!
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e '.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
|
||||
au BufReadCmd file://* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
|
||||
else
|
||||
au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
|
||||
au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
|
||||
au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
|
||||
au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
|
||||
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 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 FileWritePost ".expand("<afile>")
|
||||
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
|
||||
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread " .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
|
||||
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
|
||||
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
|
||||
augroup END
|
||||
endif
|
||||
|
||||
" ------------------------------------------------------------------------
|
||||
" Commands: :Nread, :Nwrite, and :NetUserPass {{{1
|
||||
com! -nargs=* Nread call <SID>NetSavePosn()<bar>call <SID>NetRead(<f-args>)<bar>call <SID>NetRestorePosn()
|
||||
com! -range=% -nargs=* Nwrite call <SID>NetSavePosn()<bar><line1>,<line2>call <SID>NetWrite(<f-args>)<bar>call <SID>NetRestorePosn()
|
||||
" Commands: :Nread, :Nwrite, :NetUserPass {{{1
|
||||
com! -nargs=* Nread call s:NetSavePosn()<bar>call s:NetRead(<f-args>)<bar>call s:NetRestorePosn()
|
||||
com! -range=% -nargs=* Nwrite call s:NetSavePosn()<bar><line1>,<line2>call s:NetWrite(<f-args>)<bar>call s:NetRestorePosn()
|
||||
com! -nargs=* NetUserPass call NetUserPass(<f-args>)
|
||||
|
||||
" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{1
|
||||
com! -nargs=? -bar -bang Explore call s:Explore(0,0+<bang>0,<q-args>)
|
||||
com! -nargs=? -bar -bang Sexplore call s:Explore(1,0+<bang>0,<q-args>)
|
||||
com! -nargs=? -bar -bang Hexplore call s:Explore(1,2+<bang>0,<q-args>)
|
||||
com! -nargs=? -bar -bang Vexplore call s:Explore(1,4+<bang>0,<q-args>)
|
||||
|
||||
" ------------------------------------------------------------------------
|
||||
" NetSavePosn: saves position of cursor on screen {{{1
|
||||
fun! s:NetSavePosn()
|
||||
@ -352,7 +349,7 @@ fun! s:NetRead(...)
|
||||
let ichoice = ichoice + 1
|
||||
if ichoice > a:0
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "Unbalanced string in filename '". wholechoice ."'"
|
||||
echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("NetRead")
|
||||
@ -436,10 +433,10 @@ fun! s:NetRead(...)
|
||||
exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine
|
||||
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")
|
||||
if getline(1) !~ "^$" && !exists("g:netrw_quiet") && getline(1) !~ '^Trying '
|
||||
let debugkeep= &debug
|
||||
set debug=msg
|
||||
echoerr getline(1)
|
||||
echoerr "***netrw*** ".getline(1)
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
let &debug= debugkeep
|
||||
endif
|
||||
@ -485,7 +482,7 @@ fun! s:NetRead(...)
|
||||
if getline(1) !~ "^$"
|
||||
" call Decho("error<".getline(1).">")
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr getline(1)
|
||||
echoerr "***netrw*** ".getline(1)
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
endif
|
||||
@ -518,7 +515,7 @@ fun! s:NetRead(...)
|
||||
" call Decho("read via http (method #5)")
|
||||
if g:netrw_http_cmd == ""
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "neither wget nor fetch command is available"
|
||||
echoerr "***netrw*** neither wget nor fetch command is available"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
exit
|
||||
@ -596,7 +593,7 @@ fun! s:NetRead(...)
|
||||
elseif b:netrw_method == 8 " read with fetch
|
||||
if g:netrw_fetch_cmd == ""
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "fetch command not available"
|
||||
echoerr "***netrw*** fetch command not available"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
exit
|
||||
@ -678,17 +675,23 @@ fun! s:NetGetFile(readcmd, fname, method)
|
||||
|
||||
if a:readcmd[0] == '0'
|
||||
" get file into buffer
|
||||
|
||||
" record remote filename
|
||||
let rfile= bufname("%")
|
||||
" call Decho("edit remotefile<".rfile.">")
|
||||
let rfile= bufname(".")
|
||||
" call Decho("remotefile<".rfile.">")
|
||||
" call Dredir("ls!","starting buffer list")
|
||||
|
||||
" rename the current buffer to the temp file (ie. fname)
|
||||
exe "keepalt file ".fname
|
||||
keepalt exe "file ".fname
|
||||
" call Dredir("ls!","after renaming current buffer to <".fname.">")
|
||||
|
||||
" edit temporary file
|
||||
e
|
||||
" call Dredir("ls!","after editing temporary file")
|
||||
|
||||
" rename buffer back to remote filename
|
||||
exe "keepalt file ".rfile
|
||||
" wipe out the buffer with the temp file name
|
||||
exe "bwipe ".fname
|
||||
keepalt exe "file ".rfile
|
||||
" call Dredir("ls!","renaming buffer back to remote filename<".rfile.">")
|
||||
let line1 = 1
|
||||
let line2 = line("$")
|
||||
|
||||
@ -712,6 +715,8 @@ fun! s:NetGetFile(readcmd, fname, method)
|
||||
if exists("*NetReadFixup")
|
||||
" call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
|
||||
call NetReadFixup(a:method, line1, line2)
|
||||
" else " Decho
|
||||
" call Decho("NetReadFixup() not called, doesn't exist")
|
||||
endif
|
||||
|
||||
" update the Buffers menu
|
||||
@ -787,7 +792,7 @@ fun! s:NetWrite(...) range
|
||||
let ichoice = ichoice + 1
|
||||
if choice > a:0
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "Unbalanced string in filename '". wholechoice ."'"
|
||||
echoerr "***netrw*** Unbalanced string in filename '". wholechoice ."'"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("NetWrite")
|
||||
@ -858,7 +863,7 @@ fun! s:NetWrite(...) range
|
||||
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
|
||||
if getline(1) !~ "^$"
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr getline(1)
|
||||
echoerr "***netrw*** ".getline(1)
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
let mod=1
|
||||
@ -898,7 +903,7 @@ fun! s:NetWrite(...) range
|
||||
" If the result of the ftp operation isn't blank, show an error message (tnx to Doug Claar)
|
||||
if getline(1) !~ "^$"
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr getline(1)
|
||||
echoerr "***netrw*** ".getline(1)
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
let mod=1
|
||||
@ -927,7 +932,7 @@ fun! s:NetWrite(...) range
|
||||
" http: NetWrite Method #5
|
||||
elseif b:netrw_method == 5
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "***warning*** currently <netrw.vim> does not support writing using http:"
|
||||
echoerr "***netrw*** currently <netrw.vim> does not support writing using http:"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
|
||||
@ -1010,8 +1015,10 @@ fun! s:NetWrite(...) range
|
||||
" call Dret("NetWrite")
|
||||
endfun
|
||||
|
||||
" ------------------------------------------------------------------------
|
||||
" Browsing Support For Remote Directories And Files: {{{1
|
||||
" ===========================================
|
||||
" Remote Directory Browsing Support: {{{1
|
||||
" ===========================================
|
||||
|
||||
" NetBrowse: This function uses the command in g:netrw_list_cmd to get a list {{{2
|
||||
" of the contents of a remote directory. It is assumed that the
|
||||
" g:netrw_list_cmd has a string, HOSTNAME, that needs to be substituted
|
||||
@ -1040,7 +1047,7 @@ fun! <SID>NetBrowse(dirname)
|
||||
endif
|
||||
|
||||
" make this buffer modifiable
|
||||
setlocal ma
|
||||
setlocal ma nonu nowrap
|
||||
|
||||
" analyze a:dirname and g:netrw_list_cmd
|
||||
let dirpat = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
|
||||
@ -1048,7 +1055,7 @@ fun! <SID>NetBrowse(dirname)
|
||||
" call Decho("dirpat<".dirpat.">")
|
||||
if dirname !~ dirpat
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "NetBrowse: I don't understand your dirname<".dirname.">"
|
||||
echoerr "***netrw*** netrw doesn't understand your dirname<".dirname.">"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("NetBrowse : badly formatted dirname<".dirname.">")
|
||||
@ -1080,7 +1087,7 @@ fun! <SID>NetBrowse(dirname)
|
||||
|
||||
" optionally sort by time (-t) or by size (-S)
|
||||
if listcmd == "dir" && g:netrw_sort_by =~ "^[ts]"
|
||||
echoerr "***warning*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
|
||||
echoerr "***netrw*** windows' ftp doesn't support time/size sorts (get cygwin, set g:netrw_cygwin)"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
else
|
||||
if g:netrw_sort_by =~ "^t"
|
||||
@ -1185,7 +1192,7 @@ fun! <SID>NetBrowse(dirname)
|
||||
exe 'nnoremap <buffer> <silent> R :exe "norm! 0"<bar>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
|
||||
setlocal ma nonu nowrap
|
||||
|
||||
" Set up the banner
|
||||
" call Decho("set up the banner: sortby<".g:netrw_sort_by."> method<".method.">")
|
||||
@ -1251,9 +1258,9 @@ fun! <SID>NetBrowse(dirname)
|
||||
keepjumps norm! 0
|
||||
|
||||
" more cleanup
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
|
||||
exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#'
|
||||
exe "keepjumps silent ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#'
|
||||
exe 'keepjumps silent! '.s:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
|
||||
exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
|
||||
exe "keepjumps silent! ".s:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
|
||||
endif
|
||||
|
||||
else
|
||||
@ -1307,7 +1314,11 @@ fun! <SID>NetBrowse(dirname)
|
||||
if line("$") >= s:netrw_bannercnt
|
||||
if g:netrw_sort_by =~ "^n"
|
||||
call s:SetSort()
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
if v:version < 700
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
else
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
|
||||
endif
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
|
||||
endif
|
||||
if g:netrw_longlist
|
||||
@ -1459,7 +1470,7 @@ fun! <SID>NetBrowseRm(usrhost,path) range
|
||||
" call Decho("returned=".ret." errcode=".v:shell_error)
|
||||
|
||||
if v:shell_error != 0 && !exists("g:netrw_quiet")
|
||||
echoerr "unable to remove directory<".rmfile."> -- is it empty?"
|
||||
echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
endif
|
||||
@ -1669,14 +1680,14 @@ fun! NetBrowseFtpCmd(path,cmd)
|
||||
|
||||
" cleanup for Windows
|
||||
if has("win32") || has("win95") || has("win64") || has("win16")
|
||||
keepjumps silent! %s/\r$//
|
||||
keepjumps silent!! %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/$/@/
|
||||
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}//'
|
||||
exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
|
||||
endif
|
||||
endif
|
||||
|
||||
@ -1782,7 +1793,7 @@ fun! <SID>NetLongList(mode)
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetSaveWordPosn: used by the "s" command in both remote and local
|
||||
" NetSaveWordPosn: used by the "s" command in both remote and local {{{2
|
||||
" browsing. Along with NetRestoreWordPosn(), it keeps the cursor on
|
||||
" the same word even though the sorting has changed its order of appearance.
|
||||
fun! s:NetSaveWordPosn()
|
||||
@ -1792,7 +1803,7 @@ fun! s:NetSaveWordPosn()
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above
|
||||
" NetRestoreWordPosn: used by the "s" command; see NetSaveWordPosn() above {{{2
|
||||
fun! s:NetRestoreWordPosn()
|
||||
" call Dfunc("NetRestoreWordPosn()")
|
||||
silent! call search(s:netrw_saveword,'w')
|
||||
@ -1800,7 +1811,7 @@ fun! s:NetRestoreWordPosn()
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetMakeDir: this function makes a directory (both local and remote)
|
||||
" NetMakeDir: this function makes a directory (both local and remote) {{{2
|
||||
fun! <SID>NetMakeDir(usrhost)
|
||||
" call Dfunc("NetMakeDir(usrhost<".a:usrhost.">)")
|
||||
|
||||
@ -1825,7 +1836,7 @@ fun! <SID>NetMakeDir(usrhost)
|
||||
" call Decho("fullnewdir<".fullnewdir.">")
|
||||
if isdirectory(fullnewdir)
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "***warning*** <".newdirname."> is already a directory!"
|
||||
echoerr "***netrw*** <".newdirname."> is already a directory!"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("NetMakeDir : directory<".newdirname."> exists previously")
|
||||
@ -1833,14 +1844,25 @@ fun! <SID>NetMakeDir(usrhost)
|
||||
endif
|
||||
if filereadable(fullnewdir)
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "***warning*** <".newdirname."> is already a file!"
|
||||
echoerr "***netrw*** <".newdirname."> is already a file!"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("NetMakeDir : file<".newdirname."> exists previously")
|
||||
return
|
||||
endif
|
||||
" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"')
|
||||
exe "silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"'
|
||||
|
||||
" requested new local directory is neither a pre-existing file or
|
||||
" directory, so make it!
|
||||
if exists("*mkdir")
|
||||
call mkdir(fullnewdir,"p")
|
||||
else
|
||||
let netrw_origdir= s:NetGetcwd(1)
|
||||
exe 'cd '.b:netrw_curdir
|
||||
" call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">")
|
||||
" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"')
|
||||
exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"'
|
||||
if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
|
||||
endif
|
||||
|
||||
if v:shell_error == 0
|
||||
" refresh listing
|
||||
@ -1852,7 +1874,7 @@ fun! <SID>NetMakeDir(usrhost)
|
||||
exe "norm! ".hline."G0z\<CR>"
|
||||
exe linenum
|
||||
elseif !exists("g:netrw_quiet")
|
||||
echoerr "***warning*** unable to make directory<".newdirname.">"
|
||||
echoerr "***netrw*** unable to make directory<".newdirname.">"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
redraw!
|
||||
@ -1872,7 +1894,7 @@ fun! <SID>NetMakeDir(usrhost)
|
||||
exe "norm! ".hline."G0z\<CR>"
|
||||
exe linenum
|
||||
elseif !exists("g:netrw_quiet")
|
||||
echoerr "***warning*** unable to make directory<".newdirname.">"
|
||||
echoerr "***netrw*** unable to make directory<".newdirname.">"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
redraw!
|
||||
@ -1882,7 +1904,7 @@ fun! <SID>NetMakeDir(usrhost)
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetBookmarkDir:
|
||||
" NetBookmarkDir: {{{2
|
||||
" 0: bookmark the current directory
|
||||
" 1: change to the bookmarked directory
|
||||
fun! <SID>NetBookmarkDir(chg,curdir)
|
||||
@ -1974,8 +1996,9 @@ fun! <SID>NetBookmarkDir(chg,curdir)
|
||||
" call Dret("NetBookmarkDir")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Browsing Support For Local Directories And Files: {{{1
|
||||
" ==========================================
|
||||
" Local Directory Browsing Support: {{{1
|
||||
" ==========================================
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" LocalBrowse: supports local file/directory browsing {{{2
|
||||
@ -1995,107 +2018,43 @@ fun! <SID>LocalBrowse(dirname)
|
||||
|
||||
if v:version < 603
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "vim version<".v:version."> too old for browsing with netrw"
|
||||
echoerr "***netrw*** vim version<".v:version."> too old for browsing with netrw"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("LocalBrowse : vim version<".v:version."> too old")
|
||||
return
|
||||
endif
|
||||
|
||||
" record autochdir setting and then insure its unset (tnx to David Fishburn)
|
||||
let keep_autochdir= &autochdir
|
||||
set noautochdir
|
||||
|
||||
" record and change current directory
|
||||
let netrw_origdir= s:NetGetcwd(1)
|
||||
try
|
||||
cd -
|
||||
let netrw_altdir= s:NetGetcwd(1)
|
||||
cd -
|
||||
catch
|
||||
let netrw_altdir= ''
|
||||
endtry
|
||||
exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape)
|
||||
" call Decho("dirname<".a:dirname."> buf#".bufnr("%")." winnr=".winnr())
|
||||
let b:netrw_curdir= substitute(a:dirname,'\\','/','ge')
|
||||
if b:netrw_curdir =~ '[/\\]$'
|
||||
let b:netrw_curdir= substitute(b:netrw_curdir,'[/\\]$','','e')
|
||||
endif
|
||||
" call Decho("b:netrw_curdir<".b:netrw_curdir.">")
|
||||
" make netrw's idea of the current directory vim's if the user wishes
|
||||
if g:netrw_keepdir
|
||||
" call Decho("change directory: cd ".b:netrw_curdir)
|
||||
exe 'cd '.b:netrw_curdir
|
||||
endif
|
||||
|
||||
" change the name of the buffer to reflect the b:netrw_curdir
|
||||
exe 'silent file '.escape(b:netrw_curdir,s:netrw_cd_escape)
|
||||
|
||||
" make this buffer modifiable
|
||||
setlocal ma
|
||||
|
||||
" disable 'autochdir', it breaks things
|
||||
set noautochdir
|
||||
|
||||
" ---------------------------
|
||||
" Perform Directory Listing:
|
||||
" call Decho("Perform directory listing...")
|
||||
" set up new buffer and map
|
||||
" dirname : current working directory, no escapes, has trailing /
|
||||
" dirnamens : dirname, but with no trailing slash
|
||||
" dirnamenr : buffer number containing dirnamens
|
||||
" dirnamebuf: buffer's idea of dirname, with all \ -> /
|
||||
let dirname = s:NetGetcwd(0)
|
||||
let dirnamens = substitute(dirname,'[\/]$','','e')
|
||||
let dirnamenr = bufnr(dirnamens.'$')
|
||||
let dirnamebuf = substitute(bufname(dirnamenr),'\\','/','ge')
|
||||
" call Decho("dirnamenr= bufnr(".dirnamens.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr))
|
||||
|
||||
if dirnamenr != 0 && dirnamebuf != dirnamens
|
||||
" try keeping the trailing slash
|
||||
let dirnamenr = bufnr(dirname.'$')
|
||||
" call Decho("dirnamenr= bufnr(".dirname.")=".dirnamenr." bufname(".dirnamenr.")=".bufname(dirnamenr)." (retry with /)")
|
||||
endif
|
||||
|
||||
if dirnamenr != -1
|
||||
" buffer already exists (hidden), so switch to it!
|
||||
" call Decho("buffer already exists: dirnamenr=".dirnamenr." dirname<".dirname."> pre-exists")
|
||||
" call Dredir("ls!")
|
||||
exe "b ".dirnamenr
|
||||
exe 'silent! cd '.escape(dirname,s:netrw_cd_escape)
|
||||
" call Decho("changed directory to<".dirname.">")
|
||||
if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir")
|
||||
if b:netrw_curdir == dirname
|
||||
" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr)
|
||||
if g:netrw_keepdir
|
||||
if netrw_altdir != ''
|
||||
exe 'keepjumps cd '.netrw_altdir
|
||||
endif
|
||||
exe 'keepjumps cd '.netrw_origdir
|
||||
endif
|
||||
return
|
||||
endif
|
||||
endif
|
||||
" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
|
||||
" call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
|
||||
setlocal ma
|
||||
keepjumps %d
|
||||
let curdir= substitute(substitute(expand("%"),'\\','/','ge'),'[^/]$','&/','e')
|
||||
if curdir != dirname
|
||||
" set standard browser options on buffer
|
||||
setlocal bt=nofile bh=hide nobl noswf
|
||||
exe 'silent file '.escape(dirname,s:netrw_cd_escape)
|
||||
" call Decho("errmsg1<".v:errmsg.">")
|
||||
" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
|
||||
" call Decho("yielding actual bufname<".bufname("%").">")
|
||||
endif
|
||||
else
|
||||
" call Decho("generate new buffer named<".escape(dirname,' #').">")
|
||||
silent! enew!
|
||||
" set standard browser options on buffer
|
||||
setlocal bt=nofile bh=hide nobl noswf nonu
|
||||
exe 'silent file '.substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e')
|
||||
" call Decho("errmsg2<".v:errmsg.">")
|
||||
" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e').">")
|
||||
" call Decho("yielding actual bufname<".bufname("%").">")
|
||||
endif
|
||||
exe "setlocal ts=".g:netrw_maxfilenamelen
|
||||
|
||||
if bufname("#") == "" && bufnr("#") != -1
|
||||
" the file command produces a lot of [No File] buffers
|
||||
" call Decho("wiping out nofile buffer#".bufnr("#"))
|
||||
exe bufnr("#")."bwipe"
|
||||
endif
|
||||
|
||||
" save current directory on directory history list
|
||||
call <SID>NetBookmarkDir(3,s:NetGetcwd(0))
|
||||
call <SID>NetBookmarkDir(3,b:netrw_curdir)
|
||||
|
||||
" set up all the maps
|
||||
" call Decho("Setting up local browser maps")
|
||||
let b:netrw_curdir= s:NetGetcwd(1)
|
||||
nnoremap <buffer> <silent> <cr> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
|
||||
nnoremap <buffer> <silent> <c-l> :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))<cr>
|
||||
nnoremap <buffer> <silent> - :exe "norm! 0"<bar>call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'../'))<cr>
|
||||
@ -2131,7 +2090,7 @@ fun! <SID>LocalBrowse(dirname)
|
||||
keepjumps put ='\" ============================================================================'
|
||||
keepjumps 1d
|
||||
keepjumps put ='\" Directory Listing (netrw '.g:loaded_netrw.')'
|
||||
keepjumps put ='\" '.dirname
|
||||
keepjumps put ='\" '.b:netrw_curdir
|
||||
let s:netrw_bannercnt= 3
|
||||
|
||||
let sortby= g:netrw_sort_by
|
||||
@ -2171,7 +2130,7 @@ fun! <SID>LocalBrowse(dirname)
|
||||
" call Decho("bannercnt=".s:netrw_bannercnt)
|
||||
|
||||
" generate the requested directory listing
|
||||
call LocalBrowseList(dirname)
|
||||
call LocalBrowseList()
|
||||
|
||||
" manipulate the directory listing (hide, sort)
|
||||
setlocal ft=netrwlist
|
||||
@ -2182,10 +2141,18 @@ fun! <SID>LocalBrowse(dirname)
|
||||
if line("$") >= s:netrw_bannercnt
|
||||
if g:netrw_sort_by =~ "^n"
|
||||
call s:SetSort()
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
if v:version < 700
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
else
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
|
||||
endif
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{3}\///e'
|
||||
else
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
if v:version < 700
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$call s:NetSort()'
|
||||
else
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$sort'
|
||||
endif
|
||||
exe 'keepjumps silent '.s:netrw_bannercnt.',$s/^\d\{-}\///e'
|
||||
endif
|
||||
endif
|
||||
@ -2193,30 +2160,25 @@ fun! <SID>LocalBrowse(dirname)
|
||||
exe s:netrw_bannercnt
|
||||
|
||||
setlocal noma nomod nonu
|
||||
if g:netrw_keepdir
|
||||
if netrw_altdir != ''
|
||||
exe 'keepjumps cd '.netrw_altdir
|
||||
endif
|
||||
exe 'keepjumps cd '.netrw_origdir
|
||||
endif
|
||||
let &autochdir= keep_autochdir
|
||||
|
||||
" call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" LocalBrowseList: does the job of "ls" for local directories {{{2
|
||||
fun! LocalBrowseList(dirname)
|
||||
" call Dfunc("LocalBrowseList(dirname<".a:dirname.">)")
|
||||
fun! LocalBrowseList()
|
||||
" call Dfunc("LocalBrowseList() b:netrw_curdir<".b:netrw_curdir.">")
|
||||
|
||||
" get the list of files contained in the current directory
|
||||
let dirname = escape(a:dirname,s:netrw_glob_escape)
|
||||
let dirnamelen = strlen(a:dirname)
|
||||
let filelist = glob(dirname."*")
|
||||
let dirname = escape(b:netrw_curdir,s:netrw_glob_escape)
|
||||
let dirnamelen = strlen(b:netrw_curdir)
|
||||
let filelist = glob(dirname."/*")
|
||||
" call Decho("glob(dirname<".dirname.">,*)=".filelist)
|
||||
if filelist != ""
|
||||
let filelist= filelist."\n"
|
||||
endif
|
||||
let filelist= filelist.glob(dirname.".*")
|
||||
let filelist= filelist.glob(dirname."/.*")
|
||||
" call Decho("glob(dirname<".dirname.">,.*)=".glob(dirname.".*"))
|
||||
|
||||
" if the directory name includes a "$", and possibly other characters,
|
||||
@ -2226,13 +2188,13 @@ fun! LocalBrowseList(dirname)
|
||||
if filelist == ""
|
||||
let filelist= dirname."."
|
||||
else
|
||||
let filelist= filelist."\n".a:dirname."."
|
||||
let filelist= filelist."\n".b:netrw_curdir."."
|
||||
endif
|
||||
" call Decho("filelist<".filelist.">")
|
||||
endif
|
||||
if filelist !~ '[\\/]\.\.[\\/]\=\(\n\|$\)'
|
||||
" call Decho("forcibly tacking on ..")
|
||||
let filelist= filelist."\n".a:dirname.".."
|
||||
let filelist= filelist."\n".b:netrw_curdir.".."
|
||||
" call Decho("filelist<".filelist.">")
|
||||
endif
|
||||
let filelist= substitute(filelist,'\n\{2,}','\n','ge')
|
||||
@ -2243,41 +2205,47 @@ fun! LocalBrowseList(dirname)
|
||||
|
||||
while filelist != ""
|
||||
if filelist =~ '\n'
|
||||
let file = substitute(filelist,'\n.*$','','e')
|
||||
let filename = substitute(filelist,'\n.*$','','e')
|
||||
let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
|
||||
else
|
||||
let file = filelist
|
||||
let filename = filelist
|
||||
let filelist = ""
|
||||
endif
|
||||
let pfile= file
|
||||
if isdirectory(file)
|
||||
let pfile= file."/"
|
||||
let pfile= filename
|
||||
if isdirectory(filename)
|
||||
let pfile= filename."/"
|
||||
endif
|
||||
let pfile= substitute(pfile,'^/','','e')
|
||||
if pfile =~ '//$'
|
||||
let pfile= substitute(pfile,'//$','/','e')
|
||||
endif
|
||||
let pfile= strpart(pfile,dirnamelen)
|
||||
" call Decho(" ")
|
||||
" call Decho("filename<".filename.">")
|
||||
" call Decho("pfile <".pfile.">")
|
||||
|
||||
if g:netrw_longlist
|
||||
let sz = getfsize(file)
|
||||
let sz = getfsize(filename)
|
||||
let fsz = strpart(" ",1,15-strlen(sz)).sz
|
||||
let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(file))
|
||||
let pfile= pfile."\t".fsz." ".strftime(g:netrw_timefmt,getftime(filename))
|
||||
" call Decho("sz=".sz." fsz=".fsz)
|
||||
endif
|
||||
|
||||
if g:netrw_sort_by =~ "^t"
|
||||
" sort by time (handles time up to 1 quintillion seconds, US)
|
||||
" call Decho("getftime(".file.")=".getftime(file))
|
||||
let t = getftime(file)
|
||||
" call Decho("getftime(".filename.")=".getftime(filename))
|
||||
let t = getftime(filename)
|
||||
let ft = strpart("000000000000000000",1,18-strlen(t)).t
|
||||
" call Decho("exe keepjumps put ='".ft.'/'.file."'")
|
||||
" call Decho("exe keepjumps put ='".ft.'/'.filename."'")
|
||||
let ftpfile= ft.'/'.pfile
|
||||
keepjumps put=ftpfile
|
||||
|
||||
elseif g:netrw_sort_by =~ "^s"
|
||||
" sort by size (handles file sizes up to 1 quintillion bytes, US)
|
||||
" call Decho("getfsize(".file.")=".getfsize(file))
|
||||
let sz = getfsize(file)
|
||||
" call Decho("getfsize(".filename.")=".getfsize(filename))
|
||||
let sz = getfsize(filename)
|
||||
let fsz = strpart("000000000000000000",1,18-strlen(sz)).sz
|
||||
" call Decho("exe keepjumps put ='".fsz.'/'.file."'")
|
||||
" call Decho("exe keepjumps put ='".fsz.'/'.filename."'")
|
||||
let fszpfile= fsz.'/'.pfile
|
||||
keepjumps put =fszpfile
|
||||
|
||||
@ -2287,6 +2255,7 @@ fun! LocalBrowseList(dirname)
|
||||
keepjumps put=pfile
|
||||
endif
|
||||
endwhile
|
||||
setlocal ts=32
|
||||
|
||||
" call Dret("LocalBrowseList")
|
||||
endfun
|
||||
@ -2305,6 +2274,8 @@ fun! <SID>LocalBrowseChgDir(dirname,newdir,...)
|
||||
" is removing the "/". Bad idea, so I have to put it back.
|
||||
let dirname= dirname.'/'
|
||||
" call Decho("adjusting dirname<".dirname.">")
|
||||
setlocal ma
|
||||
%d
|
||||
endif
|
||||
|
||||
if newdir !~ '[\/]$'
|
||||
@ -2313,24 +2284,28 @@ fun! <SID>LocalBrowseChgDir(dirname,newdir,...)
|
||||
" call Decho("handling a file: dirname<".dirname.">")
|
||||
" this lets NetBrowseX avoid the edit
|
||||
if a:0 < 1
|
||||
exe "e ".escape(dirname,s:netrw_cd_escape)
|
||||
" 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)
|
||||
endif
|
||||
|
||||
elseif newdir == './'
|
||||
" refresh the directory list
|
||||
" call Decho("refresh directory listing")
|
||||
setlocal ma
|
||||
%d
|
||||
|
||||
elseif newdir == '../'
|
||||
" go up one directory
|
||||
let dirname= substitute(dirname,'^\(.*/\)\([^/]\+[\/]$\)','\1','e')
|
||||
" call Decho("go up one dir: dirname<".dirname.">")
|
||||
setlocal ma
|
||||
%d
|
||||
|
||||
else
|
||||
" go down one directory
|
||||
let dirname= dirname.newdir
|
||||
" call Decho("go down one dir: dirname<".dirname."> newdir<".newdir.">")
|
||||
setlocal ma
|
||||
%d
|
||||
endif
|
||||
|
||||
" call Dret("LocalBrowseChgDir <".dirname.">")
|
||||
@ -2364,7 +2339,7 @@ fun! <SID>LocalBrowseRm(path) range
|
||||
endif
|
||||
|
||||
norm! 0
|
||||
let rmfile= a:path.curword
|
||||
let rmfile= a:path."/".curword
|
||||
" call Decho("rmfile<".rmfile.">")
|
||||
|
||||
if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
|
||||
@ -2417,11 +2392,11 @@ fun! <SID>LocalBrowseRm(path) range
|
||||
" call Decho("3rd attempt to remove directory<".rmfile.">")
|
||||
call system("rm ".rmfile)
|
||||
if v:shell_error != 0 && !exists("g:netrw_quiet")
|
||||
echoerr "unable to remove directory<".rmfile."> -- is it empty?"
|
||||
echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
elseif !exists("g:netrw_quiet")
|
||||
echoerr "unable to remove directory<".rmfile."> -- is it empty?"
|
||||
echoerr "***netrw*** unable to remove directory<".rmfile."> -- is it empty?"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
endif
|
||||
@ -2475,8 +2450,8 @@ fun! <SID>LocalBrowseRename(path) range
|
||||
let newname= input("Moving ".oldname." to : ",substitute(oldname,'/*$','','e'))
|
||||
call inputrestore()
|
||||
|
||||
let ret= system(g:netrw_local_rename.' "'.oldname.'" "'.newname.'"')
|
||||
" call Decho("executing system(".g:netrw_local_rename." ".oldname." ".newname)
|
||||
let ret= rename(oldname,newname)
|
||||
" call Decho("renaming <".oldname."> to <".newname.">")
|
||||
|
||||
let ctr= ctr + 1
|
||||
endwhile
|
||||
@ -2497,16 +2472,54 @@ fun! <SID>LocalPreview(path) range
|
||||
if !isdirectory(a:path)
|
||||
exe "pedit ".a:path
|
||||
elseif !exists("g:netrw_quiet")
|
||||
echoerr "sorry, cannot preview a directory such as <".a:path.">"
|
||||
echoerr "***netrw*** sorry, cannot preview a directory such as <".a:path.">"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
elseif !exists("g:netrw_quiet")
|
||||
echoerr "sorry, to preview your vim needs the quickfix feature compiled in"
|
||||
echoerr "***netrw*** sorry, to preview your vim needs the quickfix feature compiled in"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
" call Dret("LocalPreview")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" Explore: launch the local browser in the directory of the current file {{{2
|
||||
" dosplit==0: the window will be split iff the current file has
|
||||
" been modified
|
||||
" dosplit==1: the window will be split before running the local
|
||||
" browser
|
||||
fun! s:Explore(dosplit,style,...)
|
||||
" call Dfunc("Explore(dosplit=".a:dosplit." style=".a:style.")")
|
||||
|
||||
" if dosplit or file has been modified
|
||||
if a:dosplit || &modified
|
||||
if a:style == 0 " Explore, Sexplore
|
||||
exe g:netrw_winsize."wincmd s"
|
||||
elseif a:style == 1 "Explore!, Sexplore!
|
||||
exe g:netrw_winsize."wincmd v"
|
||||
elseif a:style == 2 " Hexplore
|
||||
exe "bel ".g:netrw_winsize."wincmd s"
|
||||
elseif a:style == 3 " Hexplore!
|
||||
exe "abo ".g:netrw_winsize."wincmd s"
|
||||
elseif a:style == 4 " Vexplore
|
||||
exe "lefta ".g:netrw_winsize."wincmd v"
|
||||
elseif a:style == 5 " Vexplore!
|
||||
exe "rightb ".g:netrw_winsize."wincmd v"
|
||||
endif
|
||||
endif
|
||||
norm! 0
|
||||
|
||||
if a:1 == ""
|
||||
let newdir= substitute(expand("%:p"),'^\(.*\)[/\\][^/\\]*$','\1','e')
|
||||
else
|
||||
let newdir= a:1
|
||||
endif
|
||||
" call Decho("newdir<".newdir.">")
|
||||
call s:LocalBrowse(newdir)
|
||||
|
||||
" call Dret("Explore")
|
||||
endfun
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetGetcwd: get the current directory. {{{2
|
||||
" Change backslashes to forward slashes, if any.
|
||||
@ -2559,7 +2572,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
|
||||
let mipf = '^\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)\s\+\(\S\+\)$'
|
||||
let mf = '^\(\S\+\)\s\+\(\S\+\)$'
|
||||
let ftpurm = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
|
||||
let rcpurm = '^rcp://\(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
|
||||
let rcpurm = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
|
||||
let rcphf = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
|
||||
let scpurm = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
|
||||
let httpurm = '^http://\([^/]\{-}\)\(/.*\)\=$'
|
||||
@ -2573,10 +2586,10 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
|
||||
" rcp://user@hostname/...path-to-file
|
||||
if match(a:choice,rcpurm) == 0
|
||||
" call Decho("rcp://...")
|
||||
let b:netrw_method = 1
|
||||
let userid = substitute(a:choice,rcpurm,'\2',"")
|
||||
let g:netrw_machine= substitute(a:choice,rcpurm,'\3',"")
|
||||
let b:netrw_fname = substitute(a:choice,rcpurm,'\4',"")
|
||||
let b:netrw_method = 1
|
||||
let userid = substitute(a:choice,rcpurm,'\1',"")
|
||||
let g:netrw_machine = substitute(a:choice,rcpurm,'\2',"")
|
||||
let b:netrw_fname = substitute(a:choice,rcpurm,'\3',"")
|
||||
if userid != ""
|
||||
let g:netrw_uid= userid
|
||||
endif
|
||||
@ -2585,9 +2598,9 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
|
||||
elseif match(a:choice,scpurm) == 0
|
||||
" call Decho("scp://...")
|
||||
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',"")
|
||||
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',"")
|
||||
|
||||
" http://user@hostname/...path-to-file
|
||||
elseif match(a:choice,httpurm) == 0
|
||||
@ -2699,7 +2712,7 @@ fun! s:NetMethod(choice) " globals: method machine id passwd fname
|
||||
|
||||
else
|
||||
if !exists("g:netrw_quiet")
|
||||
echoerr "***error*** cannot determine method"
|
||||
echoerr "***netrw*** cannot determine method"
|
||||
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
|
||||
endif
|
||||
let b:netrw_method = -1
|
||||
@ -2840,9 +2853,10 @@ endif
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" NetSort: Piet Delport's BISort2() function, modified to take a range {{{1
|
||||
fun! <SID>NetSort() range
|
||||
" call Dfunc("NetSort()")
|
||||
|
||||
if v:version < 700
|
||||
fun! <SID>NetSort() range
|
||||
" " call Dfunc("NetSort()")
|
||||
|
||||
let i = a:firstline + 1
|
||||
while i <= a:lastline
|
||||
" find insertion point via binary search
|
||||
@ -2850,36 +2864,37 @@ fun! <SID>NetSort() range
|
||||
let lo = a:firstline
|
||||
let hi = i
|
||||
while lo < hi
|
||||
let mid = (lo + hi) / 2
|
||||
let mid_val = getline(mid)
|
||||
if g:netrw_sort_direction =~ '^n'
|
||||
" normal sorting order
|
||||
if i_val < mid_val
|
||||
let hi = mid
|
||||
else
|
||||
let lo = mid + 1
|
||||
if i_val == mid_val | break | endif
|
||||
endif
|
||||
let mid = (lo + hi) / 2
|
||||
let mid_val = getline(mid)
|
||||
if g:netrw_sort_direction =~ '^n'
|
||||
" normal sorting order
|
||||
if i_val < mid_val
|
||||
let hi = mid
|
||||
else
|
||||
" reverse sorting order
|
||||
if i_val > mid_val
|
||||
let hi = mid
|
||||
else
|
||||
let lo = mid + 1
|
||||
if i_val == mid_val | break | endif
|
||||
endif
|
||||
let lo = mid + 1
|
||||
if i_val == mid_val | break | endif
|
||||
endif
|
||||
else
|
||||
" reverse sorting order
|
||||
if i_val > mid_val
|
||||
let hi = mid
|
||||
else
|
||||
let lo = mid + 1
|
||||
if i_val == mid_val | break | endif
|
||||
endif
|
||||
endif
|
||||
endwhile
|
||||
" do insert
|
||||
if lo < i
|
||||
exe 'keepjumps '.i.'d_'
|
||||
keepjumps call append(lo - 1, i_val)
|
||||
exe 'keepjumps '.i.'d_'
|
||||
keepjumps call append(lo - 1, i_val)
|
||||
endif
|
||||
let i = i + 1
|
||||
endwhile
|
||||
|
||||
" call Dret("NetSort")
|
||||
endfun
|
||||
|
||||
" " call Dret("NetSort")
|
||||
endfun
|
||||
endif
|
||||
|
||||
" ---------------------------------------------------------------------
|
||||
" SetSort: sets up the sort based on the g:netrw_sort_sequence {{{1
|
||||
@ -2938,8 +2953,8 @@ fun! <SID>SetSort()
|
||||
" call Dret("SetSort")
|
||||
endfun
|
||||
|
||||
let &cpo= s:keepcpo
|
||||
unlet s:keepcpo
|
||||
" ------------------------------------------------------------------------
|
||||
" Restore {{{1
|
||||
let &cpo= s:save_cpo
|
||||
unlet s:save_cpo
|
||||
" Modelines: {{{1
|
||||
" vim:ts=8 fdm=marker
|
||||
|
||||
Reference in New Issue
Block a user