blob: 6d3f8dcb97ec06abe888d1aa89ef1548332a1eeb [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.
4" Date: Apr 07, 2005
5" Version: 4a NOT RELEASED
Bram Moolenaar843ee412004-06-30 16:16:41 +00006
Bram Moolenaard4755bb2004-09-02 19:12:26 +00007" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +00008" Load Once: {{{1
Bram Moolenaard4755bb2004-09-02 19:12:26 +00009if exists("g:loaded_netrwfilehandlers") || &cp
Bram Moolenaard314b252005-08-01 21:54:37 +000010 finish
Bram Moolenaard4755bb2004-09-02 19:12:26 +000011endif
Bram Moolenaard314b252005-08-01 21:54:37 +000012let s:keepcpo= &cpo
13set cpo&vim
14let g:loaded_netrwfilehandlers= "v4a"
Bram Moolenaard4755bb2004-09-02 19:12:26 +000015
16" ---------------------------------------------------------------------
17" NetrwFileHandler_html: handles html when the user hits "x" when the {{{1
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000018" cursor is atop a *.html file
Bram Moolenaar8299df92004-07-10 09:47:34 +000019fun! NetrwFileHandler_html(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000020" call Dfunc("NetrwFileHandler_html(".a:pagefile.")")
21
22 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000023
24 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000025" call Decho("executing !mozilla ".page)
26 exe "!mozilla \"".page.'"'
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000027 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000028" call Decho("executing !netscape ".page)
29 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000030 else
Bram Moolenaard314b252005-08-01 21:54:37 +000031" call Dret("NetrwFileHandler_html 0")
32 return 0
Bram Moolenaarcfbc5ee2004-07-02 15:38:35 +000033 endif
Bram Moolenaar843ee412004-06-30 16:16:41 +000034
Bram Moolenaard314b252005-08-01 21:54:37 +000035" call Dret("NetrwFileHandler_html 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000036 return 1
37endfun
38
39" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000040" NetrwFileHandler_htm: handles html when the user hits "x" when the {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000041" cursor is atop a *.htm file
42fun! NetrwFileHandler_htm(pagefile)
Bram Moolenaard314b252005-08-01 21:54:37 +000043" call Dfunc("NetrwFileHandler_htm(".a:pagefile.")")
44
45 let page= substitute(a:pagefile,'^','file://','')
Bram Moolenaar8299df92004-07-10 09:47:34 +000046
47 if executable("mozilla")
Bram Moolenaard314b252005-08-01 21:54:37 +000048" call Decho("executing !mozilla ".page)
49 exe "!mozilla \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000050 elseif executable("netscape")
Bram Moolenaard314b252005-08-01 21:54:37 +000051" call Decho("executing !netscape ".page)
52 exe "!netscape \"".page.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000053 else
Bram Moolenaard314b252005-08-01 21:54:37 +000054" call Dret("NetrwFileHandler_htm 0")
55 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000056 endif
57
Bram Moolenaard314b252005-08-01 21:54:37 +000058" call Dret("NetrwFileHandler_htm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000059 return 1
60endfun
61
62" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000063" NetrwFileHandler_jpg: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000064fun! NetrwFileHandler_jpg(jpgfile)
Bram Moolenaard314b252005-08-01 21:54:37 +000065" call Dfunc("NetrwFileHandler_jpg(jpgfile<".a:jpgfile.">)")
66
Bram Moolenaar8299df92004-07-10 09:47:34 +000067 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000068 exe "silent! !gimp -s ".a:jpgfile
Bram Moolenaar8299df92004-07-10 09:47:34 +000069 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +000070" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
71 exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000072 else
Bram Moolenaard314b252005-08-01 21:54:37 +000073" call Dret("NetrwFileHandler_jpg 0")
74 return 0
Bram Moolenaar8299df92004-07-10 09:47:34 +000075 endif
76
Bram Moolenaard314b252005-08-01 21:54:37 +000077" call Dret("NetrwFileHandler_jpg 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000078 return 1
79endfun
80
81" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +000082" NetrwFileHandler_gif: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +000083fun! NetrwFileHandler_gif(giffile)
Bram Moolenaard314b252005-08-01 21:54:37 +000084" call Dfunc("NetrwFileHandler_gif(giffile<".a:giffile.">)")
85
Bram Moolenaar8299df92004-07-10 09:47:34 +000086 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +000087 exe "silent! !gimp -s ".a:giffile
88 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
89 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +000090 else
Bram Moolenaard314b252005-08-01 21:54:37 +000091" call Dret("NetrwFileHandler_gif 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +000092 return 0
93 endif
94
Bram Moolenaard314b252005-08-01 21:54:37 +000095" call Dret("NetrwFileHandler_gif 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +000096 return 1
97endfun
98
99" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000100" NetrwFileHandler_png: {{{1
101fun! NetrwFileHandler_png(pngfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000102" call Dfunc("NetrwFileHandler_png(pngfile<".a:pngfile.">)")
103
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000104 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000105 exe "silent! !gimp -s ".a:pngfile
106 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
107 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000108 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000109" call Dret("NetrwFileHandler_png 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000110 return 0
111 endif
112
Bram Moolenaard314b252005-08-01 21:54:37 +0000113" call Dret("NetrwFileHandler_png 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000114 return 1
115endfun
116
117" ---------------------------------------------------------------------
118" NetrwFileHandler_pnm: {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000119fun! NetrwFileHandler_pnm(pnmfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000120" call Dfunc("NetrwFileHandler_pnm(pnmfile<".a:pnmfile.">)")
121
Bram Moolenaar8299df92004-07-10 09:47:34 +0000122 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000123 exe "silent! !gimp -s ".a:pnmfile
124 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
125 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000126 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000127" call Dret("NetrwFileHandler_pnm 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000128 return 0
129 endif
130
Bram Moolenaard314b252005-08-01 21:54:37 +0000131" call Dret("NetrwFileHandler_pnm 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000132 return 1
133endfun
134
135" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000136" NetrwFileHandler_bmp: visualize bmp files {{{1
Bram Moolenaar8299df92004-07-10 09:47:34 +0000137fun! NetrwFileHandler_bmp(bmpfile)
Bram Moolenaard314b252005-08-01 21:54:37 +0000138" call Dfunc("NetrwFileHandler_bmp(bmpfile<".a:bmpfile.">)")
139
Bram Moolenaar8299df92004-07-10 09:47:34 +0000140 if executable("gimp")
Bram Moolenaard314b252005-08-01 21:54:37 +0000141 exe "silent! !gimp -s ".a:bmpfile
Bram Moolenaar8299df92004-07-10 09:47:34 +0000142 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
Bram Moolenaard314b252005-08-01 21:54:37 +0000143 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
Bram Moolenaar8299df92004-07-10 09:47:34 +0000144 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000145" call Dret("NetrwFileHandler_bmp 0")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000146 return 0
147 endif
148
Bram Moolenaard314b252005-08-01 21:54:37 +0000149" call Dret("NetrwFileHandler_bmp 1")
Bram Moolenaar8299df92004-07-10 09:47:34 +0000150 return 1
Bram Moolenaar843ee412004-06-30 16:16:41 +0000151endfun
152
153" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000154" NetrwFileHandler_pdf: visualize pdf files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000155fun! NetrwFileHandler_pdf(pdf)
Bram Moolenaard314b252005-08-01 21:54:37 +0000156" " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
157 if executable("gs")
158 exe 'silent! !gs "'.a:pdf.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000159 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000160" " call Dret("NetrwFileHandler_pdf 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000161 return 0
162 endif
163
Bram Moolenaard314b252005-08-01 21:54:37 +0000164" " call Dret("NetrwFileHandler_pdf 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000165 return 1
166endfun
167
168" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000169" NetrwFileHandler_sxw: visualize sxw files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000170fun! NetrwFileHandler_sxw(sxw)
Bram Moolenaard314b252005-08-01 21:54:37 +0000171" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000172 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000173 exe 'silent! !gs "'.a:sxw.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000174 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000175" " call Dret("NetrwFileHandler_sxw 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000176 return 0
177 endif
178
Bram Moolenaard314b252005-08-01 21:54:37 +0000179" " call Dret("NetrwFileHandler_sxw 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000180 return 1
181endfun
182
183" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000184" NetrwFileHandler_doc: visualize doc files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000185fun! NetrwFileHandler_doc(doc)
Bram Moolenaard314b252005-08-01 21:54:37 +0000186" " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
187
Bram Moolenaar269ec652004-07-29 08:43:53 +0000188 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000189 exe 'silent! !oowriter "'.a:doc.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000190 redraw!
191 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000192" " call Dret("NetrwFileHandler_doc 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000193 return 0
194 endif
195
Bram Moolenaard314b252005-08-01 21:54:37 +0000196" " call Dret("NetrwFileHandler_doc 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000197 return 1
198endfun
199
200" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000201" NetrwFileHandler_sxw: visualize sxw files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000202fun! NetrwFileHandler_sxw(sxw)
Bram Moolenaard314b252005-08-01 21:54:37 +0000203" " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
204
Bram Moolenaar269ec652004-07-29 08:43:53 +0000205 if executable("oowriter")
Bram Moolenaard314b252005-08-01 21:54:37 +0000206 exe 'silent! !oowriter "'.a:sxw.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000207 redraw!
208 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000209" " call Dret("NetrwFileHandler_sxw 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000210 return 0
211 endif
212
Bram Moolenaard314b252005-08-01 21:54:37 +0000213" " call Dret("NetrwFileHandler_sxw 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000214 return 1
215endfun
216
217" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000218" NetrwFileHandler_xls: visualize xls files {{{1
Bram Moolenaar269ec652004-07-29 08:43:53 +0000219fun! NetrwFileHandler_xls(xls)
Bram Moolenaard314b252005-08-01 21:54:37 +0000220" " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
221
Bram Moolenaar269ec652004-07-29 08:43:53 +0000222 if executable("oocalc")
Bram Moolenaard314b252005-08-01 21:54:37 +0000223 exe 'silent! !oocalc "'.a:xls.'"'
Bram Moolenaar269ec652004-07-29 08:43:53 +0000224 redraw!
225 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000226" " call Dret("NetrwFileHandler_xls 0")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000227 return 0
228 endif
229
Bram Moolenaard314b252005-08-01 21:54:37 +0000230" " call Dret("NetrwFileHandler_xls 1")
Bram Moolenaar269ec652004-07-29 08:43:53 +0000231 return 1
232endfun
233
234" ---------------------------------------------------------------------
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000235" NetrwFileHandler_ps: handles PostScript files {{{1
236fun! NetrwFileHandler_ps(ps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000237" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000238 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000239 exe "silent! !gs ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000240 redraw!
241 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000242 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000243 redraw!
244 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000245 exe "silent! !ghostscript ".a:ps
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000246 redraw!
247 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000248 exe "silent! !gswin32 \"".a:ps.'"'
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000249 redraw!
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000250 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000251" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000252 return 0
253 endif
254
Bram Moolenaard314b252005-08-01 21:54:37 +0000255" call Dret("NetrwFileHandler_ps 1")
Bram Moolenaard4755bb2004-09-02 19:12:26 +0000256 return 1
257endfun
258
259" ---------------------------------------------------------------------
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000260" NetrwFileHandler_eps: handles encapsulated PostScript files {{{1
261fun! NetrwFileHandler_eps(eps)
Bram Moolenaard314b252005-08-01 21:54:37 +0000262" call Dfunc("NetrwFileHandler_ps()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000263 if executable("gs")
Bram Moolenaard314b252005-08-01 21:54:37 +0000264 exe "silent! !gs ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000265 redraw!
266 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000267 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000268 redraw!
269 elseif executable("ghostscript")
Bram Moolenaard314b252005-08-01 21:54:37 +0000270 exe "silent! !ghostscript ".a:eps
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000271 redraw!
272 elseif executable("gswin32")
Bram Moolenaard314b252005-08-01 21:54:37 +0000273 exe "silent! !gswin32 \"".a:eps.'"'
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000274 redraw!
275 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000276" call Dret("NetrwFileHandler_ps 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000277 return 0
278 endif
279endfun
280
281" ---------------------------------------------------------------------
282" NetrwFileHandler_fig: handles xfig files {{{1
283fun! NetrwFileHandler_fig(fig)
Bram Moolenaard314b252005-08-01 21:54:37 +0000284" call Dfunc("NetrwFileHandler_fig()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000285 if executable("xfig")
Bram Moolenaard314b252005-08-01 21:54:37 +0000286 exe "silent! !xfig ".a:fig
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000287 redraw!
288 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000289" call Dret("NetrwFileHandler_fig 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000290 return 0
291 endif
292
Bram Moolenaard314b252005-08-01 21:54:37 +0000293" call Dret("NetrwFileHandler_fig 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000294 return 1
295endfun
296
297" ---------------------------------------------------------------------
298" NetrwFileHandler_obj: handles tgif's obj files {{{1
299fun! NetrwFileHandler_obj(obj)
Bram Moolenaard314b252005-08-01 21:54:37 +0000300" call Dfunc("NetrwFileHandler_obj()")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000301 if has("unix") && executable("tgif")
Bram Moolenaard314b252005-08-01 21:54:37 +0000302 exe "silent! !tgif ".a:obj
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000303 redraw!
304 else
Bram Moolenaard314b252005-08-01 21:54:37 +0000305" call Dret("NetrwFileHandler_obj 0")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000306 return 0
307 endif
308
Bram Moolenaard314b252005-08-01 21:54:37 +0000309" call Dret("NetrwFileHandler_obj 1")
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000310 return 1
311endfun
312
Bram Moolenaard314b252005-08-01 21:54:37 +0000313let &cpo= s:keepcpo
Bram Moolenaarc0197e22004-09-13 20:26:32 +0000314" ---------------------------------------------------------------------
Bram Moolenaard314b252005-08-01 21:54:37 +0000315" Modelines: {{{1
316" vim: ts=4 fdm=marker