Updated runtime files.  :TOhtml improvements by Benjamin Fritz.
diff --git a/runtime/autoload/tohtml.vim b/runtime/autoload/tohtml.vim
index 620c9c3..55399a7 100644
--- a/runtime/autoload/tohtml.vim
+++ b/runtime/autoload/tohtml.vim
@@ -1,6 +1,6 @@
 " Vim autoload file for the tohtml plugin.
 " Maintainer: Ben Fritz <fritzophrenic@gmail.com>
-" Last Change: 2010 July 24
+" Last Change: 2010 Jul 29
 "
 " Additional contributors:
 "
@@ -39,7 +39,6 @@
       let g:html_diff_win_num += 1
       runtime syntax/2html.vim
       call add(buf_list, bufnr('%'))
-      "exec '%s#<span id=''\zsfold\d\+\ze''#win'.win_num.'\0#ge'
     endfor
     unlet g:html_diff_win_num
     if !save_hwf
@@ -56,7 +55,9 @@
 
 func! tohtml#Diff2HTML(win_list, buf_list)
   " TODO: add logic for xhtml
-  let style = []
+  let style = ['-->']
+  let body_line = ''
+
   let html = []
   call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
   call add(html, '  "http://www.w3.org/TR/html4/loose.dtd">')
@@ -69,6 +70,7 @@
   " validate without warnings about encoding
 
   call add(html, '</head>')
+  let body_line_num = len(html)
   call add(html, '<body>')
   call add(html, '<table border="1" width="100%">')
 
@@ -78,6 +80,9 @@
   endfor
   call add(html, '</tr><tr>')
 
+  let diff_style_start = 0
+  let insert_index = 0
+
   for buf in a:buf_list
     let temp = []
     exe bufwinnr(buf) . 'wincmd w'
@@ -86,13 +91,40 @@
     " to act on everything in a fold by mistake.
     setlocal nofoldenable
 
+    " When not using CSS or when using xhtml, the <body> line can be important.
+    " Assume it will be the same for all buffers and grab it from the first
+    " buffer. Similarly, need to grab the body end line as well.
+    if body_line == ''
+      1
+      call search('<body')
+      let body_line = getline('.')
+      $
+      call search('</body>', 'b')
+      let s:body_end_line = getline('.')
+    endif
+
     " Grab the style information.  Some of this will be duplicated...
     1
     let style_start = search('^<style type="text/css">')
     1
     let style_end = search('^</style>')
     if style_start > 0 && style_end > 0
-      let style += getline(style_start + 1, style_end - 1)
+      let buf_styles = getline(style_start + 1, style_end - 1)
+      for a_style in buf_styles
+	if index(style, a_style) == -1
+	  if diff_style_start == 0
+	    if a_style =~ '\<Diff\(Change\|Text\|Add\|Delete\)'
+	      let diff_style_start = len(style)-1
+	    endif
+	  endif
+	  call insert(style, a_style, insert_index)
+	  let insert_index += 1
+	endif
+      endfor
+    endif
+
+    if diff_style_start != 0
+      let insert_index = diff_style_start
     endif
 
     " Delete those parts that are not needed so
@@ -115,9 +147,11 @@
     quit!
   endfor
 
+  let html[body_line_num] = body_line
+
   call add(html, '</tr>')
   call add(html, '</table>')
-  call add(html, '</body>')
+  call add(html, s:body_end_line)
   call add(html, '</html>')
 
   let i = 1