diff --git a/runtime/plugin/NetrwFileHandlers.vim b/runtime/plugin/NetrwFileHandlers.vim
index 619115b..7da6479 100644
--- a/runtime/plugin/NetrwFileHandlers.vim
+++ b/runtime/plugin/NetrwFileHandlers.vim
@@ -1,11 +1,18 @@
 " NetrwFileHandlers: contains various extension-based file handlers for
 "                    netrw's browsers' x command ("eXecute launcher")
 " Author:	Charles E. Campbell, Jr.
-" Date:		Jul 09, 2004
-" Version:	1
-" ---------------------------------------------------------------------
+" Date:		Aug 27, 2004
+" Version:	2
 
-" NetrwFileHandler_html: handles html when the user hits "x" when the
+" ---------------------------------------------------------------------
+" Prevent Reloading: {{{1
+if exists("g:loaded_netrwfilehandlers") || &cp
+ finish
+endif
+let g:loaded_netrwfilehandlers= "v2"
+
+" ---------------------------------------------------------------------
+" NetrwFileHandler_html: handles html when the user hits "x" when the {{{1
 "                        cursor is atop a *.html file
 fun! NetrwFileHandler_html(pagefile)
 "  call Dfunc("NetrwFileHandler_html(".a:pagefile.")")
@@ -14,10 +21,10 @@
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla ".page
+   exe "!mozilla \"".page.'"'
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape ".page
+   exe "!netscape \"".page.'"'
   else
 "   call Dret("NetrwFileHandler_html 0")
    return 0
@@ -28,7 +35,7 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_htm: handles html when the user hits "x" when the
+" NetrwFileHandler_htm: handles html when the user hits "x" when the {{{1
 "                        cursor is atop a *.htm file
 fun! NetrwFileHandler_htm(pagefile)
 "  call Dfunc("NetrwFileHandler_htm(".a:pagefile.")")
@@ -37,10 +44,10 @@
 
   if executable("mozilla")
 "   call Decho("executing !mozilla ".page)
-   exe "!mozilla ".page
+   exe "!mozilla \"".page.'"'
   elseif executable("netscape")
 "   call Decho("executing !netscape ".page)
-   exe "!netscape ".page
+   exe "!netscape \"".page.'"'
   else
 "   call Dret("NetrwFileHandler_htm 0")
    return 0
@@ -51,14 +58,15 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_jpg:
+" NetrwFileHandler_jpg: {{{1
 fun! NetrwFileHandler_jpg(jpgfile)
 "  call Dfunc("NetrwFileHandler_jpg(jpgfile<".a:jpgfile.">)")
 
   if executable("gimp")
    exe "silent! !gimp -s ".a:jpgfile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".a:jpgfile
+"   call Decho("silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".escape(a:jpgfile," []|'"))
+   exe "!".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:jpgfile.'"'
   else
 "   call Dret("NetrwFileHandler_jpg 0")
    return 0
@@ -69,14 +77,14 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_gif:
+" NetrwFileHandler_gif: {{{1
 fun! NetrwFileHandler_gif(giffile)
 "  call Dfunc("NetrwFileHandler_gif(giffile<".a:giffile.">)")
 
   if executable("gimp")
    exe "silent! !gimp -s ".a:giffile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".a:giffile
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:giffile.'"'
   else
 "   call Dret("NetrwFileHandler_gif 0")
    return 0
