1 " netrwFileHandlers: contains various extension-based file handlers for
2 " netrw's browsers' x command ("eXecute launcher")
3 " Author: Charles E. Campbell, Jr.
6 " Copyright: Copyright (C) 1999-2008 Charles E. Campbell, Jr. {{{1
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 " netrwFileHandlers.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.
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.
18 " ---------------------------------------------------------------------
20 if exists("g:loaded_netrwFileHandlers") || &cp
23 let g:loaded_netrwFileHandlers= "v10"
26 echo "***warning*** this version of netrwFileHandlers needs vim 7.2"
33 " ---------------------------------------------------------------------
34 " netrwFileHandlers#Invoke: {{{1
35 fun! netrwFileHandlers#Invoke(exten,fname)
36 " call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)")
38 " list of supported special characters. Consider rcs,v --- that can be
39 " supported with a NFH_rcsCOMMAv() handler
40 if a:fname =~ '[@:,$!=\-+%?;~]'
46 \ '!' : 'EXCLAMATION',
54 let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge')
55 " call Decho('fname<'.fname.'> done with dictionary')
58 if a:exten != "" && exists("*NFH_".a:exten)
59 " support user NFH_*() functions
60 " call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
61 exe "let ret= NFH_".a:exten.'("'.fname.'")'
62 elseif a:exten != "" && exists("*s:NFH_".a:exten)
63 " use builtin-NFH_*() functions
64 " call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")')
65 exe "let ret= s:NFH_".a:exten.'("'.fname.'")'
68 " call Dret("netrwFileHandlers#Invoke 0 : ret=".ret)
72 " ---------------------------------------------------------------------
73 " s:NFH_html: handles html when the user hits "x" when the {{{1
74 " cursor is atop a *.html file
75 fun! s:NFH_html(pagefile)
76 " call Dfunc("s:NFH_html(".a:pagefile.")")
78 let page= substitute(a:pagefile,'^','file://','')
80 if executable("mozilla")
81 " call Decho("executing !mozilla ".page)
82 exe "!mozilla ".shellescape(page,1)
83 elseif executable("netscape")
84 " call Decho("executing !netscape ".page)
85 exe "!netscape ".shellescape(page,1)
87 " call Dret("s:NFH_html 0")
91 " call Dret("s:NFH_html 1")
95 " ---------------------------------------------------------------------
96 " s:NFH_htm: handles html when the user hits "x" when the {{{1
97 " cursor is atop a *.htm file
98 fun! s:NFH_htm(pagefile)
99 " call Dfunc("s:NFH_htm(".a:pagefile.")")
101 let page= substitute(a:pagefile,'^','file://','')
103 if executable("mozilla")
104 " call Decho("executing !mozilla ".page)
105 exe "!mozilla ".shellescape(page,1)
106 elseif executable("netscape")
107 " call Decho("executing !netscape ".page)
108 exe "!netscape ".shellescape(page,1)
110 " call Dret("s:NFH_htm 0")
114 " call Dret("s:NFH_htm 1")
118 " ---------------------------------------------------------------------
120 fun! s:NFH_jpg(jpgfile)
121 " call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)")
123 if executable("gimp")
124 exe "silent! !gimp -s ".shellescape(a:jpgfile,1)
125 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
126 " call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
127 exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:jpgfile,1)
129 " call Dret("s:NFH_jpg 0")
133 " call Dret("s:NFH_jpg 1")
137 " ---------------------------------------------------------------------
139 fun! s:NFH_gif(giffile)
140 " call Dfunc("s:NFH_gif(giffile<".a:giffile.">)")
142 if executable("gimp")
143 exe "silent! !gimp -s ".shellescape(a:giffile,1)
144 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
145 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:giffile,1)
147 " call Dret("s:NFH_gif 0")
151 " call Dret("s:NFH_gif 1")
155 " ---------------------------------------------------------------------
157 fun! s:NFH_png(pngfile)
158 " call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)")
160 if executable("gimp")
161 exe "silent! !gimp -s ".shellescape(a:pngfile,1)
162 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
163 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pngfile,1)
165 " call Dret("s:NFH_png 0")
169 " call Dret("s:NFH_png 1")
173 " ---------------------------------------------------------------------
175 fun! s:NFH_pnm(pnmfile)
176 " call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)")
178 if executable("gimp")
179 exe "silent! !gimp -s ".shellescape(a:pnmfile,1)
180 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
181 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:pnmfile,1)
183 " call Dret("s:NFH_pnm 0")
187 " call Dret("s:NFH_pnm 1")
191 " ---------------------------------------------------------------------
192 " s:NFH_bmp: visualize bmp files {{{1
193 fun! s:NFH_bmp(bmpfile)
194 " call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)")
196 if executable("gimp")
197 exe "silent! !gimp -s ".a:bmpfile
198 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
199 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".shellescape(a:bmpfile,1)
201 " call Dret("s:NFH_bmp 0")
205 " call Dret("s:NFH_bmp 1")
209 " ---------------------------------------------------------------------
210 " s:NFH_pdf: visualize pdf files {{{1
212 " call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)")
214 exe 'silent! !gs '.shellescape(a:pdf,1)
215 elseif executable("pdftotext")
216 exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1)
218 " call Dret("s:NFH_pdf 0")
222 " call Dret("s:NFH_pdf 1")
226 " ---------------------------------------------------------------------
227 " s:NFH_doc: visualize doc files {{{1
229 " call Dfunc("s:NFH_doc(doc<".a:doc.">)")
231 if executable("oowriter")
232 exe 'silent! !oowriter '.shellescape(a:doc,1)
235 " call Dret("s:NFH_doc 0")
239 " call Dret("s:NFH_doc 1")
243 " ---------------------------------------------------------------------
244 " s:NFH_sxw: visualize sxw files {{{1
246 " call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)")
248 if executable("oowriter")
249 exe 'silent! !oowriter '.shellescape(a:sxw,1)
252 " call Dret("s:NFH_sxw 0")
256 " call Dret("s:NFH_sxw 1")
260 " ---------------------------------------------------------------------
261 " s:NFH_xls: visualize xls files {{{1
263 " call Dfunc("s:NFH_xls(xls<".a:xls.">)")
265 if executable("oocalc")
266 exe 'silent! !oocalc '.shellescape(a:xls,1)
269 " call Dret("s:NFH_xls 0")
273 " call Dret("s:NFH_xls 1")
277 " ---------------------------------------------------------------------
278 " s:NFH_ps: handles PostScript files {{{1
280 " call Dfunc("s:NFH_ps(ps<".a:ps.">)")
282 " call Decho("exe silent! !gs ".a:ps)
283 exe "silent! !gs ".shellescape(a:ps,1)
285 elseif executable("ghostscript")
286 " call Decho("exe silent! !ghostscript ".a:ps)
287 exe "silent! !ghostscript ".shellescape(a:ps,1)
289 elseif executable("gswin32")
290 " call Decho("exe silent! !gswin32 ".shellescape(a:ps,1))
291 exe "silent! !gswin32 ".shellescape(a:ps,1)
294 " call Dret("s:NFH_ps 0")
298 " call Dret("s:NFH_ps 1")
302 " ---------------------------------------------------------------------
303 " s:NFH_eps: handles encapsulated PostScript files {{{1
305 " call Dfunc("s:NFH_eps()")
307 exe "silent! !gs ".shellescape(a:eps,1)
309 elseif executable("ghostscript")
310 exe "silent! !ghostscript ".shellescape(a:eps,1)
312 elseif executable("ghostscript")
313 exe "silent! !ghostscript ".shellescape(a:eps,1)
315 elseif executable("gswin32")
316 exe "silent! !gswin32 ".shellescape(a:eps,1)
319 " call Dret("s:NFH_eps 0")
322 " call Dret("s:NFH_eps 0")
326 " ---------------------------------------------------------------------
327 " s:NFH_fig: handles xfig files {{{1
329 " call Dfunc("s:NFH_fig()")
330 if executable("xfig")
331 exe "silent! !xfig ".a:fig
334 " call Dret("s:NFH_fig 0")
338 " call Dret("s:NFH_fig 1")
342 " ---------------------------------------------------------------------
343 " s:NFH_obj: handles tgif's obj files {{{1
345 " call Dfunc("s:NFH_obj()")
346 if has("unix") && executable("tgif")
347 exe "silent! !tgif ".a:obj
350 " call Dret("s:NFH_obj 0")
354 " call Dret("s:NFH_obj 1")
359 " ---------------------------------------------------------------------