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: Sep 30, 2008 5" Version: 10 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. 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 g:loaded_netrwFileHandlers= "v10" 24if v:version < 702 25 echohl WarningMsg 26 echo "***warning*** this version of netrwFileHandlers needs vim 7.2" 27 echohl Normal 28 finish 29endif 30let s:keepcpo= &cpo 31set cpo&vim 32 33" --------------------------------------------------------------------- 34" netrwFileHandlers#Invoke: {{{1 35fun! netrwFileHandlers#Invoke(exten,fname) 36" call Dfunc("netrwFileHandlers#Invoke(exten<".a:exten."> fname<".a:fname.">)") 37 let 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 =~ '[@:,$!=\-+%?;~]' 41 let specials= { 42\ '@' : 'AT', 43\ ':' : 'COLON', 44\ ',' : 'COMMA', 45\ '$' : 'DOLLAR', 46\ '!' : 'EXCLAMATION', 47\ '=' : 'EQUAL', 48\ '-' : 'MINUS', 49\ '+' : 'PLUS', 50\ '%' : 'PERCENT', 51\ '?' : 'QUESTION', 52\ ';' : 'SEMICOLON', 53\ '~' : 'TILDE'} 54 let fname= substitute(a:fname,'[@:,$!=\-+%?;~]','\=specials[submatch(0)]','ge') 55" call Decho('fname<'.fname.'> done with dictionary') 56 endif 57 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.'")' 66 endif 67 68" call Dret("netrwFileHandlers#Invoke 0 : ret=".ret) 69 return 0 70endfun 71 72" --------------------------------------------------------------------- 73" s:NFH_html: handles html when the user hits "x" when the {{{1 74" cursor is atop a *.html file 75fun! s:NFH_html(pagefile) 76" call Dfunc("s:NFH_html(".a:pagefile.")") 77 78 let page= substitute(a:pagefile,'^','file://','') 79 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) 86 else 87" call Dret("s:NFH_html 0") 88 return 0 89 endif 90 91" call Dret("s:NFH_html 1") 92 return 1 93endfun 94 95" --------------------------------------------------------------------- 96" s:NFH_htm: handles html when the user hits "x" when the {{{1 97" cursor is atop a *.htm file 98fun! s:NFH_htm(pagefile) 99" call Dfunc("s:NFH_htm(".a:pagefile.")") 100 101 let page= substitute(a:pagefile,'^','file://','') 102 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) 109 else 110" call Dret("s:NFH_htm 0") 111 return 0 112 endif 113 114" call Dret("s:NFH_htm 1") 115 return 1 116endfun 117 118" --------------------------------------------------------------------- 119" s:NFH_jpg: {{{1 120fun! s:NFH_jpg(jpgfile) 121" call Dfunc("s:NFH_jpg(jpgfile<".a:jpgfile.">)") 122 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) 128 else 129" call Dret("s:NFH_jpg 0") 130 return 0 131 endif 132 133" call Dret("s:NFH_jpg 1") 134 return 1 135endfun 136 137" --------------------------------------------------------------------- 138" s:NFH_gif: {{{1 139fun! s:NFH_gif(giffile) 140" call Dfunc("s:NFH_gif(giffile<".a:giffile.">)") 141 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) 146 else 147" call Dret("s:NFH_gif 0") 148 return 0 149 endif 150 151" call Dret("s:NFH_gif 1") 152 return 1 153endfun 154 155" --------------------------------------------------------------------- 156" s:NFH_png: {{{1 157fun! s:NFH_png(pngfile) 158" call Dfunc("s:NFH_png(pngfile<".a:pngfile.">)") 159 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) 164 else 165" call Dret("s:NFH_png 0") 166 return 0 167 endif 168 169" call Dret("s:NFH_png 1") 170 return 1 171endfun 172 173" --------------------------------------------------------------------- 174" s:NFH_pnm: {{{1 175fun! s:NFH_pnm(pnmfile) 176" call Dfunc("s:NFH_pnm(pnmfile<".a:pnmfile.">)") 177 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) 182 else 183" call Dret("s:NFH_pnm 0") 184 return 0 185 endif 186 187" call Dret("s:NFH_pnm 1") 188 return 1 189endfun 190 191" --------------------------------------------------------------------- 192" s:NFH_bmp: visualize bmp files {{{1 193fun! s:NFH_bmp(bmpfile) 194" call Dfunc("s:NFH_bmp(bmpfile<".a:bmpfile.">)") 195 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) 200 else 201" call Dret("s:NFH_bmp 0") 202 return 0 203 endif 204 205" call Dret("s:NFH_bmp 1") 206 return 1 207endfun 208 209" --------------------------------------------------------------------- 210" s:NFH_pdf: visualize pdf files {{{1 211fun! s:NFH_pdf(pdf) 212" call Dfunc("s:NFH_pdf(pdf<".a:pdf.">)") 213 if executable("gs") 214 exe 'silent! !gs '.shellescape(a:pdf,1) 215 elseif executable("pdftotext") 216 exe 'silent! pdftotext -nopgbrk '.shellescape(a:pdf,1) 217 else 218" call Dret("s:NFH_pdf 0") 219 return 0 220 endif 221 222" call Dret("s:NFH_pdf 1") 223 return 1 224endfun 225 226" --------------------------------------------------------------------- 227" s:NFH_doc: visualize doc files {{{1 228fun! s:NFH_doc(doc) 229" call Dfunc("s:NFH_doc(doc<".a:doc.">)") 230 231 if executable("oowriter") 232 exe 'silent! !oowriter '.shellescape(a:doc,1) 233 redraw! 234 else 235" call Dret("s:NFH_doc 0") 236 return 0 237 endif 238 239" call Dret("s:NFH_doc 1") 240 return 1 241endfun 242 243" --------------------------------------------------------------------- 244" s:NFH_sxw: visualize sxw files {{{1 245fun! s:NFH_sxw(sxw) 246" call Dfunc("s:NFH_sxw(sxw<".a:sxw.">)") 247 248 if executable("oowriter") 249 exe 'silent! !oowriter '.shellescape(a:sxw,1) 250 redraw! 251 else 252" call Dret("s:NFH_sxw 0") 253 return 0 254 endif 255 256" call Dret("s:NFH_sxw 1") 257 return 1 258endfun 259 260" --------------------------------------------------------------------- 261" s:NFH_xls: visualize xls files {{{1 262fun! s:NFH_xls(xls) 263" call Dfunc("s:NFH_xls(xls<".a:xls.">)") 264 265 if executable("oocalc") 266 exe 'silent! !oocalc '.shellescape(a:xls,1) 267 redraw! 268 else 269" call Dret("s:NFH_xls 0") 270 return 0 271 endif 272 273" call Dret("s:NFH_xls 1") 274 return 1 275endfun 276 277" --------------------------------------------------------------------- 278" s:NFH_ps: handles PostScript files {{{1 279fun! s:NFH_ps(ps) 280" call Dfunc("s:NFH_ps(ps<".a:ps.">)") 281 if executable("gs") 282" call Decho("exe silent! !gs ".a:ps) 283 exe "silent! !gs ".shellescape(a:ps,1) 284 redraw! 285 elseif executable("ghostscript") 286" call Decho("exe silent! !ghostscript ".a:ps) 287 exe "silent! !ghostscript ".shellescape(a:ps,1) 288 redraw! 289 elseif executable("gswin32") 290" call Decho("exe silent! !gswin32 ".shellescape(a:ps,1)) 291 exe "silent! !gswin32 ".shellescape(a:ps,1) 292 redraw! 293 else 294" call Dret("s:NFH_ps 0") 295 return 0 296 endif 297 298" call Dret("s:NFH_ps 1") 299 return 1 300endfun 301 302" --------------------------------------------------------------------- 303" s:NFH_eps: handles encapsulated PostScript files {{{1 304fun! s:NFH_eps(eps) 305" call Dfunc("s:NFH_eps()") 306 if executable("gs") 307 exe "silent! !gs ".shellescape(a:eps,1) 308 redraw! 309 elseif executable("ghostscript") 310 exe "silent! !ghostscript ".shellescape(a:eps,1) 311 redraw! 312 elseif executable("ghostscript") 313 exe "silent! !ghostscript ".shellescape(a:eps,1) 314 redraw! 315 elseif executable("gswin32") 316 exe "silent! !gswin32 ".shellescape(a:eps,1) 317 redraw! 318 else 319" call Dret("s:NFH_eps 0") 320 return 0 321 endif 322" call Dret("s:NFH_eps 0") 323 return 1 324endfun 325 326" --------------------------------------------------------------------- 327" s:NFH_fig: handles xfig files {{{1 328fun! s:NFH_fig(fig) 329" call Dfunc("s:NFH_fig()") 330 if executable("xfig") 331 exe "silent! !xfig ".a:fig 332 redraw! 333 else 334" call Dret("s:NFH_fig 0") 335 return 0 336 endif 337 338" call Dret("s:NFH_fig 1") 339 return 1 340endfun 341 342" --------------------------------------------------------------------- 343" s:NFH_obj: handles tgif's obj files {{{1 344fun! s:NFH_obj(obj) 345" call Dfunc("s:NFH_obj()") 346 if has("unix") && executable("tgif") 347 exe "silent! !tgif ".a:obj 348 redraw! 349 else 350" call Dret("s:NFH_obj 0") 351 return 0 352 endif 353 354" call Dret("s:NFH_obj 1") 355 return 1 356endfun 357 358let &cpo= s:keepcpo 359" --------------------------------------------------------------------- 360" Modelines: {{{1 361" vim: fdm=marker 362