@@ -87,14 +95,32 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_pnm:
+" NetrwFileHandler_png: {{{1
+fun! NetrwFileHandler_png(pngfile)
+"  call Dfunc("NetrwFileHandler_png(pngfile<".a:pngfile.">)")
+
+  if executable("gimp")
+   exe "silent! !gimp -s ".a:pngfile
+  elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pngfile.'"'
+  else
+"   call Dret("NetrwFileHandler_png 0")
+   return 0
+  endif
+
+"  call Dret("NetrwFileHandler_png 1")
+  return 1
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwFileHandler_pnm: {{{1
 fun! NetrwFileHandler_pnm(pnmfile)
 "  call Dfunc("NetrwFileHandler_pnm(pnmfile<".a:pnmfile.">)")
 
   if executable("gimp")
    exe "silent! !gimp -s ".a:pnmfile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".a:pnmfile
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:pnmfile.'"'
   else
 "   call Dret("NetrwFileHandler_pnm 0")
    return 0
@@ -105,14 +131,14 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_bmp: visualize bmp files
+" NetrwFileHandler_bmp: visualize bmp files {{{1
 fun! NetrwFileHandler_bmp(bmpfile)
 "  call Dfunc("NetrwFileHandler_bmp(bmpfile<".a:bmpfile.">)")
 
   if executable("gimp")
    exe "silent! !gimp -s ".a:bmpfile
   elseif executable(expand("$SystemRoot")."/SYSTEM32/MSPAINT.EXE")
-   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT ".a:bmpfile
+   exe "silent! !".expand("$SystemRoot")."/SYSTEM32/MSPAINT \"".a:bmpfile.'"'
   else
 "   call Dret("NetrwFileHandler_bmp 0")
    return 0
@@ -123,84 +149,109 @@
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_pdf: visualize pdf files
+" NetrwFileHandler_pdf: visualize pdf files {{{1
 fun! NetrwFileHandler_pdf(pdf)
-  " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
+"  " call Dfunc("NetrwFileHandler_pdf(pdf<".a:pdf.">)")
   if executable("gs")
    exe "silent! !gs ".a:pdf
   else
-   " call Dret("NetrwFileHandler_pdf 0")
+"   " call Dret("NetrwFileHandler_pdf 0")
    return 0
   endif
 
-  " call Dret("NetrwFileHandler_pdf 1")
+"  " call Dret("NetrwFileHandler_pdf 1")
   return 1
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_sxw: visualize sxw files
+" NetrwFileHandler_sxw: visualize sxw files {{{1
 fun! NetrwFileHandler_sxw(sxw)
-  " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
+"  " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
   if executable("gs")
    exe "silent! !gs ".a:sxw
   else
-   " call Dret("NetrwFileHandler_sxw 0")
+"   " call Dret("NetrwFileHandler_sxw 0")
    return 0
   endif
 
-  " call Dret("NetrwFileHandler_sxw 1")
+"  " call Dret("NetrwFileHandler_sxw 1")
   return 1
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_doc: visualize doc files
+" NetrwFileHandler_doc: visualize doc files {{{1
 fun! NetrwFileHandler_doc(doc)
-  " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
+"  " call Dfunc("NetrwFileHandler_doc(doc<".a:doc.">)")
 
   if executable("oowriter")
    exe "silent! !oowriter ".a:doc
    redraw!
   else
-   " call Dret("NetrwFileHandler_doc 0")
+"   " call Dret("NetrwFileHandler_doc 0")
    return 0
   endif
 
-  " call Dret("NetrwFileHandler_doc 1")
+"  " call Dret("NetrwFileHandler_doc 1")
   return 1
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_sxw: visualize sxw files
+" NetrwFileHandler_sxw: visualize sxw files {{{1
 fun! NetrwFileHandler_sxw(sxw)
-  " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
+"  " call Dfunc("NetrwFileHandler_sxw(sxw<".a:sxw.">)")
 
   if executable("oowriter")
    exe "silent! !oowriter ".a:sxw
    redraw!
   else
-   " call Dret("NetrwFileHandler_sxw 0")
+"   " call Dret("NetrwFileHandler_sxw 0")
    return 0
   endif
 
-  " call Dret("NetrwFileHandler_sxw 1")
+"  " call Dret("NetrwFileHandler_sxw 1")
   return 1
 endfun
 
 " ---------------------------------------------------------------------
-" NetrwFileHandler_xls: visualize xls files
+" NetrwFileHandler_xls: visualize xls files {{{1
 fun! NetrwFileHandler_xls(xls)
-  " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
+"  " call Dfunc("NetrwFileHandler_xls(xls<".a:xls.">)")
 
   if executable("oocalc")
    exe "silent! !oocalc ".a:xls
    redraw!
   else
-   " call Dret("NetrwFileHandler_xls 0")
+"   " call Dret("NetrwFileHandler_xls 0")
    return 0
   endif
 
-  " call Dret("NetrwFileHandler_xls 1")
+"  " call Dret("NetrwFileHandler_xls 1")
   return 1
 endfun
 
 " ---------------------------------------------------------------------
+" NetrwFileHandler_ps: handles PostScript files {{{1
+fun! NetrwFileHandler_ps(ps)
+"  call Dfunc("NetrwFileHandler_ps()")
+  if executable("gs")
+   exe "silent! !gs ".a:ps
+   redraw!
+  elseif executable("ghostscript")
+   exe "silent! !ghostscript ".a:ps
+   redraw!
+  elseif executable("ghostscript")
+   exe "silent! !ghostscript ".a:ps
+   redraw!
+  elseif executable("gswin32")
+   exe "silent! !gswin32 \"".a:ps.'"'
+   redraw!
+"   call Dret("NetrwFileHandler_ps 0")
+   return 0
+  endif
+
+"  call Dret("NetrwFileHandler_ps 1")
+  return 1
+endfun
+
+" ---------------------------------------------------------------------
+"  vim: ts=4 fdm=marker
