1" netrwFileHandlers: contains various extension-based file handlers for 2" netrw's browsers' x command ("eXecute launcher") 3" Author: Charles E. Campbell, Jr. 4" Date: May 30, 2006 5" Version: 9 6" Copyright: Copyright (C) 1999-2005 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. 14" 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. 17 18" --------------------------------------------------------------------- 19" Load Once: {{{1 20if exists("g:loaded_netrwFileHandlers") || &cp 21 finish 22endif 23let s:keepcpo= &cpo 24set cpo&vim 25let g:loaded_netrwFileHandlers= "v9" 26 27" --------------------------------------------------------------------- 28" netrwFileHandlers#Invoke: {{{1 29fun! netrwFileHandlers#Invoke(exten,fname) 30" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)") 31 let fname= a:fname 32 " list of supported special characters. Consider rcs,v --- that can be 33 " supported with a NFH_rcsCOMMAv() handler 34 if a:fname =~ '[@:,$!=\-+%?;~]' 35 let specials= { 36\ '@' : 'AT', 37\ ':' : 'COLON', 38\ ',' : 'COMMA', 39\ '$' : 'DOLLAR', 40\ '!' : 'EXCLAMATION', 41\ '=' : 'EQUAL', 42\ '-' : 'MINUS', 43\ '+' : 'PLUS', 44\ '%' : 'PERCENT', 45\ '?' : 'QUESTION', 46\ ';' : 'SEMICOLON', 47\ '~' : 'TILDE'} 48 let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge') 49" call Decho('fname<'.fname.'> done with dictionary') 50 endif 51 52 if a:exten != "" && exists("*NFH_".a:exten) 53 " support user NFH_*() functions 54" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")') 55 exe "let ret= NFH_".a:exten.'("'.fname.'")' 56 elseif a:exten != "" && exists("*s:NFH_".a:exten) 57 " use builtin-NFH_*() functions 58" call Decho("let ret= netrwFileHandlers#NFH_".a:exten.'("'.fname.'")') 59 exe "let ret= s:NFH_".a:exten.'("'.fname.'")' 60 endif 61 62" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret) 63 return 0 64endfun 65 66" --------------------------------------------------------------------- 67" s:NFH_html: handles html when the user hits "x" when the {{{1 68" cursor is atop a *.html file 69fun! s:NFH_html(pagefile) 70" call Dfunc("s:NFH_html(".a:pagefile.")") 71 72 let page= substitute(a:pagefile,'^','file://','') 73 74 if executable("mozilla") 75" call Decho("executing !mozilla ".page) 76 exe "!mozilla ".g:netrw_shq.page.g:netrw_shq 77 elseif executable("netscape") 78" call Decho("executing !netscape ".page) 79 exe "!netscape ".g:netrw_shq..page.g:netrw_shq 80 else 81" call Dret("s:NFH_html 0") 82 return 0 83 endif 84 85" call Dret("s:NFH_html 1") 86 return 1 87endfun 88 89" --------------------------------------------------------------------- 90" s:NFH_htm: handles html when the user hits "x" when the {{{1 91" cursor is atop a *.htm file 92fun! s:NFH_htm(pagefile) 93" call Dfunc("s:NFH_htm(".a:pagefile.")") 94 95 let page= substitute(a:pagefile,'^','file://','') 96 97 if executable("mozilla") 98" call Decho("executing !mozilla ".page) 99 exe "!mozilla ".g:netrw_shq.page.g:netrw_shq 100 elseif executable("netscape") 101" call Decho("executing !netscape ".page) 102 exe "!netscape ".g:netrw_shq.page.g:netrw_shq 103 else 104" call Dret("s:NFH_htm 0") 105 return 0 106 endif 107 108" call Dret("s:NFH_htm 1") 109 return 1 110endfun 111 112" --------------------------------------------------------------------- 113" s:NFH_jpg: {{{1 114fun! s:NFH_jpg(jpgfile) 115" call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") 116 117 if executable("gimp") 118 exe "silent! !gimp -s ".g:netrw_shq.a:jpgfile.g:netrw_shq 119 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 120" call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'")) 121 exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:jpgfile.g:netrw_shq 122 else 123" call Dret("s:NFH_jpg 0") 124 return 0 125 endif 126 127" call Dret("s:NFH_jpg 1") 128 return 1 129endfun 130 131" --------------------------------------------------------------------- 132" s:NFH_gif: {{{1 133fun! s:NFH_gif(giffile) 134" call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") 135 136 if executable("gimp") 137 exe "silent! !gimp -s ".g:netrw_shq.a:giffile.g:netrw_shq 138 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 139 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:giffile.g:netrw_shq 140 else 141" call Dret("s:NFH_gif 0") 142 return 0 143 endif 144 145" call Dret("s:NFH_gif 1") 146 return 1 147endfun 148 149" --------------------------------------------------------------------- 150" s:NFH_png: {{{1 151fun! s:NFH_png(pngfile) 152" call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") 153 154 if executable("gimp") 155 exe "silent! !gimp -s ".g:netrw_shq.a:pngfile.g:netrw_shq 156 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 157 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pngfile.g:netrw_shq 158 else 159" call Dret("s:NFH_png 0") 160 return 0 161 endif 162 163" call Dret("s:NFH_png 1") 164 return 1 165endfun 166 167" --------------------------------------------------------------------- 168" s:NFH_pnm: {{{1 169fun! s:NFH_pnm(pnmfile) 170" call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") 171 172 if executable("gimp") 173 exe "silent! !gimp -s ".g:netrw_shq.a:pnmfile.g:netrw_shq 174 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 175 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:pnmfile.g:netrw_shq 176 else 177" call Dret("s:NFH_pnm 0") 178 return 0 179 endif 180 181" call Dret("s:NFH_pnm 1") 182 return 1 183endfun 184 185" --------------------------------------------------------------------- 186" s:NFH_bmp: visualize bmp files {{{1 187fun! s:NFH_bmp(bmpfile) 188" call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)") 189 190 if executable("gimp") 191 exe "silent! !gimp -s ".a:bmpfile 192 elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE") 193 exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".g:netrw_shq.a:bmpfile.g:netrw_shq 194 else 195" call Dret("s:NFH_bmp 0") 196 return 0 197 endif 198 199" call Dret("s:NFH_bmp 1") 200 return 1 201endfun 202 203" --------------------------------------------------------------------- 204" s:NFH_pdf: visualize pdf files {{{1 205fun! s:NFH_pdf(pdf) 206" call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") 207 if executable("gs") 208 exe 'silent! !gs '.g:netrw_shq.a:pdf.g:netrw_shq 209 elseif executable("pdftotext") 210 exe 'silent! pdftotext -nopgbrk '.g:netrw_shq.a:pdf.g:netrw_shq 211 else 212" call Dret("s:NFH_pdf 0") 213 return 0 214 endif 215 216" call Dret("s:NFH_pdf 1") 217 return 1 218endfun 219 220" --------------------------------------------------------------------- 221" s:NFH_doc: visualize doc files {{{1 222fun! s:NFH_doc(doc) 223" call Dfunc("s:NFH_doc(doc<".a:doc.">)") 224 225 if executable("oowriter") 226 exe 'silent! !oowriter '.g:netrw_shq.a:doc.g:netrw_shq 227 redraw! 228 else 229" call Dret("s:NFH_doc 0") 230 return 0 231 endif 232 233" call Dret("s:NFH_doc 1") 234 return 1 235endfun 236 237" --------------------------------------------------------------------- 238" s:NFH_sxw: visualize sxw files {{{1 239fun! s:NFH_sxw(sxw) 240" call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") 241 242 if executable("oowriter") 243 exe 'silent! !oowriter '.g:netrw_shq.a:sxw.g:netrw_shq 244 redraw! 245 else 246" call Dret("s:NFH_sxw 0") 247 return 0 248 endif 249 250" call Dret("s:NFH_sxw 1") 251 return 1 252endfun 253 254" --------------------------------------------------------------------- 255" s:NFH_xls: visualize xls files {{{1 256fun! s:NFH_xls(xls) 257" call Dfunc("s:NFH_xls(xls<".a:xls.">)") 258 259 if executable("oocalc") 260 exe 'silent! !oocalc '.g:netrw_shq.a:xls.g:netrw_shq 261 redraw! 262 else 263" call Dret("s:NFH_xls 0") 264 return 0 265 endif 266 267" call Dret("s:NFH_xls 1") 268 return 1 269endfun 270 271" --------------------------------------------------------------------- 272" s:NFH_ps: handles PostScript files {{{1 273fun! s:NFH_ps(ps) 274" call Dfunc("s:NFH_ps(ps<".a:ps.">)") 275 if executable("gs") 276" call Decho("exe silent! !gs ".a:ps) 277 exe "silent! !gs ".g:netrw_shq.a:ps.g:netrw_shq 278 redraw! 279 elseif executable("ghostscript") 280" call Decho("exe silent! !ghostscript ".a:ps) 281 exe "silent! !ghostscript ".g:netrw_shq.a:ps.g:netrw_shq 282 redraw! 283 elseif executable("gswin32") 284" call Decho("exe silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq) 285 exe "silent! !gswin32 ".g:netrw_shq.a:ps.g:netrw_shq 286 redraw! 287 else 288" call Dret("s:NFH_ps 0") 289 return 0 290 endif 291 292" call Dret("s:NFH_ps 1") 293 return 1 294endfun 295 296" --------------------------------------------------------------------- 297" s:NFH_eps: handles encapsulated PostScript files {{{1 298fun! s:NFH_eps(eps) 299" call Dfunc("s:NFH_eps()") 300 if executable("gs") 301 exe "silent! !gs ".g:netrw_shq.a:eps.g:netrw_shq 302 redraw! 303 elseif executable("ghostscript") 304 exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq 305 redraw! 306 elseif executable("ghostscript") 307 exe "silent! !ghostscript ".g:netrw_shq.a:eps.g:netrw_shq 308 redraw! 309 elseif executable("gswin32") 310 exe "silent! !gswin32 ".g:netrw_shq.a:eps.g:netrw_shq 311 redraw! 312 else 313" call Dret("s:NFH_eps 0") 314 return 0 315 endif 316" call Dret("s:NFH_eps 0") 317 return 1 318endfun 319 320" --------------------------------------------------------------------- 321" s:NFH_fig: handles xfig files {{{1 322fun! s:NFH_fig(fig) 323" call Dfunc("s:NFH_fig()") 324 if executable("xfig") 325 exe "silent! !xfig ".a:fig 326 redraw! 327 else 328" call Dret("s:NFH_fig 0") 329 return 0 330 endif 331 332" call Dret("s:NFH_fig 1") 333 return 1 334endfun 335 336" --------------------------------------------------------------------- 337" s:NFH_obj: handles tgif's obj files {{{1 338fun! s:NFH_obj(obj) 339" call Dfunc("s:NFH_obj()") 340 if has("unix") && executable("tgif") 341 exe "silent! !tgif ".a:obj 342 redraw! 343 else 344" call Dret("s:NFH_obj 0") 345 return 0 346 endif 347 348" call Dret("s:NFH_obj 1") 349 return 1 350endfun 351 352let &cpo= s:keepcpo 353" --------------------------------------------------------------------- 354" Modelines: {{{1 355" vim: fdm=marker 356