annotate runtime/autoload/tar.vim @ 819:23f82b5d2814 v7.0c10

updated for version 7.0c10
author vimboss
date Wed, 05 Apr 2006 20:41:53 +0000
parents 91e7d4a7b3b0
children b933657f7c9d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
1 " tar.vim: Handles browsing tarfiles
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
2 " AUTOLOAD PORTION
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
3 " Date: Mar 27, 2006
624
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
4 " Version: 7
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
5 " Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
6 " License: Vim License (see vim's :help license)
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
7 "
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
8 " Contains many ideas from Michael Toren's <tar.vim>
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
9 "
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
10 " Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
11 " Permission is hereby granted to use and distribute this code,
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
12 " with or without modifications, provided that this copyright
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
13 " notice is copied with it. Like anything else that's free,
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
14 " tarPlugin.vim is provided *as is* and comes with no warranty
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
15 " of any kind, either expressed or implied. By using this
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
16 " plugin, you agree that in no event will the copyright
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
17 " holder be liable for any damages resulting from the use
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
18 " of this software.
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
19
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
20 " ---------------------------------------------------------------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
21 " Initialization: {{{1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
22 let s:keepcpo= &cpo
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
23 set cpo&vim
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
24 if exists("g:loaded_tar")
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
25 finish
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
26 endif
624
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
27 let g:loaded_tar= "v7"
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
28 "call Decho("loading autoload/tar.vim")
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
29
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
30 " ---------------------------------------------------------------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
31 " Default Settings: {{{1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
32 if !exists("g:tar_browseoptions")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
33 let g:tar_browseoptions= "Ptf"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
34 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
35 if !exists("g:tar_readoptions")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
36 let g:tar_readoptions= "OPxf"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
37 endif
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
38 if !exists("g:tar_cmd")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
39 let g:tar_cmd= "tar"
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
40 endif
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
41 if !exists("g:tar_writeoptions")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
42 let g:tar_writeoptions= "uf"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
43 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
44
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
45 " ----------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
46 " Functions: {{{1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
47 " ----------------
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
48
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
49 " ---------------------------------------------------------------------
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
50 " tar#Browse: {{{2
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
51 fun! tar#Browse(tarfile)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
52 " call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
53 let repkeep= &report
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
54 set report=10
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
55
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
56 " sanity checks
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
57 if !executable(g:tar_cmd)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
58 echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
59 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
60 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
61 " call Dret("tar#Browse")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
62 return
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
63 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
64 if !filereadable(a:tarfile)
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
65 " call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
66 if a:tarfile !~# '^\a\+://'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
67 " if its an url, don't complain, let url-handlers such as vim do its thing
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
68 echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
69 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
70 endif
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
71 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
72 " call Dret("tar#Browse : file<".a:tarfile."> not readable")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
73 return
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
74 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
75 if &ma != 1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
76 set ma
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
77 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
78 let w:tarfile= a:tarfile
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
79
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
80 setlocal noswapfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
81 setlocal buftype=nofile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
82 setlocal bufhidden=hide
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
83 setlocal nobuflisted
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
84 setlocal nowrap
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
85 set ft=tar
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
86
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
87 " give header
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
88 " call Decho("printing header")
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
89 exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
90 exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
91 exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
92 0d
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
93 $
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
94
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
95 let tarfile= a:tarfile
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
96 if has("win32") && executable("cygpath")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
97 " assuming cygwin
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
98 let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
99 endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
100 if tarfile =~# '\.\(gz\|tgz\)$'
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
101 " call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
102 exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
103 elseif tarfile =~# '\.bz2$'
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
104 " call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
105 exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
106 else
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
107 " call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
108 exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'"
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
109 endif
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
110 if v:shell_error != 0
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
111 echohl Error | echo '***error*** (tar#Browse) while browsing; check your g:tar_browseoptions<".g:tar_browseoptions.">"
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
112 " call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
113 return
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
114 endif
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
115
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
116 setlocal noma nomod ro
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
117 noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
118
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
119 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
120 " call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
121 endfun
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
122
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
123 " ---------------------------------------------------------------------
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
124 " TarBrowseSelect: {{{2
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
125 fun! s:TarBrowseSelect()
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
126 " call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
127 let repkeep= &report
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
128 set report=10
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
129 let fname= getline(".")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
130 " call Decho("fname<".fname.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
131
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
132 " sanity check
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
133 if fname =~ '^"'
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
134 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
135 " call Dret("TarBrowseSelect")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
136 return
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
137 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
138
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
139 " about to make a new window, need to use w:tarfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
140 let tarfile= w:tarfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
141 let curfile= expand("%")
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
142 if has("win32") && executable("cygpath")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
143 " assuming cygwin
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
144 let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
145 endif
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
146
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
147 new
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
148 wincmd _
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
149 let s:tblfile_{winnr()}= curfile
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
150 " if has("unix")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
151 "" call Decho("exe e tarfile:".tarfile.':'.fname)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
152 " exe "e tarfile:".tarfile.':'.fname
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
153 " elseif has("win32")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
154 " call tar#Read("tarfile:".tarfile.':'.fname,1)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
155 " endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
156 call tar#Read("tarfile:".tarfile.':'.fname,1)
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
157 filetype detect
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
158
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
159 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
160 " call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
161 endfun
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
162
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
163 " ---------------------------------------------------------------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
164 " tar#Read: {{{2
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
165 fun! tar#Read(fname,mode)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
166 " call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
167 let repkeep= &report
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
168 set report=10
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
169 let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
170 let fname = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
171 if has("win32") && executable("cygpath")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
172 " assuming cygwin
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
173 let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
174 endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
175 " call Decho("tarfile<".tarfile.">")
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
176 " call Decho("fname<".fname.">")
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
177
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
178 if tarfile =~# '\.\(gz\|tgz\)$'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
179 " call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
180 exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
624
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
181 elseif tarfile =~# '\.bz2$'
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
182 " call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
183 exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
184 else
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
185 " call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
186 exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'"
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
187 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
188 let w:tarfile= a:fname
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
189 exe "file tarfile:".fname
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
190
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
191 " cleanup
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
192 0d
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
193 set nomod
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
194
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
195 let &report= repkeep
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
196 " call Dret("tar#Read : w:tarfile<".w:tarfile.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
197 endfun
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
198
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
199 " ---------------------------------------------------------------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
200 " tar#Write: {{{2
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
201 fun! tar#Write(fname)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
202 " call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
203 let repkeep= &report
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
204 set report=10
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
205
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
206 " sanity checks
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
207 if !executable(g:tar_cmd)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 624
diff changeset
208 echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
209 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
210 let &report= repkeep
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
211 " call Dret("tar#Write")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
212 return
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
213 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
214 if !exists("*mkdir")
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
215 echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
216 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
217 let &report= repkeep
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
218 " call Dret("tar#Write")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
219 return
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
220 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
221
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
222 let curdir= getcwd()
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
223 let tmpdir= tempname()
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
224 " call Decho("orig tempname<".tmpdir.">")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
225 if tmpdir =~ '\.'
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
226 let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
227 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
228 " call Decho("tmpdir<".tmpdir.">")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
229 call mkdir(tmpdir,"p")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
230
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
231 " attempt to change to the indicated directory
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
232 try
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
233 exe "cd ".escape(tmpdir,' \')
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
234 catch /^Vim\%((\a\+)\)\=:E344/
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
235 echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
236 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
237 let &report= repkeep
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
238 " call Dret("tar#Write")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
239 return
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
240 endtry
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
241 " call Decho("current directory now: ".getcwd())
446
7472c565592a updated for version 7.0117
vimboss
parents:
diff changeset
242
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
243 " place temporary files under .../_ZIPVIM_/
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
244 if isdirectory("_ZIPVIM_")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
245 call s:Rmdir("_ZIPVIM_")
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
246 endif
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
247 call mkdir("_ZIPVIM_")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
248 cd _ZIPVIM_
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
249 " call Decho("current directory now: ".getcwd())
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
250
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
251 let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
252 let fname = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
253
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
254 " handle compressed archives
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
255 if tarfile =~# '\.gz'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
256 call system("gzip -d ".tarfile)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
257 let tarfile = substitute(tarfile,'\.gz','','e')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
258 let compress= "gzip '".tarfile."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
259 elseif tarfile =~# '\.tgz'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
260 call system("gzip -d ".tarfile)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
261 let tarfile = substitute(tarfile,'\.tgz','.tar','e')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
262 let compress= "gzip '".tarfile."'"
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
263 let tgz = 1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
264 elseif tarfile =~# '\.bz2'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
265 call system("bzip2 -d ".tarfile)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
266 let tarfile = substitute(tarfile,'\.bz2','','e')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
267 let compress= "bzip2 '".tarfile."'"
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
268 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
269
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
270 if v:shell_error != 0
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
271 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
272 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
273 else
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
274
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
275 " call Decho("tarfile<".tarfile."> fname<".fname.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
276
624
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
277 if fname =~ '/'
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
278 let dirpath = substitute(fname,'/[^/]\+$','','e')
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
279 if executable("cygpath")
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
280 let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
281 endif
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
282 call mkdir(dirpath,"p")
91e7d4a7b3b0 updated for version 7.0178
vimboss
parents: 569
diff changeset
283 endif
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
284 if tarfile !~ '/'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
285 let tarfile= curdir.'/'.tarfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
286 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
287 " call Decho("tarfile<".tarfile."> fname<".fname.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
288
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
289 exe "w! ".fname
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
290 if executable("cygpath")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
291 let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
292 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
293
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
294 " delete old file from tarfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
295 " call Decho("tar --delete -f '".tarfile."' '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
296 call system("tar --delete -f '".tarfile."' '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
297 if v:shell_error != 0
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
298 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
299 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
300 else
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
301
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
302 " update tarfile with new file
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
303 " call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
304 call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
305 if v:shell_error != 0
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
306 echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
307 call inputsave()|call input("Press <cr> to continue")|call inputrestore()
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
308 elseif exists("compress")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
309 " call Decho("call system(".compress.")")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
310 call system(compress)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
311 if exists("tgz")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
312 " call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
313 call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
314 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
315 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
316 endif
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
317
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
318 " support writing tarfiles across a network
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
319 if s:tblfile_{winnr()} =~ '^\a\+://'
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
320 " call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
321 let tblfile= s:tblfile_{winnr()}
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
322 1split|enew
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
323 let binkeep= &binary
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
324 let eikeep = &ei
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
325 set binary ei=all
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
326 exe "e! ".tarfile
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
327 call netrw#NetWrite(tblfile)
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
328 let &ei = eikeep
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
329 let &binary = binkeep
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
330 q!
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
331 unlet s:tblfile_{winnr()}
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
332 endif
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
333 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
334
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
335 " cleanup and restore current directory
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
336 cd ..
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
337 call s:Rmdir("_ZIPVIM_")
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
338 exe "cd ".escape(curdir,' \')
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
339 setlocal nomod
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
340
569
bdbdec22a225 updated for version 7.0161
vimboss
parents: 557
diff changeset
341 let &report= repkeep
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
342 " call Dret("tar#Write")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
343 endfun
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
344
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
345 " ---------------------------------------------------------------------
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
346 " Rmdir: {{{2
527
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
347 fun! s:Rmdir(fname)
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
348 " call Dfunc("Rmdir(fname<".a:fname.">)")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
349 if has("unix")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
350 call system("/bin/rm -rf ".a:fname)
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
351 elseif has("win32") || has("win95") || has("win64") || has("win16")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
352 if &shell =~? "sh$"
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
353 call system("/bin/rm -rf ".a:fname)
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
354 else
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
355 call system("del /S ".a:fname)
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
356 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
357 endif
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
358 " call Dret("Rmdir")
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
359 endfun
93a822c9e3d2 updated for version 7.0147
vimboss
parents: 446
diff changeset
360
557
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
361 " ------------------------------------------------------------------------
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
362 " Modelines And Restoration: {{{1
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
363 let &cpo= s:keepcpo
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
364 unlet s:keepcpo
862863033fdd updated for version 7.0158
vimboss
parents: 527
diff changeset
365 " vim:ts=8 fdm=marker