blob: 9b9cd2060a65db59388a870ae4fb3b33407218ef [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 Moolenaar8b59de92005-08-11 19:59:29 +00004" Date: Aug 08, 2005
5" Version: 5a NOT RELEASED
6" Copyright: Copyright (C) 1999-2005 Charles E. Campbell, Jr.
7" 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,
10" netrw.vim is provided *as is* and comes with no
11" 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 Moolenaar843ee412004-06-30 16:16:41 +000014
Bram Moolenaard4755bb2004-09-02 19:12:26 +000015" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +000016" Load Once: {{{1
Bram Moolenaard4755bb2004-09-02 19:12:26 +000017if exists("g:loaded_netrwfilehandlers") || &cp
Bram Moolenaard314b252005-08-01 21:54:37 +000018 finish
Bram Moolenaard4755bb2004-09-02 19:12:26 +000019endif
Bram Moolenaard314b252005-08-01 21:54:37 +000020let s:keepcpo= &cpo
21set cpo&vim
Bram Moolenaar8b59de92005-08-11 19:59:29 +000022let g:loaded_netrwfilehandlers= "v5a"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000023
24" ---------------------------------------------------------------------
25" NetrwFileHandler_html: handles html when the user hits "x" when the {{{1
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000026" cursor is atop a *.html file
Bram Moolenaar8299df92004-07-10 09:47:34 +000027fun! NetrwFileHandler_html(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000028" call Dfunc("NetrwFileHandler_html(".a:pagefile.")")
29
30 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000031
32 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000033" call Decho("executing !mozilla ".page)
34 exe "!mozilla \"".page.'"'
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000035 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000036" call Decho("executing !netscape ".page)
37 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000038 else
Bram Moolenaard314b252005-08-01 21:54:37 +000039" call Dret("NetrwFileHandler_html 0")
40 return 0
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000041 endif
Bram Moolenaar843ee412004-06-30 16:16:41 +000042
Bram Moolenaard314b252005-08-01 21:54:37 +000043" call Dret("NetrwFileHandler_html 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000044 return 1
45endfun
46
47" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000048" NetrwFileHandler_htm: handles html when the user hits "x" when the {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000049" cursor is atop a *.htm file
50fun! NetrwFileHandler_htm(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000051" call Dfunc("NetrwFileHandler_htm(".a:pagefile.")")
52
53 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaar8299df92004-07-10 09:47:34 +000054
55 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000056" call Decho("executing !mozilla ".page)
57 exe "!mozilla \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000058 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000059" call Decho("executing !netscape ".page)
60 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000061 else
Bram Moolenaard314b252005-08-01 21:54:37 +000062" call Dret("NetrwFileHandler_htm 0")
63 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000064 endif
65
Bram Moolenaard314b252005-08-01 21:54:37 +000066" call Dret("NetrwFileHandler_htm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000067 return 1
68endfun
69
70" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000071" NetrwFileHandler_jpg: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000072fun! NetrwFileHandler_jpg(jpgfile)
Bram Moolenaard314b252005-08-01 21:54:37 +000073" call Dfunc("NetrwFileHandler_jpg(jpgfile<".a:jpgfile.">)")
74
Bram Moolenaar8299df92004-07-10 09:47:34 +000075 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000076 exe "silent! !gimp -s ".a:jpgfile
Bram Moolenaar8299df92004-07-10 09:47:34 +000077 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +000078" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
79 exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000080 else
Bram Moolenaard314b252005-08-01 21:54:37 +000081" call Dret("NetrwFileHandler_jpg 0")
82 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000083 endif
84
Bram Moolenaard314b252005-08-01 21:54:37 +000085" call Dret("NetrwFileHandler_jpg 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000086 return 1
87endfun
88
89" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000090" NetrwFileHandler_gif: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000091fun! NetrwFileHandler_gif(giffile)
Bram Moolenaard314b252005-08-01 21:54:37 +000092" call Dfunc("NetrwFileHandler_gif(giffile<".a:giffile.">)")
93
Bram Moolenaar8299df92004-07-10 09:47:34 +000094 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000095 exe "silent! !gimp -s ".a:giffile
96 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
97 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000098 else
Bram Moolenaard314b252005-08-01 21:54:37 +000099" call Dret("NetrwFileHandler_gif 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000100 return 0
101 endif
102
Bram Moolenaard314b252005-08-01 21:54:37 +0000103" call Dret("NetrwFileHandler_gif 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000104 return 1
105endfun
106
107" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000108" NetrwFileHandler_png: {{{1
109fun! NetrwFileHandler_png(pngfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000110" call Dfunc("NetrwFileHandler_png(pngfile<".a:pngfile.">)")
111
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000112 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000113 exe "silent! !gimp -s ".a:pngfile
114 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
115 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000116 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000117" call Dret("NetrwFileHandler_png 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000118 return 0
119 endif
120
Bram Moolenaard314b252005-08-01 21:54:37 +0000121" call Dret("NetrwFileHandler_png 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000122 return 1
123endfun
124
125" ---------------------------------------------------------------------
126" NetrwFileHandler_pnm: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000127fun! NetrwFileHandler_pnm(pnmfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000128" call Dfunc("NetrwFileHandler_pnm(pnmfile<".a:pnmfile.">)")
129
Bram Moolenaar8299df92004-07-10 09:47:34 +0000130 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000131 exe "silent! !gimp -s ".a:pnmfile
132 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
133 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000134 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000135" call Dret("NetrwFileHandler_pnm 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000136 return 0
137 endif
138
Bram Moolenaard314b252005-08-01 21:54:37 +0000139" call Dret("NetrwFileHandler_pnm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000140 return 1
141endfun
142
143" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000144" NetrwFileHandler_bmp: visualize bmp files {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000145fun! NetrwFileHandler_bmp(bmpfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000146" call Dfunc("NetrwFileHandler_bmp(bmpfile<".a:bmpfile.">)")
147
Bram Moolenaar8299df92004-07-10 09:47:34 +0000148 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000149 exe "silent! !gimp -s ".a:bmpfile
Bram Moolenaar8299df92004-07-10 09:47:34 +0000150 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +0000151 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000152 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000153" call Dret("NetrwFileHandler_bmp 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000154 return 0
155 endif
156
Bram Moolenaard314b252005-08-01 21:54:37 +0000157" call Dret("NetrwFileHandler_bmp 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000158 return 1
Bram Moolenaar843ee412004-06-30 16:16:41 +0000159endfun
160
161" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000162" NetrwFileHandler_pdf: visualize pdf files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000163fun! NetrwFileHandler_pdf(pdf)
Bram Moolenaard314b252005-08-01 21:54:37 +0000164" " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
165 if executable("gs")
166 exe 'silent! !gs "'.a:pdf.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000167 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000168" " call Dret("NetrwFileHandler_pdf 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000169 return 0
170 endif
171
Bram Moolenaard314b252005-08-01 21:54:37 +0000172" " call Dret("NetrwFileHandler_pdf 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000173 return 1
174endfun
175
176" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000177" NetrwFileHandler_sxw: visualize sxw files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000178fun! NetrwFileHandler_sxw(sxw)
Bram Moolenaard314b252005-08-01 21:54:37 +0000179" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000180 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000181 exe 'silent! !gs "'.a:sxw.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000182 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000183" " call Dret("NetrwFileHandler_sxw 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000184 return 0
185 endif
186
Bram Moolenaard314b252005-08-01 21:54:37 +0000187" " call Dret("NetrwFileHandler_sxw 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000188 return 1
189endfun
190
191" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000192" NetrwFileHandler_doc: visualize doc files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000193fun! NetrwFileHandler_doc(doc)
Bram Moolenaard314b252005-08-01 21:54:37 +0000194" " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
195
Bram Moolenaar269ec652004-07-29 08:43:53 +0000196 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000197 exe 'silent! !oowriter "'.a:doc.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000198 redraw!
199 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000200" " call Dret("NetrwFileHandler_doc 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000201 return 0
202 endif
203
Bram Moolenaard314b252005-08-01 21:54:37 +0000204" " call Dret("NetrwFileHandler_doc 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000205 return 1
206endfun
207
208" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000209" NetrwFileHandler_sxw: visualize sxw files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000210fun! NetrwFileHandler_sxw(sxw)
Bram Moolenaard314b252005-08-01 21:54:37 +0000211" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
212
Bram Moolenaar269ec652004-07-29 08:43:53 +0000213 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000214 exe 'silent! !oowriter "'.a:sxw.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000215 redraw!
216 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000217" " call Dret("NetrwFileHandler_sxw 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000218 return 0
219 endif
220
Bram Moolenaard314b252005-08-01 21:54:37 +0000221" " call Dret("NetrwFileHandler_sxw 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000222 return 1
223endfun
224
225" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000226" NetrwFileHandler_xls: visualize xls files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000227fun! NetrwFileHandler_xls(xls)
Bram Moolenaard314b252005-08-01 21:54:37 +0000228" " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
229
Bram Moolenaar269ec652004-07-29 08:43:53 +0000230 if executable("oocalc")
Bram Moolenaard314b252005-08-01 21:54:37 +0000231 exe 'silent! !oocalc "'.a:xls.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000232 redraw!
233 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000234" " call Dret("NetrwFileHandler_xls 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000235 return 0
236 endif
237
Bram Moolenaard314b252005-08-01 21:54:37 +0000238" " call Dret("NetrwFileHandler_xls 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000239 return 1
240endfun
241
242" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000243" NetrwFileHandler_ps: handles PostScript files {{{1
244fun! NetrwFileHandler_ps(ps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000245" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000246 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000247 exe "silent! !gs ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000248 redraw!
249 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000250 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000251 redraw!
252 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000253 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000254 redraw!
255 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000256 exe "silent! !gswin32 \"".a:ps.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000257 redraw!
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000258 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000259" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000260 return 0
261 endif
262
Bram Moolenaard314b252005-08-01 21:54:37 +0000263" call Dret("NetrwFileHandler_ps 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000264 return 1
265endfun
266
267" ---------------------------------------------------------------------
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000268" NetrwFileHandler_eps: handles encapsulated PostScript files {{{1
269fun! NetrwFileHandler_eps(eps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000270" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000271 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000272 exe "silent! !gs ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000273 redraw!
274 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000275 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000276 redraw!
277 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000278 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000279 redraw!
280 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000281 exe "silent! !gswin32 \"".a:eps.'"'
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000282 redraw!
283 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000284" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000285 return 0
286 endif
287endfun
288
289" ---------------------------------------------------------------------
290" NetrwFileHandler_fig: handles xfig files {{{1
291fun! NetrwFileHandler_fig(fig)
Bram Moolenaard314b252005-08-01 21:54:37 +0000292" call Dfunc("NetrwFileHandler_fig()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000293 if executable("xfig")
Bram Moolenaard314b252005-08-01 21:54:37 +0000294 exe "silent! !xfig ".a:fig
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000295 redraw!
296 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000297" call Dret("NetrwFileHandler_fig 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000298 return 0
299 endif
300
Bram Moolenaard314b252005-08-01 21:54:37 +0000301" call Dret("NetrwFileHandler_fig 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000302 return 1
303endfun
304
305" ---------------------------------------------------------------------
306" NetrwFileHandler_obj: handles tgif's obj files {{{1
307fun! NetrwFileHandler_obj(obj)
Bram Moolenaard314b252005-08-01 21:54:37 +0000308" call Dfunc("NetrwFileHandler_obj()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000309 if has("unix") && executable("tgif")
Bram Moolenaard314b252005-08-01 21:54:37 +0000310 exe "silent! !tgif ".a:obj
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000311 redraw!
312 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000313" call Dret("NetrwFileHandler_obj 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000314 return 0
315 endif
316
Bram Moolenaard314b252005-08-01 21:54:37 +0000317" call Dret("NetrwFileHandler_obj 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000318 return 1
319endfun
320
Bram Moolenaard314b252005-08-01 21:54:37 +0000321let &cpo= s:keepcpo
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000322" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +0000323" Modelines: {{{1
324" vim: ts=4 fdm=marker