blob: ad5cce2ed3a26ddbab5d2a5176d0e41e2dec0ab3 [file] [log] [blame]
Bram Moolenaar60a795a2005-09-16 21:55:43 +00001" zip.vim: Handles browsing zipfiles
2" AUTOLOAD PORTION
Bram Moolenaar6be7f872012-01-20 21:08:56 +01003" Date: Jan 17, 2012
4" Version: 25
Bram Moolenaar9964e462007-05-05 17:54:07 +00005" Maintainer: Charles E Campbell, Jr <NdrOchip@ScampbellPfamily.AbizM-NOSPAM>
6" License: Vim License (see vim's :help license)
Bram Moolenaar6be7f872012-01-20 21:08:56 +01007" Copyright: Copyright (C) 2005-2012 Charles E. Campbell, Jr. {{{1
Bram Moolenaar60a795a2005-09-16 21:55:43 +00008" Permission is hereby granted to use and distribute this code,
9" with or without modifications, provided that this copyright
10" notice is copied with it. Like anything else that's free,
Bram Moolenaar446cb832008-06-24 21:56:24 +000011" zip.vim and zipPlugin.vim are provided *as is* and comes with
12" no warranty of any kind, either expressed or implied. By using
13" this plugin, you agree that in no event will the copyright
Bram Moolenaar60a795a2005-09-16 21:55:43 +000014" holder be liable for any damages resulting from the use
15" of this software.
16
17" ---------------------------------------------------------------------
Bram Moolenaar9964e462007-05-05 17:54:07 +000018" Load Once: {{{1
Bram Moolenaar00a927d2010-05-14 23:24:24 +020019if &cp || exists("g:loaded_zip")
Bram Moolenaar60a795a2005-09-16 21:55:43 +000020 finish
21endif
Bram Moolenaar6be7f872012-01-20 21:08:56 +010022let g:loaded_zip= "v25"
Bram Moolenaar00a927d2010-05-14 23:24:24 +020023if v:version < 702
24 echohl WarningMsg
25 echo "***warning*** this version of zip needs vim 7.2"
26 echohl Normal
27 finish
28endif
29let s:keepcpo= &cpo
30set cpo&vim
Bram Moolenaar60a795a2005-09-16 21:55:43 +000031
Bram Moolenaardb552d602006-03-23 22:59:57 +000032let s:zipfile_escape = ' ?&;\'
Bram Moolenaar9964e462007-05-05 17:54:07 +000033let s:ERROR = 2
34let s:WARNING = 1
35let s:NOTE = 0
36
37" ---------------------------------------------------------------------
38" Global Values: {{{1
39if !exists("g:zip_shq")
Bram Moolenaar446cb832008-06-24 21:56:24 +000040 if &shq != ""
41 let g:zip_shq= &shq
42 elseif has("unix")
Bram Moolenaar9964e462007-05-05 17:54:07 +000043 let g:zip_shq= "'"
44 else
45 let g:zip_shq= '"'
46 endif
47endif
Bram Moolenaarccc18222007-05-10 18:25:20 +000048if !exists("g:zip_zipcmd")
49 let g:zip_zipcmd= "zip"
50endif
51if !exists("g:zip_unzipcmd")
52 let g:zip_unzipcmd= "unzip"
53endif
Bram Moolenaar60a795a2005-09-16 21:55:43 +000054
55" ----------------
56" Functions: {{{1
57" ----------------
58
59" ---------------------------------------------------------------------
60" zip#Browse: {{{2
61fun! zip#Browse(zipfile)
62" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
Bram Moolenaar36c31f72005-11-28 23:01:53 +000063 let repkeep= &report
64 set report=10
Bram Moolenaar60a795a2005-09-16 21:55:43 +000065
66 " sanity checks
Bram Moolenaare37d50a2008-08-06 17:06:04 +000067 if !exists("*fnameescape")
68 if &verbose > 1
69 echoerr "the zip plugin is not available (your vim doens't support fnameescape())"
70 endif
71 return
72 endif
Bram Moolenaarccc18222007-05-10 18:25:20 +000073 if !executable(g:zip_unzipcmd)
Bram Moolenaar9964e462007-05-05 17:54:07 +000074 redraw!
Bram Moolenaar60a795a2005-09-16 21:55:43 +000075 echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
Bram Moolenaar9964e462007-05-05 17:54:07 +000076" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaar36c31f72005-11-28 23:01:53 +000077 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +000078" call Dret("zip#Browse")
79 return
80 endif
81 if !filereadable(a:zipfile)
Bram Moolenaara5792f52005-11-23 21:25:05 +000082 if a:zipfile !~# '^\a\+://'
83 " if its an url, don't complain, let url-handlers such as vim do its thing
Bram Moolenaar9964e462007-05-05 17:54:07 +000084 redraw!
Bram Moolenaara5792f52005-11-23 21:25:05 +000085 echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +000086" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaara5792f52005-11-23 21:25:05 +000087 endif
Bram Moolenaar36c31f72005-11-28 23:01:53 +000088 let &report= repkeep
Bram Moolenaara5792f52005-11-23 21:25:05 +000089" call Dret("zip#Browse : file<".a:zipfile."> not readable")
Bram Moolenaar60a795a2005-09-16 21:55:43 +000090 return
91 endif
Bram Moolenaardb552d602006-03-23 22:59:57 +000092" call Decho("passed sanity checks")
Bram Moolenaar60a795a2005-09-16 21:55:43 +000093 if &ma != 1
94 set ma
95 endif
Bram Moolenaarccc18222007-05-10 18:25:20 +000096 let b:zipfile= a:zipfile
Bram Moolenaar60a795a2005-09-16 21:55:43 +000097
98 setlocal noswapfile
99 setlocal buftype=nofile
100 setlocal bufhidden=hide
101 setlocal nobuflisted
102 setlocal nowrap
103 set ft=tar
104
105 " give header
Bram Moolenaar251e1912011-06-19 05:09:16 +0200106 call append(0, ['" zip.vim version '.g:loaded_zip,
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100107 \ '" Browsing zipfile '.a:zipfile,
108 \ '" Select a file with cursor and press ENTER'])
Bram Moolenaar251e1912011-06-19 05:09:16 +0200109 keepj $
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000110
Bram Moolenaare37d50a2008-08-06 17:06:04 +0000111" call Decho("exe silent r! ".g:zip_unzipcmd." -l -- ".s:Escape(a:zipfile,1))
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100112 exe "keepj sil! r! ".g:zip_unzipcmd." -Z -1 -- ".s:Escape(a:zipfile,1)
Bram Moolenaard68071d2006-05-02 22:08:30 +0000113 if v:shell_error != 0
Bram Moolenaar9964e462007-05-05 17:54:07 +0000114 redraw!
Bram Moolenaarc236c162008-07-13 17:41:49 +0000115 echohl WarningMsg | echo "***warning*** (zip#Browse) ".fnameescape(a:zipfile)." is not a zip file" | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +0000116" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaar251e1912011-06-19 05:09:16 +0200117 keepj sil! %d
Bram Moolenaard68071d2006-05-02 22:08:30 +0000118 let eikeep= &ei
119 set ei=BufReadCmd,FileReadCmd
Bram Moolenaar251e1912011-06-19 05:09:16 +0200120 exe "keepj r ".fnameescape(a:zipfile)
Bram Moolenaard68071d2006-05-02 22:08:30 +0000121 let &ei= eikeep
Bram Moolenaar251e1912011-06-19 05:09:16 +0200122 keepj 1d
Bram Moolenaard68071d2006-05-02 22:08:30 +0000123" call Dret("zip#Browse")
124 return
125 endif
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000126
127 setlocal noma nomod ro
128 noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
129
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000130 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000131" call Dret("zip#Browse")
132endfun
133
134" ---------------------------------------------------------------------
135" ZipBrowseSelect: {{{2
136fun! s:ZipBrowseSelect()
Bram Moolenaarccc18222007-05-10 18:25:20 +0000137" call Dfunc("ZipBrowseSelect() zipfile<".b:zipfile."> curfile<".expand("%").">")
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000138 let repkeep= &report
139 set report=10
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000140 let fname= getline(".")
141
142 " sanity check
143 if fname =~ '^"'
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000144 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000145" call Dret("ZipBrowseSelect")
146 return
147 endif
148 if fname =~ '/$'
Bram Moolenaar9964e462007-05-05 17:54:07 +0000149 redraw!
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000150 echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +0000151" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000152 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000153" call Dret("ZipBrowseSelect")
154 return
155 endif
156
157" call Decho("fname<".fname.">")
158
159 " get zipfile to the new-window
Bram Moolenaarccc18222007-05-10 18:25:20 +0000160 let zipfile = b:zipfile
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000161 let curfile= expand("%")
Bram Moolenaardb552d602006-03-23 22:59:57 +0000162" call Decho("zipfile<".zipfile.">")
163" call Decho("curfile<".curfile.">")
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000164
165 new
Bram Moolenaar446cb832008-06-24 21:56:24 +0000166 if !exists("g:zip_nomax") || g:zip_nomax == 0
167 wincmd _
168 endif
Bram Moolenaara5792f52005-11-23 21:25:05 +0000169 let s:zipfile_{winnr()}= curfile
Bram Moolenaarc236c162008-07-13 17:41:49 +0000170" call Decho("exe e ".fnameescape("zipfile:".zipfile.'::'.fname))
171 exe "e ".fnameescape("zipfile:".zipfile.'::'.fname)
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000172 filetype detect
173
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000174 let &report= repkeep
Bram Moolenaara5792f52005-11-23 21:25:05 +0000175" call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000176endfun
177
178" ---------------------------------------------------------------------
179" zip#Read: {{{2
180fun! zip#Read(fname,mode)
181" call Dfunc("zip#Read(fname<".a:fname.">,mode=".a:mode.")")
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000182 let repkeep= &report
183 set report=10
184
Bram Moolenaard68071d2006-05-02 22:08:30 +0000185 if has("unix")
186 let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
187 let fname = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
188 else
189 let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
190 let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
Bram Moolenaar9964e462007-05-05 17:54:07 +0000191 let fname = substitute(fname, '[', '[[]', 'g')
Bram Moolenaard68071d2006-05-02 22:08:30 +0000192 endif
193" call Decho("zipfile<".zipfile.">")
194" call Decho("fname <".fname.">")
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000195
Bram Moolenaar251e1912011-06-19 05:09:16 +0200196" call Decho("exe r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1))
197 exe "keepj sil! r! ".g:zip_unzipcmd." -p -- ".s:Escape(zipfile,1)." ".s:Escape(fnameescape(fname),1)
198 filetype detect
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000199
200 " cleanup
Bram Moolenaar251e1912011-06-19 05:09:16 +0200201 keepj 0d
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000202 set nomod
203
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000204 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000205" call Dret("zip#Read")
206endfun
207
208" ---------------------------------------------------------------------
209" zip#Write: {{{2
210fun! zip#Write(fname)
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000211" call Dfunc("zip#Write(fname<".a:fname.">) zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000212 let repkeep= &report
213 set report=10
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000214
215 " sanity checks
Bram Moolenaarccc18222007-05-10 18:25:20 +0000216 if !executable(g:zip_zipcmd)
Bram Moolenaar9964e462007-05-05 17:54:07 +0000217 redraw!
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000218 echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +0000219" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000220 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000221" call Dret("zip#Write")
222 return
223 endif
224 if !exists("*mkdir")
Bram Moolenaar9964e462007-05-05 17:54:07 +0000225 redraw!
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000226 echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +0000227" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000228 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000229" call Dret("zip#Write")
230 return
231 endif
232
233 let curdir= getcwd()
234 let tmpdir= tempname()
235" call Decho("orig tempname<".tmpdir.">")
236 if tmpdir =~ '\.'
237 let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
238 endif
239" call Decho("tmpdir<".tmpdir.">")
240 call mkdir(tmpdir,"p")
241
242 " attempt to change to the indicated directory
Bram Moolenaar9964e462007-05-05 17:54:07 +0000243 if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory")
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000244 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000245" call Dret("zip#Write")
246 return
Bram Moolenaar9964e462007-05-05 17:54:07 +0000247 endif
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000248" call Decho("current directory now: ".getcwd())
249
250 " place temporary files under .../_ZIPVIM_/
251 if isdirectory("_ZIPVIM_")
252 call s:Rmdir("_ZIPVIM_")
253 endif
254 call mkdir("_ZIPVIM_")
255 cd _ZIPVIM_
256" call Decho("current directory now: ".getcwd())
257
Bram Moolenaard68071d2006-05-02 22:08:30 +0000258 if has("unix")
259 let zipfile = substitute(a:fname,'zipfile:\(.\{-}\)::[^\\].*$','\1','')
260 let fname = substitute(a:fname,'zipfile:.\{-}::\([^\\].*\)$','\1','')
261 else
262 let zipfile = substitute(a:fname,'^.\{-}zipfile:\(.\{-}\)::[^\\].*$','\1','')
263 let fname = substitute(a:fname,'^.\{-}zipfile:.\{-}::\([^\\].*\)$','\1','')
264 endif
265" call Decho("zipfile<".zipfile.">")
266" call Decho("fname <".fname.">")
Bram Moolenaarc7486e02005-12-29 22:48:26 +0000267
268 if fname =~ '/'
269 let dirpath = substitute(fname,'/[^/]\+$','','e')
270 if executable("cygpath")
Bram Moolenaarc236c162008-07-13 17:41:49 +0000271 let dirpath = substitute(system("cygpath ".s:Escape(dirpath,0)),'\n','','e')
Bram Moolenaarc7486e02005-12-29 22:48:26 +0000272 endif
Bram Moolenaar910f66f2006-04-05 20:41:53 +0000273" call Decho("mkdir(dirpath<".dirpath.">,p)")
Bram Moolenaarc7486e02005-12-29 22:48:26 +0000274 call mkdir(dirpath,"p")
275 endif
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000276 if zipfile !~ '/'
277 let zipfile= curdir.'/'.zipfile
278 endif
279" call Decho("zipfile<".zipfile."> fname<".fname.">")
280
Bram Moolenaarc236c162008-07-13 17:41:49 +0000281 exe "w! ".fnameescape(fname)
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000282 if executable("cygpath")
Bram Moolenaarc236c162008-07-13 17:41:49 +0000283 let zipfile = substitute(system("cygpath ".s:Escape(zipfile,0)),'\n','','e')
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000284 endif
285
Bram Moolenaar9964e462007-05-05 17:54:07 +0000286 if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
287 let fname = substitute(fname, '[', '[[]', 'g')
288 endif
289
Bram Moolenaare37d50a2008-08-06 17:06:04 +0000290" call Decho(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
291 call system(g:zip_zipcmd." -u ".s:Escape(fnamemodify(zipfile,":p"),0)." ".s:Escape(fname,0))
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000292 if v:shell_error != 0
Bram Moolenaar9964e462007-05-05 17:54:07 +0000293 redraw!
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000294 echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
Bram Moolenaar9964e462007-05-05 17:54:07 +0000295" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
Bram Moolenaara5792f52005-11-23 21:25:05 +0000296
297 elseif s:zipfile_{winnr()} =~ '^\a\+://'
298 " support writing zipfiles across a network
299 let netzipfile= s:zipfile_{winnr()}
Bram Moolenaar9964e462007-05-05 17:54:07 +0000300" call Decho("handle writing <".zipfile."> across network as <".netzipfile.">")
Bram Moolenaara5792f52005-11-23 21:25:05 +0000301 1split|enew
302 let binkeep= &binary
303 let eikeep = &ei
304 set binary ei=all
Bram Moolenaarc236c162008-07-13 17:41:49 +0000305 exe "e! ".fnameescape(zipfile)
Bram Moolenaara5792f52005-11-23 21:25:05 +0000306 call netrw#NetWrite(netzipfile)
307 let &ei = eikeep
308 let &binary = binkeep
309 q!
310 unlet s:zipfile_{winnr()}
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000311 endif
312
313 " cleanup and restore current directory
314 cd ..
315 call s:Rmdir("_ZIPVIM_")
Bram Moolenaar9964e462007-05-05 17:54:07 +0000316 call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!")
317 call s:Rmdir(tmpdir)
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000318 setlocal nomod
319
Bram Moolenaar36c31f72005-11-28 23:01:53 +0000320 let &report= repkeep
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000321" call Dret("zip#Write")
322endfun
323
324" ---------------------------------------------------------------------
Bram Moolenaarc236c162008-07-13 17:41:49 +0000325" s:Escape: {{{2
326fun! s:Escape(fname,isfilt)
327" call Dfunc("QuoteFileDir(fname<".a:fname."> isfilt=".a:isfilt.")")
328 if exists("*shellescape")
329 if a:isfilt
330 let qnameq= shellescape(a:fname,1)
331 else
332 let qnameq= shellescape(a:fname)
333 endif
Bram Moolenaar446cb832008-06-24 21:56:24 +0000334 else
335 let qnameq= g:zip_shq.escape(a:fname,g:zip_shq).g:zip_shq
336 endif
337" call Dret("QuoteFileDir <".qnameq.">")
338 return qnameq
Bram Moolenaar9964e462007-05-05 17:54:07 +0000339endfun
340
341" ---------------------------------------------------------------------
342" ChgDir: {{{2
343fun! s:ChgDir(newdir,errlvl,errmsg)
344" call Dfunc("ChgDir(newdir<".a:newdir."> errlvl=".a:errlvl." errmsg<".a:errmsg.">)")
345
Bram Moolenaar9964e462007-05-05 17:54:07 +0000346 try
Bram Moolenaare37d50a2008-08-06 17:06:04 +0000347 exe "cd ".fnameescape(a:newdir)
Bram Moolenaar9964e462007-05-05 17:54:07 +0000348 catch /^Vim\%((\a\+)\)\=:E344/
349 redraw!
350 if a:errlvl == s:NOTE
351 echo "***note*** ".a:errmsg
352 elseif a:errlvl == s:WARNING
353 echohl WarningMsg | echo "***warning*** ".a:errmsg | echohl NONE
354 elseif a:errlvl == s:ERROR
355 echohl Error | echo "***error*** ".a:errmsg | echohl NONE
356 endif
357" call inputsave()|call input("Press <cr> to continue")|call inputrestore()
358" call Dret("ChgDir 1")
359 return 1
360 endtry
361
362" call Dret("ChgDir 0")
363 return 0
364endfun
365
366" ---------------------------------------------------------------------
Bram Moolenaarc236c162008-07-13 17:41:49 +0000367" s:Rmdir: {{{2
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000368fun! s:Rmdir(fname)
369" call Dfunc("Rmdir(fname<".a:fname.">)")
Bram Moolenaar9964e462007-05-05 17:54:07 +0000370 if (has("win32") || has("win95") || has("win64") || has("win16")) && &shell !~? 'sh$'
Bram Moolenaarc236c162008-07-13 17:41:49 +0000371 call system("rmdir /S/Q ".s:Escape(a:fname,0))
Bram Moolenaar9964e462007-05-05 17:54:07 +0000372 else
Bram Moolenaarc236c162008-07-13 17:41:49 +0000373 call system("/bin/rm -rf ".s:Escape(a:fname,0))
Bram Moolenaar60a795a2005-09-16 21:55:43 +0000374 endif
375" call Dret("Rmdir")
376endfun
377
378" ------------------------------------------------------------------------
379" Modelines And Restoration: {{{1
380let &cpo= s:keepcpo
381unlet s:keepcpo
Bram Moolenaarccc18222007-05-10 18:25:20 +0000382" vim:ts=8 fdm=marker