1a5792f58SBram Moolenaar" tar.vim: Handles browsing tarfiles 2a5792f58SBram Moolenaar" AUTOLOAD PORTION 3*d68071d8SBram Moolenaar" Date: May 02, 2006 4*d68071d8SBram Moolenaar" Version: 9 5a5792f58SBram Moolenaar" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz> 6a5792f58SBram Moolenaar" License: Vim License (see vim's :help license) 787e25fdfSBram Moolenaar" 8a5792f58SBram Moolenaar" Contains many ideas from Michael Toren's <tar.vim> 987e25fdfSBram Moolenaar" 10a5792f58SBram Moolenaar" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 11a5792f58SBram Moolenaar" Permission is hereby granted to use and distribute this code, 12a5792f58SBram Moolenaar" with or without modifications, provided that this copyright 13a5792f58SBram Moolenaar" notice is copied with it. Like anything else that's free, 14a5792f58SBram Moolenaar" tarPlugin.vim is provided *as is* and comes with no warranty 15a5792f58SBram Moolenaar" of any kind, either expressed or implied. By using this 16a5792f58SBram Moolenaar" plugin, you agree that in no event will the copyright 17a5792f58SBram Moolenaar" holder be liable for any damages resulting from the use 18a5792f58SBram Moolenaar" of this software. 1987e25fdfSBram Moolenaar 20ab194816SBram Moolenaar" --------------------------------------------------------------------- 21a5792f58SBram Moolenaar" Initialization: {{{1 22a5792f58SBram Moolenaarlet s:keepcpo= &cpo 23a5792f58SBram Moolenaarset cpo&vim 24a5792f58SBram Moolenaarif exists("g:loaded_tar") 25a5792f58SBram Moolenaar finish 26a5792f58SBram Moolenaarendif 27*d68071d8SBram Moolenaarlet g:loaded_tar= "v9" 28910f66f9SBram Moolenaar"call Decho("loading autoload/tar.vim") 2987e25fdfSBram Moolenaar 30a5792f58SBram Moolenaar" --------------------------------------------------------------------- 31a5792f58SBram Moolenaar" Default Settings: {{{1 32a5792f58SBram Moolenaarif !exists("g:tar_browseoptions") 33a5792f58SBram Moolenaar let g:tar_browseoptions= "Ptf" 34a5792f58SBram Moolenaarendif 35a5792f58SBram Moolenaarif !exists("g:tar_readoptions") 36a5792f58SBram Moolenaar let g:tar_readoptions= "OPxf" 37a5792f58SBram Moolenaarendif 38910f66f9SBram Moolenaarif !exists("g:tar_cmd") 39910f66f9SBram Moolenaar let g:tar_cmd= "tar" 40910f66f9SBram Moolenaarendif 41a5792f58SBram Moolenaarif !exists("g:tar_writeoptions") 42a5792f58SBram Moolenaar let g:tar_writeoptions= "uf" 43a5792f58SBram Moolenaarendif 44a5792f58SBram Moolenaar 45a5792f58SBram Moolenaar" ---------------- 46a5792f58SBram Moolenaar" Functions: {{{1 47a5792f58SBram Moolenaar" ---------------- 48a5792f58SBram Moolenaar 49a5792f58SBram Moolenaar" --------------------------------------------------------------------- 50a5792f58SBram Moolenaar" tar#Browse: {{{2 51a5792f58SBram Moolenaarfun! tar#Browse(tarfile) 52a5792f58SBram Moolenaar" call Dfunc("tar#Browse(tarfile<".a:tarfile.">)") 53bba577a2SBram Moolenaar let repkeep= &report 54bba577a2SBram Moolenaar set report=10 55a5792f58SBram Moolenaar 56a5792f58SBram Moolenaar " sanity checks 57910f66f9SBram Moolenaar if !executable(g:tar_cmd) 58910f66f9SBram Moolenaar echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' 59a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 60bba577a2SBram Moolenaar let &report= repkeep 61a5792f58SBram Moolenaar" call Dret("tar#Browse") 6287e25fdfSBram Moolenaar return 6387e25fdfSBram Moolenaar endif 64a5792f58SBram Moolenaar if !filereadable(a:tarfile) 65910f66f9SBram Moolenaar" call Decho('a:tarfile<'.a:tarfile.'> not filereadable') 66a5792f58SBram Moolenaar if a:tarfile !~# '^\a\+://' 67a5792f58SBram Moolenaar " if its an url, don't complain, let url-handlers such as vim do its thing 68a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None 69a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 7087e25fdfSBram Moolenaar endif 71bba577a2SBram Moolenaar let &report= repkeep 72a5792f58SBram Moolenaar" call Dret("tar#Browse : file<".a:tarfile."> not readable") 7387e25fdfSBram Moolenaar return 7487e25fdfSBram Moolenaar endif 75a5792f58SBram Moolenaar if &ma != 1 76a5792f58SBram Moolenaar set ma 7787e25fdfSBram Moolenaar endif 78a5792f58SBram Moolenaar let w:tarfile= a:tarfile 79a5792f58SBram Moolenaar 80a5792f58SBram Moolenaar setlocal noswapfile 81a5792f58SBram Moolenaar setlocal buftype=nofile 82a5792f58SBram Moolenaar setlocal bufhidden=hide 83a5792f58SBram Moolenaar setlocal nobuflisted 84a5792f58SBram Moolenaar setlocal nowrap 85a5792f58SBram Moolenaar set ft=tar 86a5792f58SBram Moolenaar 87a5792f58SBram Moolenaar " give header 88910f66f9SBram Moolenaar" call Decho("printing header") 89a5792f58SBram Moolenaar exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'" 90a5792f58SBram Moolenaar exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'" 91a5792f58SBram Moolenaar exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'" 92a5792f58SBram Moolenaar 0d 93a5792f58SBram Moolenaar $ 94a5792f58SBram Moolenaar 95910f66f9SBram Moolenaar let tarfile= a:tarfile 96910f66f9SBram Moolenaar if has("win32") && executable("cygpath") 97910f66f9SBram Moolenaar " assuming cygwin 98910f66f9SBram Moolenaar let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e') 99a5792f58SBram Moolenaar endif 100*d68071d8SBram Moolenaar let curlast= line("$") 101910f66f9SBram Moolenaar if tarfile =~# '\.\(gz\|tgz\)$' 102910f66f9SBram Moolenaar" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ") 103910f66f9SBram Moolenaar exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - " 104910f66f9SBram Moolenaar elseif tarfile =~# '\.bz2$' 105910f66f9SBram Moolenaar" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ") 106910f66f9SBram Moolenaar exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - " 107910f66f9SBram Moolenaar else 108910f66f9SBram Moolenaar" call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'") 109910f66f9SBram Moolenaar exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'" 110910f66f9SBram Moolenaar endif 111910f66f9SBram Moolenaar if v:shell_error != 0 112*d68071d8SBram Moolenaar echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" 113*d68071d8SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 114*d68071d8SBram Moolenaar" call Dret("tar#Browse : a:tarfile<".a:tarfile.">") 115*d68071d8SBram Moolenaar silent %d 116*d68071d8SBram Moolenaar let eikeep= &ei 117*d68071d8SBram Moolenaar set ei=BufReadCmd,FileReadCmd 118*d68071d8SBram Moolenaar exe "r ".a:tarfile 119*d68071d8SBram Moolenaar let &ei= eikeep 120*d68071d8SBram Moolenaar 1d 121*d68071d8SBram Moolenaar return 122*d68071d8SBram Moolenaar endif 123*d68071d8SBram Moolenaar if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~? '\c\%(warning\|error\|inappropriate\|unrecognized\)') 124*d68071d8SBram Moolenaar echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None 125*d68071d8SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 126*d68071d8SBram Moolenaar silent %d 127*d68071d8SBram Moolenaar let eikeep= &ei 128*d68071d8SBram Moolenaar set ei=BufReadCmd,FileReadCmd 129*d68071d8SBram Moolenaar exe "r ".a:tarfile 130*d68071d8SBram Moolenaar let &ei= eikeep 131*d68071d8SBram Moolenaar 1d 132*d68071d8SBram Moolenaar" call Dret("tar#Browse : a:tarfile<".a:tarfile.">") 133910f66f9SBram Moolenaar return 134910f66f9SBram Moolenaar endif 135a5792f58SBram Moolenaar 136a5792f58SBram Moolenaar setlocal noma nomod ro 137a5792f58SBram Moolenaar noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr> 138a5792f58SBram Moolenaar 139bba577a2SBram Moolenaar let &report= repkeep 140a5792f58SBram Moolenaar" call Dret("tar#Browse : w:tarfile<".w:tarfile.">") 141ab194816SBram Moolenaarendfun 14287e25fdfSBram Moolenaar 143ab194816SBram Moolenaar" --------------------------------------------------------------------- 144a5792f58SBram Moolenaar" TarBrowseSelect: {{{2 145a5792f58SBram Moolenaarfun! s:TarBrowseSelect() 146a5792f58SBram Moolenaar" call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">") 147bba577a2SBram Moolenaar let repkeep= &report 148bba577a2SBram Moolenaar set report=10 149a5792f58SBram Moolenaar let fname= getline(".") 150a5792f58SBram Moolenaar" call Decho("fname<".fname.">") 151a5792f58SBram Moolenaar 152a5792f58SBram Moolenaar " sanity check 153a5792f58SBram Moolenaar if fname =~ '^"' 154bba577a2SBram Moolenaar let &report= repkeep 155a5792f58SBram Moolenaar" call Dret("TarBrowseSelect") 156a5792f58SBram Moolenaar return 157a5792f58SBram Moolenaar endif 158a5792f58SBram Moolenaar 159a5792f58SBram Moolenaar " about to make a new window, need to use w:tarfile 160a5792f58SBram Moolenaar let tarfile= w:tarfile 161a5792f58SBram Moolenaar let curfile= expand("%") 162910f66f9SBram Moolenaar if has("win32") && executable("cygpath") 163910f66f9SBram Moolenaar " assuming cygwin 164910f66f9SBram Moolenaar let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e') 165910f66f9SBram Moolenaar endif 166a5792f58SBram Moolenaar 167a5792f58SBram Moolenaar new 168a5792f58SBram Moolenaar wincmd _ 169a5792f58SBram Moolenaar let s:tblfile_{winnr()}= curfile 170910f66f9SBram Moolenaar call tar#Read("tarfile:".tarfile.':'.fname,1) 171a5792f58SBram Moolenaar filetype detect 172a5792f58SBram Moolenaar 173bba577a2SBram Moolenaar let &report= repkeep 174a5792f58SBram Moolenaar" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">") 175a5792f58SBram Moolenaarendfun 176a5792f58SBram Moolenaar 177a5792f58SBram Moolenaar" --------------------------------------------------------------------- 178a5792f58SBram Moolenaar" tar#Read: {{{2 179a5792f58SBram Moolenaarfun! tar#Read(fname,mode) 180a5792f58SBram Moolenaar" call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")") 181bba577a2SBram Moolenaar let repkeep= &report 182bba577a2SBram Moolenaar set report=10 183a5792f58SBram Moolenaar let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','') 184a5792f58SBram Moolenaar let fname = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','') 185910f66f9SBram Moolenaar if has("win32") && executable("cygpath") 186910f66f9SBram Moolenaar " assuming cygwin 187910f66f9SBram Moolenaar let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e') 188910f66f9SBram Moolenaar endif 189910f66f9SBram Moolenaar" call Decho("tarfile<".tarfile.">") 190910f66f9SBram Moolenaar" call Decho("fname<".fname.">") 191a5792f58SBram Moolenaar 192a5792f58SBram Moolenaar if tarfile =~# '\.\(gz\|tgz\)$' 193a5792f58SBram Moolenaar" call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'") 194a5792f58SBram Moolenaar exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'" 1951cbe5f73SBram Moolenaar elseif tarfile =~# '\.bz2$' 196a5792f58SBram Moolenaar" call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'") 197a5792f58SBram Moolenaar exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'" 198a5792f58SBram Moolenaar else 199a5792f58SBram Moolenaar" call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'") 200910f66f9SBram Moolenaar exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'" 201a5792f58SBram Moolenaar endif 202a5792f58SBram Moolenaar let w:tarfile= a:fname 203a5792f58SBram Moolenaar exe "file tarfile:".fname 204a5792f58SBram Moolenaar 205a5792f58SBram Moolenaar " cleanup 206a5792f58SBram Moolenaar 0d 207a5792f58SBram Moolenaar set nomod 208a5792f58SBram Moolenaar 209bba577a2SBram Moolenaar let &report= repkeep 210a5792f58SBram Moolenaar" call Dret("tar#Read : w:tarfile<".w:tarfile.">") 211a5792f58SBram Moolenaarendfun 212a5792f58SBram Moolenaar 213a5792f58SBram Moolenaar" --------------------------------------------------------------------- 214a5792f58SBram Moolenaar" tar#Write: {{{2 215a5792f58SBram Moolenaarfun! tar#Write(fname) 216a5792f58SBram Moolenaar" call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">") 217bba577a2SBram Moolenaar let repkeep= &report 218bba577a2SBram Moolenaar set report=10 219a5792f58SBram Moolenaar 220ab194816SBram Moolenaar " sanity checks 221910f66f9SBram Moolenaar if !executable(g:tar_cmd) 222910f66f9SBram Moolenaar echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' 223a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 224bba577a2SBram Moolenaar let &report= repkeep 225ab194816SBram Moolenaar" call Dret("tar#Write") 226ab194816SBram Moolenaar return 227ab194816SBram Moolenaar endif 228ab194816SBram Moolenaar if !exists("*mkdir") 229a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None 230a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 231bba577a2SBram Moolenaar let &report= repkeep 232ab194816SBram Moolenaar" call Dret("tar#Write") 233ab194816SBram Moolenaar return 234ab194816SBram Moolenaar endif 235ab194816SBram Moolenaar 236ab194816SBram Moolenaar let curdir= getcwd() 237ab194816SBram Moolenaar let tmpdir= tempname() 238ab194816SBram Moolenaar" call Decho("orig tempname<".tmpdir.">") 239ab194816SBram Moolenaar if tmpdir =~ '\.' 240ab194816SBram Moolenaar let tmpdir= substitute(tmpdir,'\.[^.]*$','','e') 241ab194816SBram Moolenaar endif 242ab194816SBram Moolenaar" call Decho("tmpdir<".tmpdir.">") 243ab194816SBram Moolenaar call mkdir(tmpdir,"p") 244ab194816SBram Moolenaar 245ab194816SBram Moolenaar " attempt to change to the indicated directory 246ab194816SBram Moolenaar try 247ab194816SBram Moolenaar exe "cd ".escape(tmpdir,' \') 248ab194816SBram Moolenaar catch /^Vim\%((\a\+)\)\=:E344/ 249a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None 250a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 251bba577a2SBram Moolenaar let &report= repkeep 252ab194816SBram Moolenaar" call Dret("tar#Write") 253ab194816SBram Moolenaar return 254ab194816SBram Moolenaar endtry 255ab194816SBram Moolenaar" call Decho("current directory now: ".getcwd()) 256ab194816SBram Moolenaar 257a5792f58SBram Moolenaar " place temporary files under .../_ZIPVIM_/ 258a5792f58SBram Moolenaar if isdirectory("_ZIPVIM_") 259a5792f58SBram Moolenaar call s:Rmdir("_ZIPVIM_") 260ab194816SBram Moolenaar endif 261a5792f58SBram Moolenaar call mkdir("_ZIPVIM_") 262a5792f58SBram Moolenaar cd _ZIPVIM_ 263ab194816SBram Moolenaar" call Decho("current directory now: ".getcwd()) 264ab194816SBram Moolenaar 265a5792f58SBram Moolenaar let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','') 266a5792f58SBram Moolenaar let fname = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','') 267a5792f58SBram Moolenaar 268a5792f58SBram Moolenaar " handle compressed archives 269a5792f58SBram Moolenaar if tarfile =~# '\.gz' 270a5792f58SBram Moolenaar call system("gzip -d ".tarfile) 271a5792f58SBram Moolenaar let tarfile = substitute(tarfile,'\.gz','','e') 272a5792f58SBram Moolenaar let compress= "gzip '".tarfile."'" 273a5792f58SBram Moolenaar elseif tarfile =~# '\.tgz' 274a5792f58SBram Moolenaar call system("gzip -d ".tarfile) 275a5792f58SBram Moolenaar let tarfile = substitute(tarfile,'\.tgz','.tar','e') 276a5792f58SBram Moolenaar let compress= "gzip '".tarfile."'" 277a5792f58SBram Moolenaar let tgz = 1 278a5792f58SBram Moolenaar elseif tarfile =~# '\.bz2' 279a5792f58SBram Moolenaar call system("bzip2 -d ".tarfile) 280a5792f58SBram Moolenaar let tarfile = substitute(tarfile,'\.bz2','','e') 281a5792f58SBram Moolenaar let compress= "bzip2 '".tarfile."'" 282a5792f58SBram Moolenaar endif 283a5792f58SBram Moolenaar 284a5792f58SBram Moolenaar if v:shell_error != 0 285a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None 286a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 287a5792f58SBram Moolenaar else 288a5792f58SBram Moolenaar 289a5792f58SBram Moolenaar" call Decho("tarfile<".tarfile."> fname<".fname.">") 290a5792f58SBram Moolenaar 2911cbe5f73SBram Moolenaar if fname =~ '/' 292a5792f58SBram Moolenaar let dirpath = substitute(fname,'/[^/]\+$','','e') 2931cbe5f73SBram Moolenaar if executable("cygpath") 2941cbe5f73SBram Moolenaar let dirpath = substitute(system("cygpath ".dirpath),'\n','','e') 2951cbe5f73SBram Moolenaar endif 2961cbe5f73SBram Moolenaar call mkdir(dirpath,"p") 2971cbe5f73SBram Moolenaar endif 298a5792f58SBram Moolenaar if tarfile !~ '/' 299a5792f58SBram Moolenaar let tarfile= curdir.'/'.tarfile 300a5792f58SBram Moolenaar endif 301a5792f58SBram Moolenaar" call Decho("tarfile<".tarfile."> fname<".fname.">") 302a5792f58SBram Moolenaar 303a5792f58SBram Moolenaar exe "w! ".fname 304ab194816SBram Moolenaar if executable("cygpath") 305ab194816SBram Moolenaar let tarfile = substitute(system("cygpath ".tarfile),'\n','','e') 306ab194816SBram Moolenaar endif 307ab194816SBram Moolenaar 308a5792f58SBram Moolenaar " delete old file from tarfile 309a5792f58SBram Moolenaar" call Decho("tar --delete -f '".tarfile."' '".fname."'") 310a5792f58SBram Moolenaar call system("tar --delete -f '".tarfile."' '".fname."'") 311ab194816SBram Moolenaar if v:shell_error != 0 312a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None 313a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 314ab194816SBram Moolenaar else 315a5792f58SBram Moolenaar 316a5792f58SBram Moolenaar " update tarfile with new file 317a5792f58SBram Moolenaar" call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'") 318a5792f58SBram Moolenaar call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'") 319a5792f58SBram Moolenaar if v:shell_error != 0 320a5792f58SBram Moolenaar echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None 321a5792f58SBram Moolenaar call inputsave()|call input("Press <cr> to continue")|call inputrestore() 322a5792f58SBram Moolenaar elseif exists("compress") 323a5792f58SBram Moolenaar" call Decho("call system(".compress.")") 324a5792f58SBram Moolenaar call system(compress) 325a5792f58SBram Moolenaar if exists("tgz") 326a5792f58SBram Moolenaar" call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")") 327a5792f58SBram Moolenaar call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e')) 328a5792f58SBram Moolenaar endif 329a5792f58SBram Moolenaar endif 330a5792f58SBram Moolenaar endif 331a5792f58SBram Moolenaar 332a5792f58SBram Moolenaar " support writing tarfiles across a network 333a5792f58SBram Moolenaar if s:tblfile_{winnr()} =~ '^\a\+://' 334a5792f58SBram Moolenaar" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") 335a5792f58SBram Moolenaar let tblfile= s:tblfile_{winnr()} 336a5792f58SBram Moolenaar 1split|enew 337a5792f58SBram Moolenaar let binkeep= &binary 338a5792f58SBram Moolenaar let eikeep = &ei 339a5792f58SBram Moolenaar set binary ei=all 340a5792f58SBram Moolenaar exe "e! ".tarfile 341a5792f58SBram Moolenaar call netrw#NetWrite(tblfile) 342a5792f58SBram Moolenaar let &ei = eikeep 343a5792f58SBram Moolenaar let &binary = binkeep 344a5792f58SBram Moolenaar q! 345a5792f58SBram Moolenaar unlet s:tblfile_{winnr()} 346a5792f58SBram Moolenaar endif 347ab194816SBram Moolenaar endif 348ab194816SBram Moolenaar 349ab194816SBram Moolenaar " cleanup and restore current directory 350ab194816SBram Moolenaar cd .. 351a5792f58SBram Moolenaar call s:Rmdir("_ZIPVIM_") 352ab194816SBram Moolenaar exe "cd ".escape(curdir,' \') 353ab194816SBram Moolenaar setlocal nomod 354ab194816SBram Moolenaar 355bba577a2SBram Moolenaar let &report= repkeep 356ab194816SBram Moolenaar" call Dret("tar#Write") 357ab194816SBram Moolenaarendfun 358ab194816SBram Moolenaar 359ab194816SBram Moolenaar" --------------------------------------------------------------------- 360a5792f58SBram Moolenaar" Rmdir: {{{2 361ab194816SBram Moolenaarfun! s:Rmdir(fname) 362ab194816SBram Moolenaar" call Dfunc("Rmdir(fname<".a:fname.">)") 363ab194816SBram Moolenaar if has("unix") 364ab194816SBram Moolenaar call system("/bin/rm -rf ".a:fname) 365ab194816SBram Moolenaar elseif has("win32") || has("win95") || has("win64") || has("win16") 366ab194816SBram Moolenaar if &shell =~? "sh$" 367ab194816SBram Moolenaar call system("/bin/rm -rf ".a:fname) 368ab194816SBram Moolenaar else 369ab194816SBram Moolenaar call system("del /S ".a:fname) 370ab194816SBram Moolenaar endif 371ab194816SBram Moolenaar endif 372ab194816SBram Moolenaar" call Dret("Rmdir") 373ab194816SBram Moolenaarendfun 374ab194816SBram Moolenaar 375a5792f58SBram Moolenaar" ------------------------------------------------------------------------ 376a5792f58SBram Moolenaar" Modelines And Restoration: {{{1 377a5792f58SBram Moolenaarlet &cpo= s:keepcpo 378a5792f58SBram Moolenaarunlet s:keepcpo 379a5792f58SBram Moolenaar" vim:ts=8 fdm=marker 380