Mercurial > vim
annotate runtime/autoload/tar.vim @ 33953:ab75ab5a9eb5 v9.0.2171
patch 9.0.2171: The options[] array is still not sorted alphabetically
Commit: https://github.com/vim/vim/commit/ffba4e952b25c9257a7b0bd860b85fca2c1e65f4
Author: zeertzjq <zeertzjq@outlook.com>
Date: Sat Dec 16 14:14:36 2023 +0100
patch 9.0.2171: The options[] array is still not sorted alphabetically
Problem: The options[] array is still not sorted alphabetically
(after: v9.0.2154), causing test failures
Solution: Sort the remaining items
This causes an failure for the vim/vim-win32-installer builds, so make
sure it is completely sorted.
closes: #13690
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 16 Dec 2023 14:30:04 +0100 |
parents | 9968a3af7e7b |
children | e003aedbf9e1 |
rev | line source |
---|---|
557 | 1 " tar.vim: Handles browsing tarfiles |
2 " AUTOLOAD PORTION | |
33771
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
3 " Date: Nov 14, 2023 |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
4 " Version: 32b (with modifications from the Vim Project) |
19099 | 5 " Maintainer: Charles E Campbell <NcampObell@SdrPchip.AorgM-NOSPAM> |
6 " License: Vim License (see vim's :help license) | |
446 | 7 " |
557 | 8 " Contains many ideas from Michael Toren's <tar.vim> |
446 | 9 " |
19099 | 10 " Copyright: Copyright (C) 2005-2017 Charles E. Campbell {{{1 |
557 | 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, | |
1624 | 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. | |
2034 | 19 " call inputsave()|call input("Press <cr> to continue")|call inputrestore() |
557 | 20 " --------------------------------------------------------------------- |
1125 | 21 " Load Once: {{{1 |
2034 | 22 if &cp || exists("g:loaded_tar") |
23 finish | |
24 endif | |
33722
ccde95a374dd
runtime(tar): improve the error detection
Christian Brabandt <cb@256bit.org>
parents:
25773
diff
changeset
|
25 let g:loaded_tar= "v32a" |
2034 | 26 if v:version < 702 |
27 echohl WarningMsg | |
28 echo "***warning*** this version of tar needs vim 7.2" | |
29 echohl Normal | |
30 finish | |
31 endif | |
557 | 32 let s:keepcpo= &cpo |
33 set cpo&vim | |
4339 | 34 "DechoTabOn |
819 | 35 "call Decho("loading autoload/tar.vim") |
557 | 36 |
37 " --------------------------------------------------------------------- | |
38 " Default Settings: {{{1 | |
39 if !exists("g:tar_browseoptions") | |
40 let g:tar_browseoptions= "Ptf" | |
41 endif | |
42 if !exists("g:tar_readoptions") | |
43 let g:tar_readoptions= "OPxf" | |
44 endif | |
819 | 45 if !exists("g:tar_cmd") |
46 let g:tar_cmd= "tar" | |
47 endif | |
557 | 48 if !exists("g:tar_writeoptions") |
49 let g:tar_writeoptions= "uf" | |
50 endif | |
19099 | 51 if !exists("g:tar_delfile") |
52 let g:tar_delfile="--delete -f" | |
53 endif | |
2908 | 54 if !exists("g:netrw_cygwin") |
55 if has("win32") || has("win95") || has("win64") || has("win16") | |
56 if &shell =~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$' | |
57 let g:netrw_cygwin= 1 | |
58 else | |
59 let g:netrw_cygwin= 0 | |
60 endif | |
61 else | |
62 let g:netrw_cygwin= 0 | |
63 endif | |
64 endif | |
2034 | 65 if !exists("g:tar_copycmd") |
66 if !exists("g:netrw_localcopycmd") | |
67 if has("win32") || has("win95") || has("win64") || has("win16") | |
68 if g:netrw_cygwin | |
69 let g:netrw_localcopycmd= "cp" | |
70 else | |
71 let g:netrw_localcopycmd= "copy" | |
72 endif | |
73 elseif has("unix") || has("macunix") | |
74 let g:netrw_localcopycmd= "cp" | |
75 else | |
76 let g:netrw_localcopycmd= "" | |
77 endif | |
78 endif | |
79 let g:tar_copycmd= g:netrw_localcopycmd | |
80 endif | |
81 if !exists("g:tar_extractcmd") | |
82 let g:tar_extractcmd= "tar -xf" | |
83 endif | |
1624 | 84 |
85 " set up shell quoting character | |
1125 | 86 if !exists("g:tar_shq") |
4339 | 87 if exists("+shq") && exists("&shq") && &shq != "" |
1624 | 88 let g:tar_shq= &shq |
89 elseif has("win32") || has("win95") || has("win64") || has("win16") | |
90 if exists("g:netrw_cygwin") && g:netrw_cygwin | |
91 let g:tar_shq= "'" | |
92 else | |
93 let g:tar_shq= '"' | |
94 endif | |
95 else | |
1125 | 96 let g:tar_shq= "'" |
97 endif | |
1624 | 98 " call Decho("g:tar_shq<".g:tar_shq.">") |
1125 | 99 endif |
557 | 100 |
101 " ---------------- | |
102 " Functions: {{{1 | |
103 " ---------------- | |
446 | 104 |
527 | 105 " --------------------------------------------------------------------- |
557 | 106 " tar#Browse: {{{2 |
107 fun! tar#Browse(tarfile) | |
108 " call Dfunc("tar#Browse(tarfile<".a:tarfile.">)") | |
569 | 109 let repkeep= &report |
110 set report=10 | |
446 | 111 |
557 | 112 " sanity checks |
819 | 113 if !executable(g:tar_cmd) |
1125 | 114 redraw! |
19099 | 115 " call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system') |
819 | 116 echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system' |
569 | 117 let &report= repkeep |
557 | 118 " call Dret("tar#Browse") |
119 return | |
120 endif | |
121 if !filereadable(a:tarfile) | |
819 | 122 " call Decho('a:tarfile<'.a:tarfile.'> not filereadable') |
557 | 123 if a:tarfile !~# '^\a\+://' |
19116 | 124 " if it's an url, don't complain, let url-handlers such as vim do its thing |
1125 | 125 redraw! |
19099 | 126 " call Decho("***error*** (tar#Browse) File not readable<".a:tarfile.">") |
557 | 127 echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None |
128 endif | |
569 | 129 let &report= repkeep |
557 | 130 " call Dret("tar#Browse : file<".a:tarfile."> not readable") |
131 return | |
132 endif | |
133 if &ma != 1 | |
134 set ma | |
135 endif | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
136 let b:tarfile= a:tarfile |
446 | 137 |
557 | 138 setlocal noswapfile |
139 setlocal buftype=nofile | |
140 setlocal bufhidden=hide | |
141 setlocal nobuflisted | |
142 setlocal nowrap | |
143 set ft=tar | |
446 | 144 |
557 | 145 " give header |
819 | 146 " call Decho("printing header") |
1624 | 147 let lastline= line("$") |
148 call setline(lastline+1,'" tar.vim version '.g:loaded_tar) | |
149 call setline(lastline+2,'" Browsing tarfile '.a:tarfile) | |
150 call setline(lastline+3,'" Select a file with cursor and press ENTER') | |
2908 | 151 keepj $put ='' |
3281 | 152 keepj sil! 0d |
2908 | 153 keepj $ |
446 | 154 |
819 | 155 let tarfile= a:tarfile |
4339 | 156 if has("win32unix") && executable("cygpath") |
819 | 157 " assuming cygwin |
2034 | 158 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') |
819 | 159 endif |
19099 | 160 let curlast= line("$") |
14668 | 161 |
19099 | 162 if tarfile =~# '\.\(gz\)$' |
2034 | 163 " call Decho("1: exe silent r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") |
19099 | 164 exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " |
165 | |
23047 | 166 elseif tarfile =~# '\.\(tgz\)$' || tarfile =~# '\.\(tbz\)$' || tarfile =~# '\.\(txz\)$' || tarfile =~# '\.\(tzs\)$' |
19099 | 167 if has("unix") && executable("file") |
168 let filekind= system("file ".shellescape(tarfile,1)) =~ "bzip2" | |
169 else | |
170 let filekind= "" | |
171 endif | |
172 | |
173 if filekind =~ "bzip2" | |
174 exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " | |
175 elseif filekind =~ "XZ" | |
176 exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " | |
23047 | 177 elseif filekind =~ "Zstandard" |
178 exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " | |
19099 | 179 else |
180 exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " | |
181 endif | |
182 | |
1624 | 183 elseif tarfile =~# '\.lrp' |
2034 | 184 " call Decho("2: exe silent r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - ") |
14679
ba010fa2bcba
patch 8.1.0352: browsing compressed tar files does not always work
Christian Brabandt <cb@256bit.org>
parents:
14668
diff
changeset
|
185 exe "sil! r! cat -- ".shellescape(tarfile,1)."|gzip -d -c -|".g:tar_cmd." -".g:tar_browseoptions." - " |
3281 | 186 elseif tarfile =~# '\.\(bz2\|tbz\|tb2\)$' |
2034 | 187 " call Decho("3: exe silent r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") |
2908 | 188 exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " |
3281 | 189 elseif tarfile =~# '\.\(lzma\|tlz\)$' |
2034 | 190 " call Decho("3: exe silent r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") |
2908 | 191 exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " |
2426 | 192 elseif tarfile =~# '\.\(xz\|txz\)$' |
193 " call Decho("3: exe silent r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - ") | |
2908 | 194 exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " |
23047 | 195 elseif tarfile =~# '\.\(zst\|tzs\)$' |
196 exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_browseoptions." - " | |
557 | 197 else |
1702 | 198 if tarfile =~ '^\s*-' |
2034 | 199 " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. |
1702 | 200 let tarfile = substitute(tarfile, '-', './-', '') |
201 endif | |
2034 | 202 " call Decho("4: exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,0)) |
2908 | 203 exe "sil! r! ".g:tar_cmd." -".g:tar_browseoptions." ".shellescape(tarfile,1) |
557 | 204 endif |
819 | 205 if v:shell_error != 0 |
1125 | 206 redraw! |
857 | 207 echohl WarningMsg | echo "***warning*** (tar#Browse) please check your g:tar_browseoptions<".g:tar_browseoptions.">" |
208 " call Dret("tar#Browse : a:tarfile<".a:tarfile.">") | |
209 return | |
210 endif | |
33722
ccde95a374dd
runtime(tar): improve the error detection
Christian Brabandt <cb@256bit.org>
parents:
25773
diff
changeset
|
211 " |
33771
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
212 " The following should not be neccessary, since in case of errors the |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
213 " previous if statement should have caught the problem (because tar exited |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
214 " with a non-zero exit code). |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
215 " if line("$") == curlast || ( line("$") == (curlast + 1) && |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
216 " \ getline("$") =~# '\c\<\%(warning\|error\|inappropriate\|unrecognized\)\>' && |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
217 " \ getline("$") =~ '\s' ) |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
218 " redraw! |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
219 " echohl WarningMsg | echo "***warning*** (tar#Browse) ".a:tarfile." doesn't appear to be a tar file" | echohl None |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
220 " keepj sil! %d |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
221 " let eikeep= &ei |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
222 " set ei=BufReadCmd,FileReadCmd |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
223 " exe "r ".fnameescape(a:tarfile) |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
224 " let &ei= eikeep |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
225 " keepj sil! 1d |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
226 " call Dret("tar#Browse : a:tarfile<".a:tarfile.">") |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
227 " return |
9968a3af7e7b
runtime(tar): comment out strange error condition check
Christian Brabandt <cb@256bit.org>
parents:
33722
diff
changeset
|
228 " endif |
446 | 229 |
19099 | 230 " set up maps supported for tar |
557 | 231 setlocal noma nomod ro |
19099 | 232 noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr> |
233 noremap <silent> <buffer> x :call tar#Extract()<cr> | |
234 if &mouse != "" | |
235 noremap <silent> <buffer> <leftmouse> <leftmouse>:call <SID>TarBrowseSelect()<cr> | |
236 endif | |
557 | 237 |
569 | 238 let &report= repkeep |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
239 " call Dret("tar#Browse : b:tarfile<".b:tarfile.">") |
527 | 240 endfun |
241 | |
242 " --------------------------------------------------------------------- | |
557 | 243 " TarBrowseSelect: {{{2 |
244 fun! s:TarBrowseSelect() | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
245 " call Dfunc("TarBrowseSelect() b:tarfile<".b:tarfile."> curfile<".expand("%").">") |
569 | 246 let repkeep= &report |
247 set report=10 | |
557 | 248 let fname= getline(".") |
249 " call Decho("fname<".fname.">") | |
250 | |
1702 | 251 if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-' |
252 redraw! | |
2034 | 253 echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"' |
1702 | 254 " call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"') |
255 return | |
256 endif | |
257 | |
557 | 258 " sanity check |
259 if fname =~ '^"' | |
569 | 260 let &report= repkeep |
557 | 261 " call Dret("TarBrowseSelect") |
262 return | |
263 endif | |
264 | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
265 " about to make a new window, need to use b:tarfile |
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
266 let tarfile= b:tarfile |
557 | 267 let curfile= expand("%") |
4339 | 268 if has("win32unix") && executable("cygpath") |
819 | 269 " assuming cygwin |
2034 | 270 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') |
819 | 271 endif |
557 | 272 |
19099 | 273 " open a new window (tar#Read will read a file into it) |
274 noswapfile new | |
1624 | 275 if !exists("g:tar_nomax") || g:tar_nomax == 0 |
276 wincmd _ | |
277 endif | |
557 | 278 let s:tblfile_{winnr()}= curfile |
1624 | 279 call tar#Read("tarfile:".tarfile.'::'.fname,1) |
557 | 280 filetype detect |
4339 | 281 set nomod |
282 exe 'com! -buffer -nargs=? -complete=file TarDiff :call tar#Diff(<q-args>,"'.fnameescape(fname).'")' | |
557 | 283 |
569 | 284 let &report= repkeep |
557 | 285 " call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">") |
286 endfun | |
287 | |
288 " --------------------------------------------------------------------- | |
289 " tar#Read: {{{2 | |
290 fun! tar#Read(fname,mode) | |
291 " call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")") | |
569 | 292 let repkeep= &report |
293 set report=10 | |
1624 | 294 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\)::.*$','\1','') |
295 let fname = substitute(a:fname,'tarfile:.\{-}::\(.*\)$','\1','') | |
4339 | 296 if has("win32unix") && executable("cygpath") |
819 | 297 " assuming cygwin |
2034 | 298 let tarfile=substitute(system("cygpath -u ".shellescape(tarfile,0)),'\n$','','e') |
819 | 299 endif |
300 " call Decho("tarfile<".tarfile.">") | |
301 " call Decho("fname<".fname.">") | |
557 | 302 |
2034 | 303 if fname =~ '\.bz2$' && executable("bzcat") |
304 let decmp= "|bzcat" | |
305 let doro = 1 | |
19099 | 306 elseif fname =~ '\.t\=gz$' && executable("zcat") |
1624 | 307 let decmp= "|zcat" |
308 let doro = 1 | |
2034 | 309 elseif fname =~ '\.lzma$' && executable("lzcat") |
310 let decmp= "|lzcat" | |
1624 | 311 let doro = 1 |
2426 | 312 elseif fname =~ '\.xz$' && executable("xzcat") |
313 let decmp= "|xzcat" | |
314 let doro = 1 | |
23047 | 315 elseif fname =~ '\.zst$' && executable("zstdcat") |
316 let decmp= "|zstdcat" | |
317 let doro = 1 | |
1624 | 318 else |
319 let decmp="" | |
320 let doro = 0 | |
2426 | 321 if fname =~ '\.bz2$\|\.gz$\|\.lzma$\|\.xz$\|\.zip$\|\.Z$' |
1624 | 322 setlocal bin |
323 endif | |
324 endif | |
325 | |
1702 | 326 if exists("g:tar_secure") |
327 let tar_secure= " -- " | |
328 else | |
329 let tar_secure= " " | |
330 endif | |
14668 | 331 |
2034 | 332 if tarfile =~# '\.bz2$' |
2908 | 333 exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp |
19099 | 334 elseif tarfile =~# '\.\(gz\)$' |
335 exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp | |
336 | |
337 elseif tarfile =~# '\(\.tgz\|\.tbz\|\.txz\)' | |
338 if has("unix") && executable("file") | |
339 let filekind= system("file ".shellescape(tarfile,1)) | |
340 else | |
341 let filekind= "" | |
342 endif | |
343 if filekind =~ "bzip2" | |
344 exe "sil! r! bzip2 -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp | |
345 elseif filekind =~ "XZ" | |
346 exe "sil! r! xz -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp | |
23047 | 347 elseif filekind =~ "Zstandard" |
348 exe "sil! r! zstd --decompress --stdout -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp | |
19099 | 349 else |
350 exe "sil! r! gzip -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp | |
351 endif | |
352 | |
1624 | 353 elseif tarfile =~# '\.lrp$' |
14679
ba010fa2bcba
patch 8.1.0352: browsing compressed tar files does not always work
Christian Brabandt <cb@256bit.org>
parents:
14668
diff
changeset
|
354 exe "sil! r! cat -- ".shellescape(tarfile,1)." | gzip -d -c - | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp |
2034 | 355 elseif tarfile =~# '\.lzma$' |
2908 | 356 exe "sil! r! lzma -d -c -- ".shellescape(tarfile,1)."| ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp |
2426 | 357 elseif tarfile =~# '\.\(xz\|txz\)$' |
2908 | 358 exe "sil! r! xz --decompress --stdout -- ".shellescape(tarfile,1)." | ".g:tar_cmd." -".g:tar_readoptions." - ".tar_secure.shellescape(fname,1).decmp |
557 | 359 else |
1702 | 360 if tarfile =~ '^\s*-' |
2034 | 361 " A file name starting with a dash is taken as an option. Prepend ./ to avoid that. |
1702 | 362 let tarfile = substitute(tarfile, '-', './-', '') |
363 endif | |
2034 | 364 " call Decho("8: exe silent r! ".g:tar_cmd." -".g:tar_readoptions.tar_secure.shellescape(tarfile,1)." ".shellescape(fname,1).decmp) |
365 exe "silent r! ".g:tar_cmd." -".g:tar_readoptions.shellescape(tarfile,1)." ".tar_secure.shellescape(fname,1).decmp | |
557 | 366 endif |
1624 | 367 |
368 if doro | |
369 " because the reverse process of compressing changed files back into the tarball is not currently supported | |
370 setlocal ro | |
371 endif | |
372 | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
373 let b:tarfile= a:fname |
1668 | 374 exe "file tarfile::".fnameescape(fname) |
557 | 375 |
376 " cleanup | |
2908 | 377 keepj sil! 0d |
557 | 378 set nomod |
379 | |
569 | 380 let &report= repkeep |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
381 " call Dret("tar#Read : b:tarfile<".b:tarfile.">") |
557 | 382 endfun |
383 | |
384 " --------------------------------------------------------------------- | |
385 " tar#Write: {{{2 | |
386 fun! tar#Write(fname) | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
387 " call Dfunc("tar#Write(fname<".a:fname.">) b:tarfile<".b:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">") |
569 | 388 let repkeep= &report |
389 set report=10 | |
557 | 390 |
1702 | 391 if !exists("g:tar_secure") && a:fname =~ '^\s*-\|\s\+-' |
392 redraw! | |
2034 | 393 echohl WarningMsg | echo '***warning*** (tar#Write) rejecting tarfile member<'.a:fname.'> because of embedded "-"' |
1702 | 394 " call Dret('tar#Write : rejecting tarfile member<'.fname.'> because of embedded "-"') |
395 return | |
396 endif | |
397 | |
527 | 398 " sanity checks |
819 | 399 if !executable(g:tar_cmd) |
1125 | 400 redraw! |
19099 | 401 " call Decho('***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system') |
569 | 402 let &report= repkeep |
527 | 403 " call Dret("tar#Write") |
404 return | |
405 endif | |
406 if !exists("*mkdir") | |
1125 | 407 redraw! |
19099 | 408 " call Decho("***error*** (tar#Write) sorry, mkdir() doesn't work on your system") |
557 | 409 echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None |
569 | 410 let &report= repkeep |
527 | 411 " call Dret("tar#Write") |
412 return | |
413 endif | |
414 | |
415 let curdir= getcwd() | |
416 let tmpdir= tempname() | |
417 " call Decho("orig tempname<".tmpdir.">") | |
418 if tmpdir =~ '\.' | |
419 let tmpdir= substitute(tmpdir,'\.[^.]*$','','e') | |
420 endif | |
421 " call Decho("tmpdir<".tmpdir.">") | |
422 call mkdir(tmpdir,"p") | |
423 | |
424 " attempt to change to the indicated directory | |
425 try | |
1624 | 426 exe "cd ".fnameescape(tmpdir) |
527 | 427 catch /^Vim\%((\a\+)\)\=:E344/ |
1125 | 428 redraw! |
19099 | 429 " call Decho("***error*** (tar#Write) cannot cd to temporary directory") |
557 | 430 echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None |
569 | 431 let &report= repkeep |
527 | 432 " call Dret("tar#Write") |
433 return | |
434 endtry | |
435 " call Decho("current directory now: ".getcwd()) | |
446 | 436 |
557 | 437 " place temporary files under .../_ZIPVIM_/ |
438 if isdirectory("_ZIPVIM_") | |
439 call s:Rmdir("_ZIPVIM_") | |
527 | 440 endif |
557 | 441 call mkdir("_ZIPVIM_") |
442 cd _ZIPVIM_ | |
527 | 443 " call Decho("current directory now: ".getcwd()) |
444 | |
2535
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
445 let tarfile = substitute(b:tarfile,'tarfile:\(.\{-}\)::.*$','\1','') |
31e51111bd14
Runtime file updates. Fix tar plugin window split.
Bram Moolenaar <bram@vim.org>
parents:
2426
diff
changeset
|
446 let fname = substitute(b:tarfile,'tarfile:.\{-}::\(.*\)$','\1','') |
557 | 447 |
448 " handle compressed archives | |
2034 | 449 if tarfile =~# '\.bz2' |
450 call system("bzip2 -d -- ".shellescape(tarfile,0)) | |
451 let tarfile = substitute(tarfile,'\.bz2','','e') | |
452 let compress= "bzip2 -- ".shellescape(tarfile,0) | |
453 " call Decho("compress<".compress.">") | |
454 elseif tarfile =~# '\.gz' | |
19099 | 455 call system("gzip -d -- ".shellescape(tarfile,0)) |
557 | 456 let tarfile = substitute(tarfile,'\.gz','','e') |
2034 | 457 let compress= "gzip -- ".shellescape(tarfile,0) |
458 " call Decho("compress<".compress.">") | |
557 | 459 elseif tarfile =~# '\.tgz' |
19099 | 460 call system("gzip -d -- ".shellescape(tarfile,0)) |
557 | 461 let tarfile = substitute(tarfile,'\.tgz','.tar','e') |
2034 | 462 let compress= "gzip -- ".shellescape(tarfile,0) |
557 | 463 let tgz = 1 |
1702 | 464 " call Decho("compress<".compress.">") |
2426 | 465 elseif tarfile =~# '\.xz' |
466 call system("xz -d -- ".shellescape(tarfile,0)) | |
467 let tarfile = substitute(tarfile,'\.xz','','e') | |
468 let compress= "xz -- ".shellescape(tarfile,0) | |
469 " call Decho("compress<".compress.">") | |
23047 | 470 elseif tarfile =~# '\.zst' |
471 call system("zstd --decompress -- ".shellescape(tarfile,0)) | |
472 let tarfile = substitute(tarfile,'\.zst','','e') | |
473 let compress= "zstd -- ".shellescape(tarfile,0) | |
2426 | 474 elseif tarfile =~# '\.lzma' |
475 call system("lzma -d -- ".shellescape(tarfile,0)) | |
476 let tarfile = substitute(tarfile,'\.lzma','','e') | |
477 let compress= "lzma -- ".shellescape(tarfile,0) | |
478 " call Decho("compress<".compress.">") | |
527 | 479 endif |
1624 | 480 " call Decho("tarfile<".tarfile.">") |
527 | 481 |
482 if v:shell_error != 0 | |
1125 | 483 redraw! |
19099 | 484 " call Decho("***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname) |
557 | 485 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None |
527 | 486 else |
557 | 487 |
488 " call Decho("tarfile<".tarfile."> fname<".fname.">") | |
489 | |
624 | 490 if fname =~ '/' |
491 let dirpath = substitute(fname,'/[^/]\+$','','e') | |
4339 | 492 if has("win32unix") && executable("cygpath") |
2034 | 493 let dirpath = substitute(system("cygpath ".shellescape(dirpath, 0)),'\n','','e') |
624 | 494 endif |
495 call mkdir(dirpath,"p") | |
496 endif | |
557 | 497 if tarfile !~ '/' |
498 let tarfile= curdir.'/'.tarfile | |
499 endif | |
1702 | 500 if tarfile =~ '^\s*-' |
501 " A file name starting with a dash may be taken as an option. Prepend ./ to avoid that. | |
502 let tarfile = substitute(tarfile, '-', './-', '') | |
503 endif | |
557 | 504 " call Decho("tarfile<".tarfile."> fname<".fname.">") |
505 | |
1702 | 506 if exists("g:tar_secure") |
507 let tar_secure= " -- " | |
508 else | |
509 let tar_secure= " " | |
510 endif | |
1624 | 511 exe "w! ".fnameescape(fname) |
4339 | 512 if has("win32unix") && executable("cygpath") |
2034 | 513 let tarfile = substitute(system("cygpath ".shellescape(tarfile,0)),'\n','','e') |
557 | 514 endif |
515 | |
516 " delete old file from tarfile | |
19099 | 517 " call Decho("system(".g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0)." -- ".shellescape(fname,0).")") |
518 call system(g:tar_cmd." ".g:tar_delfile." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) | |
557 | 519 if v:shell_error != 0 |
1125 | 520 redraw! |
19099 | 521 " call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname)) |
1624 | 522 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None |
557 | 523 else |
524 | |
525 " update tarfile with new file | |
2034 | 526 " call Decho(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) |
527 call system(g:tar_cmd." -".g:tar_writeoptions." ".shellescape(tarfile,0).tar_secure.shellescape(fname,0)) | |
557 | 528 if v:shell_error != 0 |
1125 | 529 redraw! |
19099 | 530 " call Decho("***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname)) |
1624 | 531 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".fnameescape(tarfile)." with ".fnameescape(fname) | echohl None |
557 | 532 elseif exists("compress") |
533 " call Decho("call system(".compress.")") | |
534 call system(compress) | |
535 if exists("tgz") | |
536 " call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")") | |
537 call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e')) | |
538 endif | |
539 endif | |
540 endif | |
541 | |
542 " support writing tarfiles across a network | |
543 if s:tblfile_{winnr()} =~ '^\a\+://' | |
544 " call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">") | |
545 let tblfile= s:tblfile_{winnr()} | |
19099 | 546 1split|noswapfile enew |
2034 | 547 let binkeep= &l:binary |
557 | 548 let eikeep = &ei |
549 set binary ei=all | |
19099 | 550 exe "noswapfile e! ".fnameescape(tarfile) |
557 | 551 call netrw#NetWrite(tblfile) |
2034 | 552 let &ei = eikeep |
553 let &l:binary = binkeep | |
557 | 554 q! |
555 unlet s:tblfile_{winnr()} | |
556 endif | |
527 | 557 endif |
558 | |
559 " cleanup and restore current directory | |
560 cd .. | |
557 | 561 call s:Rmdir("_ZIPVIM_") |
1668 | 562 exe "cd ".fnameescape(curdir) |
527 | 563 setlocal nomod |
564 | |
569 | 565 let &report= repkeep |
527 | 566 " call Dret("tar#Write") |
567 endfun | |
568 | |
569 " --------------------------------------------------------------------- | |
4339 | 570 " tar#Diff: {{{2 |
571 fun! tar#Diff(userfname,fname) | |
572 " call Dfunc("tar#Diff(userfname<".a:userfname."> fname<".a:fname.")") | |
573 let fname= a:fname | |
574 if a:userfname != "" | |
575 let fname= a:userfname | |
576 endif | |
577 if filereadable(fname) | |
578 " sets current file (from tarball) for diff'ing | |
579 " splits window vertically | |
580 " opens original file, sets it for diff'ing | |
581 " sets up b:tardiff_otherbuf variables so each buffer knows about the other (for closing purposes) | |
582 diffthis | |
583 wincmd v | |
19099 | 584 exe "noswapfile e ".fnameescape(fname) |
4339 | 585 diffthis |
586 else | |
587 redraw! | |
588 echo "***warning*** unable to read file<".fname.">" | |
589 endif | |
590 " call Dret("tar#Diff") | |
591 endfun | |
592 | |
593 " --------------------------------------------------------------------- | |
19099 | 594 " tar#Extract: extract a file from a (possibly compressed) tar archive {{{2 |
595 fun! tar#Extract() | |
596 " call Dfunc("tar#Extract()") | |
597 | |
598 let repkeep= &report | |
599 set report=10 | |
600 let fname= getline(".") | |
601 " call Decho("fname<".fname.">") | |
602 | |
603 if !exists("g:tar_secure") && fname =~ '^\s*-\|\s\+-' | |
604 redraw! | |
605 echohl WarningMsg | echo '***warning*** (tar#BrowseSelect) rejecting tarfile member<'.fname.'> because of embedded "-"' | |
606 " call Dret('tar#BrowseSelect : rejecting tarfile member<'.fname.'> because of embedded "-"') | |
607 return | |
608 endif | |
609 | |
610 " sanity check | |
611 if fname =~ '^"' | |
612 let &report= repkeep | |
613 " call Dret("TarBrowseSelect") | |
614 return | |
615 endif | |
616 | |
617 let tarball = expand("%") | |
618 " call Decho("tarball<".tarball.">") | |
619 let tarbase = substitute(tarball,'\..*$','','') | |
620 " call Decho("tarbase<".tarbase.">") | |
621 | |
622 let extractcmd= netrw#WinPath(g:tar_extractcmd) | |
623 if filereadable(tarbase.".tar") | |
624 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname).")") | |
625 call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname)) | |
626 if v:shell_error != 0 | |
627 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!" | echohl NONE | |
628 " call Decho("***error*** ".extractcmd." ".tarbase.".tar ".fname.": failed!") | |
629 else | |
630 echo "***note*** successfully extracted ".fname | |
631 endif | |
632 | |
633 elseif filereadable(tarbase.".tgz") | |
634 let extractcmd= substitute(extractcmd,"-","-z","") | |
635 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname).")") | |
636 call system(extractcmd." ".shellescape(tarbase).".tgz ".shellescape(fname)) | |
637 if v:shell_error != 0 | |
638 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tgz ".fname.": failed!" | echohl NONE | |
639 " call Decho("***error*** ".extractcmd."t ".tarbase.".tgz ".fname.": failed!") | |
640 else | |
641 echo "***note*** successfully extracted ".fname | |
642 endif | |
643 | |
644 elseif filereadable(tarbase.".tar.gz") | |
645 let extractcmd= substitute(extractcmd,"-","-z","") | |
646 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname).")") | |
647 call system(extractcmd." ".shellescape(tarbase).".tar.gz ".shellescape(fname)) | |
648 if v:shell_error != 0 | |
649 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!" | echohl NONE | |
650 " call Decho("***error*** ".extractcmd." ".tarbase.".tar.gz ".fname.": failed!") | |
651 else | |
652 echo "***note*** successfully extracted ".fname | |
653 endif | |
654 | |
655 elseif filereadable(tarbase.".tbz") | |
656 let extractcmd= substitute(extractcmd,"-","-j","") | |
657 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname).")") | |
658 call system(extractcmd." ".shellescape(tarbase).".tbz ".shellescape(fname)) | |
659 if v:shell_error != 0 | |
660 echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!" | echohl NONE | |
661 " call Decho("***error*** ".extractcmd."j ".tarbase.".tbz ".fname.": failed!") | |
662 else | |
663 echo "***note*** successfully extracted ".fname | |
664 endif | |
665 | |
666 elseif filereadable(tarbase.".tar.bz2") | |
667 let extractcmd= substitute(extractcmd,"-","-j","") | |
668 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname).")") | |
669 call system(extractcmd." ".shellescape(tarbase).".tar.bz2 ".shellescape(fname)) | |
670 if v:shell_error != 0 | |
671 echohl Error | echo "***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!" | echohl NONE | |
672 " call Decho("***error*** ".extractcmd."j ".tarbase.".tar.bz2 ".fname.": failed!") | |
673 else | |
674 echo "***note*** successfully extracted ".fname | |
675 endif | |
676 | |
677 elseif filereadable(tarbase.".txz") | |
678 let extractcmd= substitute(extractcmd,"-","-J","") | |
679 " call Decho("system(".extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname).")") | |
680 call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) | |
681 if v:shell_error != 0 | |
682 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!" | echohl NONE | |
683 " call Decho("***error*** ".extractcmd." ".tarbase.".txz ".fname.": failed!") | |
684 else | |
685 echo "***note*** successfully extracted ".fname | |
686 endif | |
687 | |
688 elseif filereadable(tarbase.".tar.xz") | |
689 let extractcmd= substitute(extractcmd,"-","-J","") | |
690 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname).")") | |
691 call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname)) | |
692 if v:shell_error != 0 | |
693 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!" | echohl NONE | |
694 " call Decho("***error*** ".extractcmd." ".tarbase.".tar.xz ".fname.": failed!") | |
695 else | |
696 echo "***note*** successfully extracted ".fname | |
697 endif | |
23047 | 698 |
699 elseif filereadable(tarbase.".tzs") | |
700 let extractcmd= substitute(extractcmd,"-","--zstd","") | |
701 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tzs ".shellescape(fname).")") | |
702 call system(extractcmd." ".shellescape(tarbase).".txz ".shellescape(fname)) | |
703 if v:shell_error != 0 | |
704 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!" | echohl NONE | |
705 " call Decho("***error*** ".extractcmd." ".tarbase.".tzs ".fname.": failed!") | |
706 else | |
707 echo "***note*** successfully extracted ".fname | |
708 endif | |
709 | |
710 elseif filereadable(tarbase.".tar.zst") | |
711 let extractcmd= substitute(extractcmd,"-","--zstd","") | |
712 " call Decho("system(".extractcmd." ".shellescape(tarbase).".tar.zst ".shellescape(fname).")") | |
713 call system(extractcmd." ".shellescape(tarbase).".tar.xz ".shellescape(fname)) | |
714 if v:shell_error != 0 | |
715 echohl Error | echo "***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!" | echohl NONE | |
716 " call Decho("***error*** ".extractcmd." ".tarbase.".tar.zst ".fname.": failed!") | |
717 else | |
718 echo "***note*** successfully extracted ".fname | |
719 endif | |
19099 | 720 endif |
721 | |
722 " restore option | |
723 let &report= repkeep | |
724 | |
725 " call Dret("tar#Extract") | |
726 endfun | |
727 | |
728 " --------------------------------------------------------------------- | |
2034 | 729 " s:Rmdir: {{{2 |
527 | 730 fun! s:Rmdir(fname) |
731 " call Dfunc("Rmdir(fname<".a:fname.">)") | |
732 if has("unix") | |
2034 | 733 call system("/bin/rm -rf -- ".shellescape(a:fname,0)) |
527 | 734 elseif has("win32") || has("win95") || has("win64") || has("win16") |
735 if &shell =~? "sh$" | |
2034 | 736 call system("/bin/rm -rf -- ".shellescape(a:fname,0)) |
527 | 737 else |
2034 | 738 call system("del /S ".shellescape(a:fname,0)) |
527 | 739 endif |
740 endif | |
741 " call Dret("Rmdir") | |
742 endfun | |
743 | |
1624 | 744 " --------------------------------------------------------------------- |
2034 | 745 " tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2 |
746 fun! tar#Vimuntar(...) | |
747 " call Dfunc("tar#Vimuntar() a:0=".a:0." a:1<".(exists("a:1")? a:1 : "-n/a-").">") | |
748 let tarball = expand("%") | |
749 " call Decho("tarball<".tarball.">") | |
750 let tarbase = substitute(tarball,'\..*$','','') | |
751 " call Decho("tarbase<".tarbase.">") | |
752 let tarhome = expand("%:p") | |
753 if has("win32") || has("win95") || has("win64") || has("win16") | |
754 let tarhome= substitute(tarhome,'\\','/','g') | |
755 endif | |
756 let tarhome= substitute(tarhome,'/[^/]*$','','') | |
757 " call Decho("tarhome<".tarhome.">") | |
758 let tartail = expand("%:t") | |
759 " call Decho("tartail<".tartail.">") | |
760 let curdir = getcwd() | |
761 " call Decho("curdir <".curdir.">") | |
762 " set up vimhome | |
763 if a:0 > 0 && a:1 != "" | |
764 let vimhome= a:1 | |
765 else | |
766 let vimhome= vimball#VimballHome() | |
767 endif | |
768 " call Decho("vimhome<".vimhome.">") | |
769 | |
770 " call Decho("curdir<".curdir."> vimhome<".vimhome.">") | |
771 if simplify(curdir) != simplify(vimhome) | |
772 " copy (possibly compressed) tarball to .vim/vimfiles | |
773 " call Decho(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) | |
774 call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome)) | |
775 " call Decho("exe cd ".fnameescape(vimhome)) | |
776 exe "cd ".fnameescape(vimhome) | |
777 endif | |
778 " call Decho("getcwd<".getcwd().">") | |
779 | |
780 " if necessary, decompress the tarball; then, extract it | |
781 if tartail =~ '\.tgz' | |
19099 | 782 if executable("gunzip") |
2034 | 783 silent exe "!gunzip ".shellescape(tartail) |
784 elseif executable("gzip") | |
785 silent exe "!gzip -d ".shellescape(tartail) | |
1668 | 786 else |
25773 | 787 echoerr "unable to decompress<".tartail."> on this system" |
2034 | 788 if simplify(curdir) != simplify(tarhome) |
789 " remove decompressed tarball, restore directory | |
790 " call Decho("delete(".tartail.".tar)") | |
791 call delete(tartail.".tar") | |
792 " call Decho("exe cd ".fnameescape(curdir)) | |
793 exe "cd ".fnameescape(curdir) | |
794 endif | |
795 " call Dret("tar#Vimuntar") | |
796 return | |
1668 | 797 endif |
1624 | 798 else |
2034 | 799 call vimball#Decompress(tartail,0) |
1624 | 800 endif |
2034 | 801 let extractcmd= netrw#WinPath(g:tar_extractcmd) |
802 " call Decho("system(".extractcmd." ".shellescape(tarbase.".tar").")") | |
803 call system(extractcmd." ".shellescape(tarbase.".tar")) | |
804 | |
805 " set up help | |
806 if filereadable("doc/".tarbase.".txt") | |
807 " call Decho("exe helptags ".getcwd()."/doc") | |
808 exe "helptags ".getcwd()."/doc" | |
809 endif | |
810 | |
811 if simplify(tarhome) != simplify(vimhome) | |
812 " remove decompressed tarball, restore directory | |
813 call delete(vimhome."/".tarbase.".tar") | |
814 exe "cd ".fnameescape(curdir) | |
815 endif | |
816 | |
817 " call Dret("tar#Vimuntar") | |
1624 | 818 endfun |
819 | |
2034 | 820 " ===================================================================== |
557 | 821 " Modelines And Restoration: {{{1 |
822 let &cpo= s:keepcpo | |
823 unlet s:keepcpo | |
1624 | 824 " vim:ts=8 fdm=marker |