blob: 2aa1d9b83a91715481f70763b42e38dd9a6c2afd [file] [log] [blame]
Bram Moolenaar843ee412004-06-30 16:16:41 +00001" NetrwFileHandlers: contains various extension-based file handlers for
Bram Moolenaar269ec652004-07-29 08:43:53 +00002" netrw's browsers' x command ("eXecute launcher")
Bram Moolenaard314b252005-08-01 21:54:37 +00003" Author: Charles E. Campbell, Jr.
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +00004" Date: Aug 15, 2005
5" Version: 6
6" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
Bram Moolenaar8b59de92005-08-11 19:59:29 +00007" Permission is hereby granted to use and distribute this code,
8" with or without modifications, provided that this copyright
9" notice is copied with it. Like anything else that's free,
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +000010" NetrwFileHandlers.vim is provided *as is* and comes with no
Bram Moolenaar8b59de92005-08-11 19:59:29 +000011" warranty of any kind, either expressed or implied. In no
12" event will the copyright holder be liable for any damages
13" resulting from the use of this software.
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +000014"
15" Rom 6:23 (WEB) For the wages of sin is death, but the free gift of God {{{1
16" is eternal life in Christ Jesus our Lord.
Bram Moolenaar843ee412004-06-30 16:16:41 +000017
Bram Moolenaard4755bb2004-09-02 19:12:26 +000018" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +000019" Load Once: {{{1
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +000020if exists("g:loaded_NetrwFileHandlers") || &cp
Bram Moolenaard314b252005-08-01 21:54:37 +000021 finish
Bram Moolenaard4755bb2004-09-02 19:12:26 +000022endif
Bram Moolenaard314b252005-08-01 21:54:37 +000023let s:keepcpo= &cpo
24set cpo&vim
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +000025let g:loaded_NetrwFileHandlers= "v6"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000026
27" ---------------------------------------------------------------------
28" NetrwFileHandler_html: handles html when the user hits "x" when the {{{1
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000029" cursor is atop a *.html file
Bram Moolenaar8299df92004-07-10 09:47:34 +000030fun! NetrwFileHandler_html(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000031" call Dfunc("NetrwFileHandler_html(".a:pagefile.")")
32
33 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000034
35 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000036" call Decho("executing !mozilla ".page)
37 exe "!mozilla \"".page.'"'
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000038 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000039" call Decho("executing !netscape ".page)
40 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000041 else
Bram Moolenaard314b252005-08-01 21:54:37 +000042" call Dret("NetrwFileHandler_html 0")
43 return 0
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000044 endif
Bram Moolenaar843ee412004-06-30 16:16:41 +000045
Bram Moolenaard314b252005-08-01 21:54:37 +000046" call Dret("NetrwFileHandler_html 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000047 return 1
48endfun
49
50" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000051" NetrwFileHandler_htm: handles html when the user hits "x" when the {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000052" cursor is atop a *.htm file
53fun! NetrwFileHandler_htm(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000054" call Dfunc("NetrwFileHandler_htm(".a:pagefile.")")
55
56 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaar8299df92004-07-10 09:47:34 +000057
58 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000059" call Decho("executing !mozilla ".page)
60 exe "!mozilla \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000061 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000062" call Decho("executing !netscape ".page)
63 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000064 else
Bram Moolenaard314b252005-08-01 21:54:37 +000065" call Dret("NetrwFileHandler_htm 0")
66 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000067 endif
68
Bram Moolenaard314b252005-08-01 21:54:37 +000069" call Dret("NetrwFileHandler_htm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000070 return 1
71endfun
72
73" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000074" NetrwFileHandler_jpg: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000075fun! NetrwFileHandler_jpg(jpgfile)
Bram Moolenaard314b252005-08-01 21:54:37 +000076" call Dfunc("NetrwFileHandler_jpg(jpgfile<".a:jpgfile.">)")
77
Bram Moolenaar8299df92004-07-10 09:47:34 +000078 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000079 exe "silent! !gimp -s ".a:jpgfile
Bram Moolenaar8299df92004-07-10 09:47:34 +000080 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +000081" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
82 exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000083 else
Bram Moolenaard314b252005-08-01 21:54:37 +000084" call Dret("NetrwFileHandler_jpg 0")
85 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000086 endif
87
Bram Moolenaard314b252005-08-01 21:54:37 +000088" call Dret("NetrwFileHandler_jpg 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000089 return 1
90endfun
91
92" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000093" NetrwFileHandler_gif: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000094fun! NetrwFileHandler_gif(giffile)
Bram Moolenaard314b252005-08-01 21:54:37 +000095" call Dfunc("NetrwFileHandler_gif(giffile<".a:giffile.">)")
96
Bram Moolenaar8299df92004-07-10 09:47:34 +000097 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000098 exe "silent! !gimp -s ".a:giffile
99 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
100 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000101 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000102" call Dret("NetrwFileHandler_gif 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000103 return 0
104 endif
105
Bram Moolenaard314b252005-08-01 21:54:37 +0000106" call Dret("NetrwFileHandler_gif 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000107 return 1
108endfun
109
110" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000111" NetrwFileHandler_png: {{{1
112fun! NetrwFileHandler_png(pngfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000113" call Dfunc("NetrwFileHandler_png(pngfile<".a:pngfile.">)")
114
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000115 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000116 exe "silent! !gimp -s ".a:pngfile
117 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
118 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000119 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000120" call Dret("NetrwFileHandler_png 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000121 return 0
122 endif
123
Bram Moolenaard314b252005-08-01 21:54:37 +0000124" call Dret("NetrwFileHandler_png 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000125 return 1
126endfun
127
128" ---------------------------------------------------------------------
129" NetrwFileHandler_pnm: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000130fun! NetrwFileHandler_pnm(pnmfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000131" call Dfunc("NetrwFileHandler_pnm(pnmfile<".a:pnmfile.">)")
132
Bram Moolenaar8299df92004-07-10 09:47:34 +0000133 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000134 exe "silent! !gimp -s ".a:pnmfile
135 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
136 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000137 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000138" call Dret("NetrwFileHandler_pnm 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000139 return 0
140 endif
141
Bram Moolenaard314b252005-08-01 21:54:37 +0000142" call Dret("NetrwFileHandler_pnm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000143 return 1
144endfun
145
146" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000147" NetrwFileHandler_bmp: visualize bmp files {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000148fun! NetrwFileHandler_bmp(bmpfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000149" call Dfunc("NetrwFileHandler_bmp(bmpfile<".a:bmpfile.">)")
150
Bram Moolenaar8299df92004-07-10 09:47:34 +0000151 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000152 exe "silent! !gimp -s ".a:bmpfile
Bram Moolenaar8299df92004-07-10 09:47:34 +0000153 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +0000154 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000155 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000156" call Dret("NetrwFileHandler_bmp 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000157 return 0
158 endif
159
Bram Moolenaard314b252005-08-01 21:54:37 +0000160" call Dret("NetrwFileHandler_bmp 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000161 return 1
Bram Moolenaar843ee412004-06-30 16:16:41 +0000162endfun
163
164" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000165" NetrwFileHandler_pdf: visualize pdf files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000166fun! NetrwFileHandler_pdf(pdf)
Bram Moolenaard314b252005-08-01 21:54:37 +0000167" " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
168 if executable("gs")
169 exe 'silent! !gs "'.a:pdf.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000170 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000171" " call Dret("NetrwFileHandler_pdf 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000172 return 0
173 endif
174
Bram Moolenaard314b252005-08-01 21:54:37 +0000175" " call Dret("NetrwFileHandler_pdf 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000176 return 1
177endfun
178
179" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000180" NetrwFileHandler_doc: visualize doc files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000181fun! NetrwFileHandler_doc(doc)
Bram Moolenaard314b252005-08-01 21:54:37 +0000182" " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
183
Bram Moolenaar269ec652004-07-29 08:43:53 +0000184 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000185 exe 'silent! !oowriter "'.a:doc.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000186 redraw!
187 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000188" " call Dret("NetrwFileHandler_doc 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000189 return 0
190 endif
191
Bram Moolenaard314b252005-08-01 21:54:37 +0000192" " call Dret("NetrwFileHandler_doc 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000193 return 1
194endfun
195
196" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000197" NetrwFileHandler_sxw: visualize sxw files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000198fun! NetrwFileHandler_sxw(sxw)
Bram Moolenaard314b252005-08-01 21:54:37 +0000199" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
200
Bram Moolenaar269ec652004-07-29 08:43:53 +0000201 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000202 exe 'silent! !oowriter "'.a:sxw.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000203 redraw!
204 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000205" " call Dret("NetrwFileHandler_sxw 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000206 return 0
207 endif
208
Bram Moolenaard314b252005-08-01 21:54:37 +0000209" " call Dret("NetrwFileHandler_sxw 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000210 return 1
211endfun
212
213" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000214" NetrwFileHandler_xls: visualize xls files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000215fun! NetrwFileHandler_xls(xls)
Bram Moolenaard314b252005-08-01 21:54:37 +0000216" " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
217
Bram Moolenaar269ec652004-07-29 08:43:53 +0000218 if executable("oocalc")
Bram Moolenaard314b252005-08-01 21:54:37 +0000219 exe 'silent! !oocalc "'.a:xls.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000220 redraw!
221 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000222" " call Dret("NetrwFileHandler_xls 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000223 return 0
224 endif
225
Bram Moolenaard314b252005-08-01 21:54:37 +0000226" " call Dret("NetrwFileHandler_xls 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000227 return 1
228endfun
229
230" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000231" NetrwFileHandler_ps: handles PostScript files {{{1
232fun! NetrwFileHandler_ps(ps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000233" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000234 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000235 exe "silent! !gs ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000236 redraw!
237 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000238 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000239 redraw!
240 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000241 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000242 redraw!
243 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000244 exe "silent! !gswin32 \"".a:ps.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000245 redraw!
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000246 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000247" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000248 return 0
249 endif
250
Bram Moolenaard314b252005-08-01 21:54:37 +0000251" call Dret("NetrwFileHandler_ps 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000252 return 1
253endfun
254
255" ---------------------------------------------------------------------
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000256" NetrwFileHandler_eps: handles encapsulated PostScript files {{{1
257fun! NetrwFileHandler_eps(eps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000258" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000259 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000260 exe "silent! !gs ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000261 redraw!
262 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000263 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000264 redraw!
265 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000266 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000267 redraw!
268 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000269 exe "silent! !gswin32 \"".a:eps.'"'
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000270 redraw!
271 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000272" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000273 return 0
274 endif
275endfun
276
277" ---------------------------------------------------------------------
278" NetrwFileHandler_fig: handles xfig files {{{1
279fun! NetrwFileHandler_fig(fig)
Bram Moolenaard314b252005-08-01 21:54:37 +0000280" call Dfunc("NetrwFileHandler_fig()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000281 if executable("xfig")
Bram Moolenaard314b252005-08-01 21:54:37 +0000282 exe "silent! !xfig ".a:fig
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000283 redraw!
284 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000285" call Dret("NetrwFileHandler_fig 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000286 return 0
287 endif
288
Bram Moolenaard314b252005-08-01 21:54:37 +0000289" call Dret("NetrwFileHandler_fig 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000290 return 1
291endfun
292
293" ---------------------------------------------------------------------
294" NetrwFileHandler_obj: handles tgif's obj files {{{1
295fun! NetrwFileHandler_obj(obj)
Bram Moolenaard314b252005-08-01 21:54:37 +0000296" call Dfunc("NetrwFileHandler_obj()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000297 if has("unix") && executable("tgif")
Bram Moolenaard314b252005-08-01 21:54:37 +0000298 exe "silent! !tgif ".a:obj
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000299 redraw!
300 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000301" call Dret("NetrwFileHandler_obj 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000302 return 0
303 endif
304
Bram Moolenaard314b252005-08-01 21:54:37 +0000305" call Dret("NetrwFileHandler_obj 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000306 return 1
307endfun
308
Bram Moolenaard314b252005-08-01 21:54:37 +0000309let &cpo= s:keepcpo
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000310" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +0000311" Modelines: {{{1
312" vim: ts=4 fdm=marker