1" tar.vim: Handles browsing tarfiles 2" AUTOLOAD PORTION 3" Date: Dec 28, 2009 4" Version: 24 5" Maintainer: Charles E Campbell, Jr <[email protected]> 6" License: Vim License (see vim's :help license) 7" 8" Contains many ideas from Michael Toren's <tar.vim> 9" 10" Copyright: Copyright (C) 2005-2009 Charles E. Campbell, Jr. {{{1 11" Permission is hereby granted to use and distribute this code, 12" with or without modifications, provided that this copyright 13" notice is copied with it. Like anything else that's free, 14" tar.vim and tarPlugin.vim are provided *as is* and comes 15" with no warranty of any kind, either expressed or implied. 16" By using this plugin, you agree that in no event will the 17" copyright holder be liable for any damages resulting from 18" the use of this software. 19" call inputsave()|call input("Press <cr> to continue")|call inputrestore() 20" --------------------------------------------------------------------- 21" Load Once: {{{1 22if &cp || exists("g:loaded_tar") 23 finish 24endif 25let g:loaded_tar= "v24" 26if v:version < 702 27 echohl WarningMsg 28 echo "***warning*** this version of tar needs vim 7.2" 29 echohl Normal 30 finish 31endif 32let s:keepcpo= &cpo 33set cpo&vim 34"call Decho("loading autoload/tar.vim") 35 36" --------------------------------------------------------------------- 37" Default Settings: {{{1 38if !exists("g:tar_browseoptions") 39 let g:tar_browseoptions= "Ptf" 40endif 41if !exists("g:tar_readoptions") 42 let g:tar_readoptions= "OPxf" 43endif 44if !exists("g:tar_cmd") 45 let g:tar_cmd= "tar" 46endif 47if !exists("g:tar_writeoptions") 48 let g:tar_writeoptions= "uf" 49endif 50if !exists("g:tar_copycmd") 51 if !exists("g:netrw_localcopycmd") 52 if has("win32") || has("win95") || has("win64") || has("win16") 53 if g:netrw_cygwin 54 let g:netrw_localcopycmd= "cp" 55 else 56 let g:netrw_localcopycmd= "copy" 57 endif 58 elseif has("unix") || has("macunix") 59 let g:netrw_localcopycmd= "cp" 60 else 61 let g:netrw_localcopycmd= "" 62 endif 63 endif 64 let g:tar_copycmd= g:netrw_localcopycmd 65endif 66if !exists("g:netrw_cygwin") 67 if has("win32") || has("win95") || has("win64") || has("win16") 68 if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' 69 let g:netrw_cygwin= 1 70 else 71 let g:netrw_cygwin= 0 72 endif 73 else 74 let g:netrw_cygwin= 0 75 endif 76endif 77if !exists("g:tar_extractcmd") 78 let g:tar_extractcmd= "tar -xf" 79endif 80 81" set up shell quoting character 82if !exists("g:tar_shq") 83 if exists("&shq") && &shq != "" 84 let g:tar_shq= &shq 85 elseif has("win32") || has("win95") || has("win64") || has("win16") 86 if exists("g:netrw_cygwin") && g:netrw_cygwin 87 let g:tar_shq= "'" 88 else 89 let g:tar_shq= '"' 90 endif 91 else 92 let g:tar_shq= "'" 93 endif 94" call Decho("g:tar_shq<".g:tar_shq.">") 95endif 96 97" ---------------- 98" Functions: {{{1 99" ---------------- 100 101" --------------------------------------------------------------------- 102" tar#Browse: {{{2 103fun! tar#Browse(tarfile) 104" call Dfunc("tar#Browse(tarfile<".a:tarfile.">)") 105 let repkeep= &report 106 set report=10 107 108 " sanity checks 109 if !executable(g:tar_cmd) 110 redraw! 111 echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' 112 let &report= repkeep 113" call Dret("tar#Browse") 114 return 115 endif 116 if !filereadable(a:tarfile) 117" call Decho('a:tarfile<'.a:tarfile.'> not filereadable') 118 if a:tarfile !~# '^\a\+://' 119 " if its an url, don't complain, let url-handlers such as vim do its thing 120 redraw! 121 echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None 122 endif 123 let &report= repkeep 124" call Dret("tar#Browse : file<".a:tarfile."> not readable") 125 return 126 endif 127 if &ma != 1 128 set ma 129 endif 130 let w:tarfile= a:tarfile 131 132 setlocal noswapfile 133 setlocal buftype=nofile 134 setlocal bufhidden=hide 135 setlocal nobuflisted 136 setlocal nowrap 137 set ft=tar 138 139 " give header 140" call Decho("printing header") 141 let lastline= line("$") 142 call setline(lastline+1,'" tar.vim version '.g:loaded_tar) 143 call setline(lastline+2,'" Browsing tarfile '.a:tarfile) 144 call setline(lastline+3,'" Select a file with cursor and press ENTER') 145 $put ='' 146 0d 147 $ 148 149 let tarfile= a:tarfile 150 if has("win32") && executable("cygpath") 151 " assuming cygwin 152 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') 153 endif 154 let curlast= line("$") 155 if tarfile =~# '\.\(gz\|tgz\)$' 156" call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") 157 exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " 158 elseif tarfile =~# '\.lrp' 159" call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") 160 exe "silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " 161 elseif tarfile =~# '\.bz2$' 162" call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") 163 exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " 164 elseif tarfile =~# '\.lzma$' 165" call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") 166 exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " 167 else 168 if tarfile =~ '^\s*-' 169 " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. 170 let tarfile = substitute(tarfile, '-', './-', '') 171 endif 172" call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0)) 173 exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1) 174 endif 175 if v:shell_error != 0 176 redraw! 177 echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" 178" call Dret("tar#Browse : a:tarfile<".a:tarfile.">") 179 return 180 endif 181 if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~ '\c\%(warning\|error\|inappropriate\|unrecognized\)') 182 redraw! 183 echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None 184 silent %d 185 let eikeep= &ei 186 set ei=BufReadCmd,FileReadCmd 187 exe "r ".fnameescape(a:tarfile) 188 let &ei= eikeep 189 1d 190" call Dret("tar#Browse : a:tarfile<".a:tarfile.">") 191 return 192 endif 193 194 setlocal noma nomod ro 195 noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr> 196 197 let &report= repkeep 198" call Dret("tar#Browse : w:tarfile<".w:tarfile.">") 199endfun 200 201" --------------------------------------------------------------------- 202" TarBrowseSelect: {{{2 203fun! s:TarBrowseSelect() 204" call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">") 205 let repkeep= &report 206 set report=10 207 let fname= getline(".") 208" call Decho("fname<".fname.">") 209 210 if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-' 211 redraw! 212 echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"' 213" call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"') 214 return 215 endif 216 217 " sanity check 218 if fname =~ '^"' 219 let &report= repkeep 220" call Dret("TarBrowseSelect") 221 return 222 endif 223 224 " about to make a new window, need to use w:tarfile 225 let tarfile= w:tarfile 226 let curfile= expand("%") 227 if has("win32") && executable("cygpath") 228 " assuming cygwin 229 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') 230 endif 231 232 new 233 if !exists("g:tar_nomax") || g:tar_nomax == 0 234 wincmd _ 235 endif 236 let s:tblfile_{winnr()}= curfile 237 call tar#Read("tarfile:".tarfile.'::'.fname,1) 238 filetype detect 239 240 let &report= repkeep 241" call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">") 242endfun 243 244" --------------------------------------------------------------------- 245" tar#Read: {{{2 246fun! tar#Read(fname,mode) 247" call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")") 248 let repkeep= &report 249 set report=10 250 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','') 251 let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') 252 if has("win32") && executable("cygpath") 253 " assuming cygwin 254 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') 255 endif 256" call Decho("tarfile<".tarfile.">") 257" call Decho("fname<".fname.">") 258 259 if fname =~ '\.bz2$' && executable("bzcat") 260 let decmp= "|bzcat" 261 let doro = 1 262 elseif fname =~ '\.gz$' && executable("zcat") 263 let decmp= "|zcat" 264 let doro = 1 265 elseif fname =~ '\.lzma$' && executable("lzcat") 266 let decmp= "|lzcat" 267 let doro = 1 268 else 269 let decmp="" 270 let doro = 0 271 if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.zip$\|\.Z$' 272 setlocal bin 273 endif 274 endif 275 276 if exists("g:tar_secure") 277 let tar_secure= " -- " 278 else 279 let tar_secure= " " 280 endif 281 if tarfile =~# '\.bz2$' 282" call Decho("7: exe silent r! bzip2 -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) 283 exe "silent r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp 284 elseif tarfile =~# '\.\(gz\|tgz\)$' 285" call Decho("5: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd.' -'.g:tar_readoptions.' - '.tar_secure.shellescape(fname,1)) 286 exe "silent r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp 287 elseif tarfile =~# '\.lrp$' 288" call Decho("6: exe silent r! cat ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) 289 exe "silent r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp 290 elseif tarfile =~# '\.lzma$' 291" call Decho("7: exe silent r! lzma -d -c ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp) 292 exe "silent r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp 293 else 294 if tarfile =~ '^\s*-' 295 " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. 296 let tarfile = substitute(tarfile, '-', './-', '') 297 endif 298" call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp) 299 exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp 300 endif 301 302 if doro 303 " because the reverse process of compressing changed files back into the tarball is not currently supported 304 setlocal ro 305 endif 306 307 let w:tarfile= a:fname 308 exe "file tarfile::".fnameescape(fname) 309 310 " cleanup 311 0d 312 set nomod 313 314 let &report= repkeep 315" call Dret("tar#Read : w:tarfile<".w:tarfile.">") 316endfun 317 318" --------------------------------------------------------------------- 319" tar#Write: {{{2 320fun! tar#Write(fname) 321" call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">") 322 let repkeep= &report 323 set report=10 324 325 if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-' 326 redraw! 327 echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"' 328" call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"') 329 return 330 endif 331 332 " sanity checks 333 if !executable(g:tar_cmd) 334 redraw! 335 echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' 336 let &report= repkeep 337" call Dret("tar#Write") 338 return 339 endif 340 if !exists("*mkdir") 341 redraw! 342 echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None 343 let &report= repkeep 344" call Dret("tar#Write") 345 return 346 endif 347 348 let curdir= getcwd() 349 let tmpdir= tempname() 350" call Decho("orig tempname<".tmpdir.">") 351 if tmpdir =~ '\.' 352 let tmpdir= substitute(tmpdir,'\.[^.]*$','','e') 353 endif 354" call Decho("tmpdir<".tmpdir.">") 355 call mkdir(tmpdir,"p") 356 357 " attempt to change to the indicated directory 358 try 359 exe "cd ".fnameescape(tmpdir) 360 catch /^Vim\%((\a\+)\)\=:E344/ 361 redraw! 362 echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None 363 let &report= repkeep 364" call Dret("tar#Write") 365 return 366 endtry 367" call Decho("current directory now: ".getcwd()) 368 369 " place temporary files under .../_ZIPVIM_/ 370 if isdirectory("_ZIPVIM_") 371 call s:Rmdir("_ZIPVIM_") 372 endif 373 call mkdir("_ZIPVIM_") 374 cd _ZIPVIM_ 375" call Decho("current directory now: ".getcwd()) 376 377 let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\)::.*$','\1','') 378 let fname = substitute(w:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') 379 380 " handle compressed archives 381 if tarfile =~# '\.bz2' 382 call system("bzip2 -d -- ".shellescape(tarfile,0)) 383 let tarfile = substitute(tarfile,'\.bz2','','e') 384 let compress= "bzip2 -- ".shellescape(tarfile,0) 385" call Decho("compress<".compress.">") 386 elseif tarfile =~# '\.gz' 387 call system("gzip -d -- ".shellescape(tarfile,0)) 388 let tarfile = substitute(tarfile,'\.gz','','e') 389 let compress= "gzip -- ".shellescape(tarfile,0) 390" call Decho("compress<".compress.">") 391 elseif tarfile =~# '\.lzma' 392 call system("lzma -d -- ".shellescape(tarfile,0)) 393 let tarfile = substitute(tarfile,'\.lzma','','e') 394 let compress= "lzma -- ".shellescape(tarfile,0) 395" call Decho("compress<".compress.">") 396 elseif tarfile =~# '\.tgz' 397 call system("gzip -d -- ".shellescape(tarfile,0)) 398 let tarfile = substitute(tarfile,'\.tgz','.tar','e') 399 let compress= "gzip -- ".shellescape(tarfile,0) 400 let tgz = 1 401" call Decho("compress<".compress.">") 402 endif 403" call Decho("tarfile<".tarfile.">") 404 405 if v:shell_error != 0 406 redraw! 407 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None 408 else 409 410" call Decho("tarfile<".tarfile."> fname<".fname.">") 411 412 if fname =~ '/' 413 let dirpath = substitute(fname,'/[^/]\+$','','e') 414 if executable("cygpath") 415 let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e') 416 endif 417 call mkdir(dirpath,"p") 418 endif 419 if tarfile !~ '/' 420 let tarfile= curdir.'/'.tarfile 421 endif 422 if tarfile =~ '^\s*-' 423 " A file name starting with a dash may be taken as an option. Prepend ./ to avoid that. 424 let tarfile = substitute(tarfile, '-', './-', '') 425 endif 426" call Decho("tarfile<".tarfile."> fname<".fname.">") 427 428 if exists("g:tar_secure") 429 let tar_secure= " -- " 430 else 431 let tar_secure= " " 432 endif 433 exe "w! ".fnameescape(fname) 434 if executable("cygpath") 435 let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') 436 endif 437 438 " delete old file from tarfile 439" call Decho("system(".g:tar_cmd." --delete -f ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") 440 call system(g:tar_cmd." --delete -f ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) 441 if v:shell_error != 0 442 redraw! 443 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None 444 else 445 446 " update tarfile with new file 447" call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) 448 call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) 449 if v:shell_error != 0 450 redraw! 451 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None 452 elseif exists("compress") 453" call Decho("call system(".compress.")") 454 call system(compress) 455 if exists("tgz") 456" call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")") 457 call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e')) 458 endif 459 endif 460 endif 461 462 " support writing tarfiles across a network 463 if s:tblfile_{winnr()} =~ '^\a\+://' 464" call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") 465 let tblfile= s:tblfile_{winnr()} 466 1split|enew 467 let binkeep= &l:binary 468 let eikeep = &ei 469 set binary ei=all 470 exe "e! ".fnameescape(tarfile) 471 call netrw#NetWrite(tblfile) 472 let &ei = eikeep 473 let &l:binary = binkeep 474 q! 475 unlet s:tblfile_{winnr()} 476 endif 477 endif 478 479 " cleanup and restore current directory 480 cd .. 481 call s:Rmdir("_ZIPVIM_") 482 exe "cd ".fnameescape(curdir) 483 setlocal nomod 484 485 let &report= repkeep 486" call Dret("tar#Write") 487endfun 488 489" --------------------------------------------------------------------- 490" s:Rmdir: {{{2 491fun! s:Rmdir(fname) 492" call Dfunc("Rmdir(fname<".a:fname.">)") 493 if has("unix") 494 call system("/bin/rm -rf -- ".shellescape(a:fname,0)) 495 elseif has("win32") || has("win95") || has("win64") || has("win16") 496 if &shell =~? "sh$" 497 call system("/bin/rm -rf -- ".shellescape(a:fname,0)) 498 else 499 call system("del /S ".shellescape(a:fname,0)) 500 endif 501 endif 502" call Dret("Rmdir") 503endfun 504 505" --------------------------------------------------------------------- 506" tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2 507fun! tar#Vimuntar(...) 508" call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">") 509 let tarball = expand("%") 510" call Decho("tarball<".tarball.">") 511 let tarbase = substitute(tarball,'\..*$','','') 512" call Decho("tarbase<".tarbase.">") 513 let tarhome = expand("%:p") 514 if has("win32") || has("win95") || has("win64") || has("win16") 515 let tarhome= substitute(tarhome,'\\','/','g') 516 endif 517 let tarhome= substitute(tarhome,'/[^/]*$','','') 518" call Decho("tarhome<".tarhome.">") 519 let tartail = expand("%:t") 520" call Decho("tartail<".tartail.">") 521 let curdir = getcwd() 522" call Decho("curdir <".curdir.">") 523 " set up vimhome 524 if a:0 > 0 && a:1 != "" 525 let vimhome= a:1 526 else 527 let vimhome= vimball#VimballHome() 528 endif 529" call Decho("vimhome<".vimhome.">") 530 531" call Decho("curdir<".curdir."> vimhome<".vimhome.">") 532 if simplify(curdir) != simplify(vimhome) 533 " copy (possibly compressed) tarball to .vim/vimfiles 534" call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) 535 call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) 536" call Decho("exe cd ".fnameescape(vimhome)) 537 exe "cd ".fnameescape(vimhome) 538 endif 539" call Decho("getcwd<".getcwd().">") 540 541 " if necessary, decompress the tarball; then, extract it 542 if tartail =~ '\.tgz' 543 if executable("gunzip") 544 silent exe "!gunzip ".shellescape(tartail) 545 elseif executable("gzip") 546 silent exe "!gzip -d ".shellescape(tartail) 547 else 548 echoerr "unable to decompress<".tartail."> on this sytem" 549 if simplify(curdir) != simplify(tarhome) 550 " remove decompressed tarball, restore directory 551" call Decho("delete(".tartail.".tar)") 552 call delete(tartail.".tar") 553" call Decho("exe cd ".fnameescape(curdir)) 554 exe "cd ".fnameescape(curdir) 555 endif 556" call Dret("tar#Vimuntar") 557 return 558 endif 559 else 560 call vimball#Decompress(tartail,0) 561 endif 562 let extractcmd= netrw#WinPath(g:tar_extractcmd) 563" call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")") 564 call system(extractcmd." ".shellescape(tarbase.".tar")) 565 566 " set up help 567 if filereadable("doc/".tarbase.".txt") 568" call Decho("exe helptags ".getcwd()."/doc") 569 exe "helptags ".getcwd()."/doc" 570 endif 571 572 if simplify(tarhome) != simplify(vimhome) 573 " remove decompressed tarball, restore directory 574 call delete(vimhome."/".tarbase.".tar") 575 exe "cd ".fnameescape(curdir) 576 endif 577 578" call Dret("tar#Vimuntar") 579endfun 580 581" ===================================================================== 582" Modelines And Restoration: {{{1 583let &cpo= s:keepcpo 584unlet s:keepcpo 585" vim:ts=8 fdm=marker 586