/
usr
/
share
/
vim
/
vim82
/
autoload
/
/usr/share/vim/vim82/autoload
mkdir
upload
Name
Size
Mode
Actions
dist/
-
0755
rm
xml/
-
0755
rm
ada.vim
22567
0644
edit
dl
rm
adacomplete.vim
3669
0644
edit
dl
rm
ccomplete.vim
17803
0644
edit
dl
rm
clojurecomplete.vim
8665
0644
edit
dl
rm
context.vim
5462
0644
edit
dl
rm
contextcomplete.vim
656
0644
edit
dl
rm
csscomplete.vim
43248
0644
edit
dl
rm
decada.vim
2999
0644
edit
dl
rm
getscript.vim
24875
0644
edit
dl
rm
gnat.vim
5331
0644
edit
dl
rm
gzip.vim
6413
0644
edit
dl
rm
haskellcomplete.vim
105789
0644
edit
dl
rm
htmlcomplete.vim
25484
0644
edit
dl
rm
javascriptcomplete.vim
28140
0644
edit
dl
rm
netrw.vim
555926
0644
edit
dl
rm
netrwFileHandlers.vim
10130
0644
edit
dl
rm
netrwSettings.vim
10461
0644
edit
dl
rm
netrw_gitignore.vim
1234
0644
edit
dl
rm
paste.vim
672
0644
edit
dl
rm
phpcomplete.vim
354507
0644
edit
dl
rm
python3complete.vim
21586
0644
edit
dl
rm
pythoncomplete.vim
22105
0644
edit
dl
rm
README.txt
773
0644
edit
dl
rm
RstFold.vim
1900
0644
edit
dl
rm
rubycomplete.vim
26039
0644
edit
dl
rm
rust.vim
10463
0644
edit
dl
rm
rustfmt.vim
2990
0644
edit
dl
rm
spellfile.vim
6108
0644
edit
dl
rm
sqlcomplete.vim
39188
0644
edit
dl
rm
syntaxcomplete.vim
31443
0644
edit
dl
rm
tar.vim
30152
0644
edit
dl
rm
tohtml.vim
31637
0644
edit
dl
rm
vimball.vim
24331
0644
edit
dl
rm
xmlcomplete.vim
14939
0644
edit
dl
rm
xmlformat.vim
6192
0644
edit
dl
rm
zip.vim
15176
0644
edit
dl
rm
Edit:
/usr/share/vim/vim82/autoload/tar.vim
(30152B)
" tar.vim: Handles browsing tarfiles " AUTOLOAD PORTION " Date: Jan 07, 2020 " Version: 32 " Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> " License: Vim License (see vim's :help license) " " Contains many ideas from Michael Toren's <tar.vim> " " Copyright: Copyright (C) 2005-2017 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright " notice is copied with it. Like anything else that's free, " tar.vim and tarPlugin.vim are provided *as is* and comes " with no warranty of any kind, either expressed or implied. " By using this plugin, you agree that in no event will the " copyright holder be liable for any damages resulting from " the use of this software. " call inputsave()|call input("Press <cr> to continue")|call inputrestore() " --------------------------------------------------------------------- " Load Once: {{{1 if &cp || exists("g:loaded_tar") finish endif let g:loaded_tar= "v32" if v:version < 702 echohl WarningMsg echo "***warning*** this version of tar needs vim 7.2" echohl Normal finish endif let s:keepcpo= &cpo set cpo&vim "DechoTabOn "call Decho("loading autoload/tar.vim") " --------------------------------------------------------------------- " Default Settings: {{{1 if !exists("g:tar_browseoptions") let g:tar_browseoptions= "tf" endif if !exists("g:tar_readoptions") let g:tar_readoptions= "Oxf" endif if !exists("g:tar_cmd") let g:tar_cmd= "tar" endif if !exists("g:tar_writeoptions") let g:tar_writeoptions= "uf" endif if !exists("g:tar_delfile") " Note: not supported on BSD let g:tar_delfile="--delete -f" endif if !exists("g:netrw_cygwin") if has("win32") || has("win95") || has("win64") || has("win16") if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' let g:netrw_cygwin= 1 else let g:netrw_cygwin= 0 endif else let g:netrw_cygwin= 0 endif endif if !exists("g:tar_copycmd") if !exists("g:netrw_localcopycmd") if has("win32") || has("win95") || has("win64") || has("win16") if g:netrw_cygwin let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= "copy" endif elseif has("unix") || has("macunix") let g:netrw_localcopycmd= "cp" else let g:netrw_localcopycmd= "" endif endif let g:tar_copycmd= g:netrw_localcopycmd endif if !exists("g:tar_extractcmd") let g:tar_extractcmd= "tar -xf" endif " set up shell quoting character if !exists("g:tar_shq") if exists("+shq") && exists("&shq") && &shq != "" let g:tar_shq= &shq elseif has("win32") || has("win95") || has("win64") || has("win16") if exists("g:netrw_cygwin") && g:netrw_cygwin let g:tar_shq= "'" else let g:tar_shq= '"' endif else let g:tar_shq= "'" endif " call Decho("g:tar_shq<".g:tar_shq.">") endif let g:tar_secure=' -- ' let g:tar_leading_pat='^\%([.]\{,2\}/\)\+' " ---------------- " Functions: {{{1 " ---------------- " --------------------------------------------------------------------- " tar#Browse: {{{2 fun! tar#Browse(tarfile) " call Dfunc("tar#Browse(tarfile<".a:tarfile.">)") let repkeep= &report set report=10 " sanity checks if !executable(g:tar_cmd) redraw! " call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system') echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' let &report= repkeep " call Dret("tar#Browse") return endif if !filereadable(a:tarfile) " call Decho('a:tarfile<'.a:tarfile.'> not filereadable') if a:tarfile !~# '^\a\+://' " if it's an url, don't complain, let url-handlers such as vim do its thing redraw! " call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">") echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None endif let &report= repkeep " call Dret("tar#Browse : file<".a:tarfile."> not readable") return endif if &ma != 1 set ma endif let b:tarfile= a:tarfile setlocal noswapfile setlocal buftype=nofile setlocal bufhidden=hide setlocal nobuflisted setlocal nowrap set ft=tar " give header " call Decho("printing header") let lastline= line("$") call setline(lastline+1,'" tar.vim version '.g:loaded_tar) call setline(lastline+2,'" Browsing tarfile '.a:tarfile) call setline(lastline+3,'" Select a file with cursor and press ENTER') keepj $put ='' keepj sil! 0d keepj $ let tarfile= a:tarfile if has("win32unix") && executable("cygpath") " assuming cygwin let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif let curlast= line("$") if tarfile =~# '\.\(gz\)$' " call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$' if has("unix") && executable("file") let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2" else let filekind= "" endif if filekind =~ "bzip2" exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif filekind =~ "XZ" exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif filekind =~ "Zstandard" exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " else exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " endif elseif tarfile =~# '\.lrp' " call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$' " call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(lzma\|tlz\)$' " call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(xz\|txz\)$' " call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " elseif tarfile =~# '\.\(zst\|tzs\)$' exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " else if tarfile =~ '^\s*-' " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif " call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0)) exe "sil! r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1) endif if v:shell_error != 0 redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" " call Dret("tar#Browse : a:tarfile<".a:tarfile.">") return endif if line("$") == curlast || ( line("$") == (curlast + 1) && getline("$") =~# '\c\%(warning\|error\|inappropriate\|unrecognized\)') redraw! echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None keepj sil! %d let eikeep= &ei set ei=BufReadCmd,FileReadCmd exe "r ".fnameescape(a:tarfile) let &ei= eikeep keepj sil! 1d " call Dret("tar#Browse : a:tarfile<".a:tarfile.">") return endif " remove tar: Removing leading '/' from member names " Note: the message could be localized if search('^tar: ') > 0 || search(g:tar_leading_pat) > 0 call append(3,'" Note: Path Traversal Attack detected!') let b:leading_slash = 1 " remove the message output sil g/^tar: /d endif " set up maps supported for tar setlocal noma nomod ro noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr> noremap <silent> <buffer> x :call tar#Extract()<cr> if &mouse != "" noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>TarBrowseSelect()<cr> endif let &report= repkeep " call Dret("tar#Browse : b:tarfile<".b:tarfile.">") endfun " --------------------------------------------------------------------- " TarBrowseSelect: {{{2 fun! s:TarBrowseSelect() " call Dfunc("TarBrowseSelect() b:tarfile<".b:tarfile."> curfile<".expand("%").">") let repkeep= &report set report=10 let fname= getline(".") " call Decho("fname<".fname.">") let ls= get(b:, 'leading_slash', 0) " sanity check if fname =~ '^"' let &report= repkeep " call Dret("TarBrowseSelect") return endif " about to make a new window, need to use b:tarfile let tarfile= b:tarfile let curfile= expand("%") if has("win32unix") && executable("cygpath") " assuming cygwin let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif " open a new window (tar#Read will read a file into it) noswapfile new if !exists("g:tar_nomax") || g:tar_nomax == 0 wincmd _ endif let s:tblfile_{winnr()}= curfile let b:leading_slash= ls call tar#Read("tarfile:".tarfile.'::'.fname) filetype detect set nomod exe 'com! -buffer -nargs=? -complete=file TarDiff :call tar#Diff(<q-args>,"'.fnameescape(fname).'")' let &report= repkeep " call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">") endfun " --------------------------------------------------------------------- " tar#Read: {{{2 fun! tar#Read(fname) " call Dfunc("tar#Read(fname<".a:fname.">)") let repkeep= &report set report=10 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','') let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') if has("win32unix") && executable("cygpath") " assuming cygwin let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') endif " call Decho("tarfile<".tarfile.">") " call Decho("fname<".fname.">") let curdir= getcwd() let b:curdir= curdir if fname =~ '\.bz2$' && executable("bzcat") let decmp= "|bzcat" let doro = 1 elseif fname =~ '\.t\=gz$' && executable("zcat") let decmp= "|zcat" let doro = 1 elseif fname =~ '\.lzma$' && executable("lzcat") let decmp= "|lzcat" let doro = 1 elseif fname =~ '\.xz$' && executable("xzcat") let decmp= "|xzcat" let doro = 1 elseif fname =~ '\.zst$' && executable("zstdcat") let decmp= "|zstdcat" let doro = 1 else let decmp="" let doro = 0 if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$' setlocal bin endif endif if tarfile =~# '\.bz2$' exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.\(gz\)$' exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)' if has("unix") && executable("file") let filekind= system("file ".shellescape(tarfile,1)) else let filekind= "" endif if filekind =~ "bzip2" exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif filekind =~ "XZ" exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif filekind =~ "Zstandard" exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp else exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp endif elseif tarfile =~# '\.lrp$' exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.lzma$' exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp elseif tarfile =~# '\.\(xz\|txz\)$' exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".g:tar_secure.shellescape(fname,1).decmp else if tarfile =~ '^\s*-' " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif " call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.g:tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp) exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".g:tar_secure.shellescape(fname,1).decmp endif if get(b:, 'leading_slash', 0) sil g/^tar: /d endif if doro " because the reverse process of compressing changed files back into the tarball is not currently supported setlocal ro endif let b:tarfile= a:fname " cleanup keepj sil! 0d set nomod let &report= repkeep exe "lcd ".fnameescape(curdir) silent exe "file tarfile::". fname->fnameescape() " call Dret("tar#Read : b:tarfile<".b:tarfile.">") endfun " --------------------------------------------------------------------- " tar#Write: {{{2 fun! tar#Write(fname) " call Dfunc("tar#Write(fname<".a:fname.">) b:tarfile<".b:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">") let repkeep= &report set report=10 " sanity checks if !executable(g:tar_cmd) redraw! " call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system') let &report= repkeep " call Dret("tar#Write") return endif if !exists("*mkdir") redraw! " call Decho("***error*** (tar#Write) sorry, mkdir() doesn't work on your system") echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None let &report= repkeep " call Dret("tar#Write") return endif let curdir= getcwd() let tmpdir= tempname() " call Decho("orig tempname<".tmpdir.">") if tmpdir =~ '\.' let tmpdir= substitute(tmpdir,'\.[^.]*$','','e') endif " call Decho("tmpdir<".tmpdir.">") call mkdir(tmpdir,"p") " attempt to change to the indicated directory try exe "cd ".fnameescape(tmpdir) catch /^Vim\%((\a\+)\)\=:E344/ redraw! " call Decho("***error*** (tar#Write) cannot cd to temporary directory") echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None let &report= repkeep " call Dret("tar#Write") return endtry " call Decho("current directory now: ".getcwd()) " place temporary files under .../_ZIPVIM_/ if isdirectory("_ZIPVIM_") call s:Rmdir("_ZIPVIM_") endif call mkdir("_ZIPVIM_") cd _ZIPVIM_ " call Decho("current directory now: ".getcwd()) let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','') let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') if get(b:, 'leading_slash', 0) redraw! echohl Error | echo "***error*** (tar#Write) sorry, not attempting to update ".tarfile." with ".fname | echohl None let &report= repkeep return endif " handle compressed archives if tarfile =~# '\.bz2' call system("bzip2 -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.bz2','','e') let compress= "bzip2 -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") elseif tarfile =~# '\.gz' call system("gzip -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.gz','','e') let compress= "gzip -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") elseif tarfile =~# '\.tgz' call system("gzip -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.tgz','.tar','e') let compress= "gzip -- ".shellescape(tarfile,0) let tgz = 1 " call Decho("compress<".compress.">") elseif tarfile =~# '\.xz' call system("xz -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.xz','','e') let compress= "xz -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") elseif tarfile =~# '\.zst' call system("zstd --decompress -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.zst','','e') let compress= "zstd -- ".shellescape(tarfile,0) elseif tarfile =~# '\.lzma' call system("lzma -d -- ".shellescape(tarfile,0)) let tarfile = substitute(tarfile,'\.lzma','','e') let compress= "lzma -- ".shellescape(tarfile,0) " call Decho("compress<".compress.">") endif " call Decho("tarfile<".tarfile.">") if v:shell_error != 0 redraw! " call Decho("***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname) echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None else " call Decho("tarfile<".tarfile."> fname<".fname.">") if fname =~ '/' let dirpath = substitute(fname,'/[^/]\+$','','e') if has("win32unix") && executable("cygpath") let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e') endif call mkdir(dirpath,"p") endif if tarfile !~ '/' let tarfile= curdir.'/'.tarfile endif if tarfile =~ '^\s*-' " A file name starting with a dash may be taken as an option. Prepend ./ to avoid that. let tarfile = substitute(tarfile, '-', './-', '') endif " call Decho("tarfile<".tarfile."> fname<".fname.">") " don't overwrite a file forcefully exe "w ".fnameescape(fname) if has("win32unix") && executable("cygpath") let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') endif " delete old file from tarfile " call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).g:tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! " call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname)) echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None else " update tarfile with new file " call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).g:tar_secure.shellescape(fname,0)) call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).g:tar_secure.shellescape(fname,0)) if v:shell_error != 0 redraw! " call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname)) echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None elseif exists("compress") " call Decho("call system(".compress.")") call system(compress) if exists("tgz") " call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")") call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e')) endif endif endif " support writing tarfiles across a network if s:tblfile_{winnr()} =~ '^\a\+://' " call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") let tblfile= s:tblfile_{winnr()} 1split|noswapfile enew let binkeep= &l:binary let eikeep = &ei set binary ei=all exe "noswapfile e! ".fnameescape(tarfile) call netrw#NetWrite(tblfile) let &ei = eikeep let &l:binary = binkeep q! unlet s:tblfile_{winnr()} endif endif " cleanup and restore current directory cd .. call s:Rmdir("_ZIPVIM_") exe "cd ".fnameescape(curdir) setlocal nomod let &report= repkeep " call Dret("tar#Write") endfun " --------------------------------------------------------------------- " tar#Diff: {{{2 fun! tar#Diff(userfname,fname) " call Dfunc("tar#Diff(userfname<".a:userfname."> fname<".a:fname.")") let fname= a:fname if a:userfname != "" let fname= a:userfname endif exe "lcd ".fnameescape(b:tmpdir). '/_ZIPVIM_' if filereadable(fname) " sets current file (from tarball) for diff'ing " splits window vertically " opens original file, sets it for diff'ing " sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes) diffthis wincmd v exe "noswapfile e ".fnameescape(fname) diffthis else redraw! echo "***warning*** unable to read file<".fname.">" endif " call Dret("tar#Diff") endfun " --------------------------------------------------------------------- " tar#Extract: extract a file from a (possibly compressed) tar archive {{{2 fun! tar#Extract() " call Dfunc("tar#Extract()") let repkeep= &report set report=10 let fname= getline(".") " call Decho("fname<".fname.">") " sanity check if fname =~ '^"' let &report= repkeep " call Dret("TarBrowseSelect") return endif let tarball = expand("%") " call Decho("tarball<".tarball.">") let tarbase = substitute(tarball,'\..*$','','') " call Decho("tarbase<".tarbase.">") let extractcmd= netrw#WinPath(g:tar_extractcmd) if filereadable(tarbase.".tar") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!") else echo "***note*** successfully extracted ". fname endif elseif filereadable(tarbase.".tgz") let extractcmd= substitute(extractcmd,"-","-z","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tgz ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd."t ".tarbase.".tgz ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tar.gz") let extractcmd= substitute(extractcmd,"-","-z","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tbz") let extractcmd= substitute(extractcmd,"-","-j","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tar.bz2") let extractcmd= substitute(extractcmd,"-","-j","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".txz") let extractcmd= substitute(extractcmd,"-","-J","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tar.xz") let extractcmd= substitute(extractcmd,"-","-J","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tzs") let extractcmd= substitute(extractcmd,"-","--zstd","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif elseif filereadable(tarbase.".tar.zst") let extractcmd= substitute(extractcmd,"-","--zstd","") " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")") call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname)) if v:shell_error != 0 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE " call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!") else echo "***note*** successfully extracted ".fname endif endif " restore option let &report= repkeep " call Dret("tar#Extract") endfun " --------------------------------------------------------------------- " s:Rmdir: {{{2 fun! s:Rmdir(fname) " call Dfunc("Rmdir(fname<".a:fname.">)") if has("unix") call system("/bin/rm -rf -- ".shellescape(a:fname,0)) elseif has("win32") || has("win95") || has("win64") || has("win16") if &shell =~? "sh$" call system("/bin/rm -rf -- ".shellescape(a:fname,0)) else call system("del /S ".shellescape(a:fname,0)) endif endif " call Dret("Rmdir") endfun " --------------------------------------------------------------------- " tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2 fun! tar#Vimuntar(...) " call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">") let tarball = expand("%") " call Decho("tarball<".tarball.">") let tarbase = substitute(tarball,'\..*$','','') " call Decho("tarbase<".tarbase.">") let tarhome = expand("%:p") if has("win32") || has("win95") || has("win64") || has("win16") let tarhome= substitute(tarhome,'\\','/','g') endif let tarhome= substitute(tarhome,'/[^/]*$','','') " call Decho("tarhome<".tarhome.">") let tartail = expand("%:t") " call Decho("tartail<".tartail.">") let curdir = getcwd() " call Decho("curdir <".curdir.">") " set up vimhome if a:0 > 0 && a:1 != "" let vimhome= a:1 else let vimhome= vimball#VimballHome() endif " call Decho("vimhome<".vimhome.">") " call Decho("curdir<".curdir."> vimhome<".vimhome.">") if simplify(curdir) != simplify(vimhome) " copy (possibly compressed) tarball to .vim/vimfiles " call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) " call Decho("exe cd ".fnameescape(vimhome)) exe "cd ".fnameescape(vimhome) endif " call Decho("getcwd<".getcwd().">") " if necessary, decompress the tarball; then, extract it if tartail =~ '\.tgz' if executable("gunzip") silent exe "!gunzip ".shellescape(tartail) elseif executable("gzip") silent exe "!gzip -d ".shellescape(tartail) else echoerr "unable to decompress<".tartail."> on this sytem" if simplify(curdir) != simplify(tarhome) " remove decompressed tarball, restore directory " call Decho("delete(".tartail.".tar)") call delete(tartail.".tar") " call Decho("exe cd ".fnameescape(curdir)) exe "cd ".fnameescape(curdir) endif " call Dret("tar#Vimuntar") return endif else call vimball#Decompress(tartail,0) endif let extractcmd= netrw#WinPath(g:tar_extractcmd) " call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")") call system(extractcmd." ".shellescape(tarbase.".tar")) " set up help if filereadable("doc/".tarbase.".txt") " call Decho("exe helptags ".getcwd()."/doc") exe "helptags ".getcwd()."/doc" endif if simplify(tarhome) != simplify(vimhome) " remove decompressed tarball, restore directory call delete(vimhome."/".tarbase.".tar") exe "cd ".fnameescape(curdir) endif " call Dret("tar#Vimuntar") endfun " ===================================================================== " Modelines And Restoration: {{{1 let &cpo= s:keepcpo unlet s:keepcpo " vim:ts=8 fdm=marker
Save
cmd:
run