--- /usr/share/vim/vim73/syntax/2html.vim	2010-08-28 18:59:26.000000000 +0000
+++ /home/andy/.vim/syntax/2html.vim	2010-08-31 04:34:00.000000000 +0000
@@ -33,6 +33,13 @@

 let s:settings = tohtml#GetUserSettings()

+" Whitespace
+if &wrap
+  let s:whitespace = "white-space: pre-wrap; "
+else
+  let s:whitespace = ""
+endif
+
 " When not in gui we can only guess the colors.
 if has("gui_running")
   let s:whatterm = "gui"
@@ -211,7 +218,6 @@
 let s:old_search = @/
 let s:old_more = &more
 set notitle noicon
-setlocal et
 set nomore
 set report=1000000
 setlocal noscrollbind
@@ -298,7 +304,7 @@
   call add(s:lines, "<meta http-equiv=\"content-type\" content=\"text/html; charset=" . s:settings.encoding . '"' . s:tag_close)
 endif
 call extend(s:lines, [
-      \ ("<title>".expand("%:p:~")."</title>"),
+      \ ("<title>".&titlestring."</title>"),
       \ ("<meta name=\"Generator\" content=\"Vim/".v:version/100.".".v:version%100.'"'.s:tag_close),
       \ ("<meta name=\"plugin-version\" content=\"".g:loaded_2html_plugin.'"'.s:tag_close)
       \ ])
@@ -408,7 +414,7 @@
 if s:settings.no_pre
   call extend(s:lines, ["</head>", "<body>"])
 else
-  call extend(s:lines, ["</head>", "<body>", "<pre>"])
+  call extend(s:lines, ["</head>", "<body><pre>"])
 endif

 exe s:orgwin . "wincmd w"
@@ -873,6 +879,7 @@
       if s:settings.ignore_conceal || !s:concealinfo[0]
 	" Expand tabs
 	let s:expandedtab = strpart(s:line, s:startcol - 1, s:col - s:startcol)
+	if &expandtab
 	let s:offset = 0
 	let s:idx = stridx(s:expandedtab, "\t")
 	while s:idx >= 0
@@ -895,6 +902,9 @@
 	  let s:expandedtab = substitute(s:expandedtab, '\t', repeat(' ', s:i), '')
 	  let s:idx = stridx(s:expandedtab, "\t")
 	endwhile
+	else
+	  setlocal isprint+=9
+	end

 	" get the highlight group name to use
 	let s:id = synIDtrans(s:id)
@@ -945,12 +955,12 @@
 if s:settings.no_pre
   if !s:settings.use_css
     " Close off the font tag that encapsulates the whole <body>
-    call extend(s:lines, ["</font>", "</body>", "</html>"])
+    call extend(s:lines, ["</font></body></html>"])
   else
-    call extend(s:lines, ["</body>", "</html>"])
+    call extend(s:lines, ["</body></html>"])
   endif
 else
-  call extend(s:lines, ["</pre>", "</body>", "</html>"])
+  call extend(s:lines, ["</pre></body></html>"])
 endif

 exe s:newwin . "wincmd w"
@@ -979,7 +989,7 @@
   if s:settings.no_pre
     execute "normal! A\nbody { color: " . s:fgc . "; background-color: " . s:bgc . "; font-family: ". s:htmlfont ."; }\e"
   else
-    execute "normal! A\npre { font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }\e"
+    execute "normal! A\npre { " . s:whitespace . "font-family: ". s:htmlfont ."; color: " . s:fgc . "; background-color: " . s:bgc . "; }\e"
     yank
     put
     execute "normal! ^cwbody\e"
@@ -1077,8 +1087,8 @@
 exec 'resize' s:old_winheight
 let &l:winfixheight = s:old_winfixheight

-call setwinvar(s:orgwin,'&stl', s:origwin_stl)
-call setwinvar(s:newwin,'&stl', s:newwin_stl)
+"call setwinvar(s:orgwin,'&stl', s:origwin_stl)
+"call setwinvar(s:newwin,'&stl', s:newwin_stl)
 let &ls=s:ls

 " Save a little bit of memory (worth doing?)