blob: 8a51b3544034b34ef1217b6f8ca8af27d2a79642 [file] [log] [blame]
Bram Moolenaarb02cbe32010-07-11 22:38:52 +02001" Vim autoload file for the tohtml plugin.
2" Maintainer: Bram Moolenaar <Bram@vim.org>
3" Last Change: 2010 Jul 11
4"
5" Diff2HTML() added by Christian Brabandt <cb@256bit.org>
6
7func! tohtml#Convert2HTML(line1, line2)
8 if !&diff || exists("g:diff_one_file")
9 if a:line2 >= a:line1
10 let g:html_start_line = a:line1
11 let g:html_end_line = a:line2
12 else
13 let g:html_start_line = a:line2
14 let g:html_end_line = a:line1
15 endif
16 runtime syntax/2html.vim
17 else
18 let win_list = []
19 let buf_list = []
20 windo | if (&diff) | call add(win_list, winbufnr(0)) | endif
21 let save_hwf = exists("g:html_whole_filler")
22 let g:html_whole_filler = 1
23 for window in win_list
24 exe ":" . bufwinnr(window) . "wincmd w"
25 let g:html_start_line = 1
26 let g:html_end_line = line('$')
27 runtime syntax/2html.vim
28 call add(buf_list, bufnr('%'))
29 endfor
30 if !save_hwf
31 unlet g:html_whole_filler
32 endif
33 call tohtml#Diff2HTML(win_list, buf_list)
34 endif
35
36 unlet g:html_start_line
37 unlet g:html_end_line
38endfunc
39
40func! tohtml#Diff2HTML(win_list, buf_list)
41 let style = []
42 let html = []
43 call add(html, '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"')
44 call add(html, ' "http://www.w3.org/TR/html4/loose.dtd">')
45 call add(html, '<html>')
46 call add(html, '<head>')
47 call add(html, '<title>diff</title>')
48 call add(html, '<meta name="Generator" content="Vim/7.3">')
49 "call add(html, '<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">')
50 call add(html, '</head>')
51 call add(html, '<body>')
52 call add(html, '<table border="1" width="100%">')
53 "call add(html, '<font face="monospace">')
54 call add(html, '<tr>')
55 for buf in a:win_list
56 call add(html, '<th>'.bufname(buf).'</th>')
57 endfor
58 call add(html, '</tr><tr>')
59
60 for buf in a:buf_list
61 let temp = []
62 exe bufwinnr(buf) . 'wincmd w'
63
64 " Grab the style information. Some of this will be duplicated...
65 1
66 let style_start = search('^<style type="text/css">')
67 1
68 let style_end = search('^</style>')
69 if style_start > 0 && style_end > 0
70 let style += getline(style_start + 1, style_end - 1)
71 endif
72
73 " Delete those parts that are not needed so
74 " we can include the rest into the resulting table
75 1,/^<body/d_
76 $
77 ?</body>?,$d_
78 let temp = getline(1,'$')
79 " undo deletion of start and end part
80 " so we can later save the file as valid html
81 normal 2u
82 call add(html, '<td nowrap valign="top">')
83 let html += temp
84 call add(html, '</td>')
85
86 " Close this buffer
87 quit!
88 endfor
89
90 call add(html, '</tr>')
91 call add(html, '</table>')
92 call add(html, '</body>')
93 call add(html, '</html>')
94
95 let i = 1
96 let name = "Diff" . ".html"
97 while filereadable(name)
98 let name = substitute(name, '\d*\.html$', '', '') . i . ".html"
99 let i += 1
100 endw
101 exe "new " . name
102 set modifiable
103 call append(0, html)
104 if len(style) > 0
105 1
106 let style_start = search('^</head>')
107 call append(style_start, '</style>')
108 call append(style_start, style)
109 call append(style_start, '<style type="text/css">')
110 endif
111endfunc