1" Vim filetype plugin file
2" Language:	html
3" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net>
4" Last Changed: 20 Jan 2009
5" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin
6
7if exists("b:did_ftplugin") | finish | endif
8let b:did_ftplugin = 1
9
10" Make sure the continuation lines below do not cause problems in
11" compatibility mode.
12let s:save_cpo = &cpo
13set cpo-=C
14
15setlocal matchpairs+=<:>
16setlocal commentstring=<!--%s-->
17setlocal comments=s:<!--,m:\ \ \ \ ,e:-->
18
19if exists("g:ft_html_autocomment") && (g:ft_html_autocomment == 1)
20    setlocal formatoptions-=t formatoptions+=croql
21endif
22
23
24if exists('&omnifunc')
25    " Distinguish between HTML versions
26    " To use with other HTML versions add another
27    " elseif condition to match proper DOCTYPE
28    setlocal omnifunc=htmlcomplete#CompleteTags
29
30    if &filetype == 'xhtml'
31            let b:html_omni_flavor = 'xhtml10s'
32    else
33            let b:html_omni_flavor = 'html401t'
34    endif
35    let i = 1
36    let line = ""
37    while i < 10 && i < line("$")
38        let line = getline(i)
39        if line =~ '<!DOCTYPE.*\<DTD '
40            break
41        endif
42        let i += 1
43    endwhile
44    if line =~ '<!DOCTYPE.*\<DTD '  " doctype line found above
45        if line =~ ' HTML 3\.2'
46            let b:html_omni_flavor = 'html32'
47        elseif line =~ ' XHTML 1\.1'
48            let b:html_omni_flavor = 'xhtml11'
49        else    " two-step detection with strict/frameset/transitional
50            if line =~ ' XHTML 1\.0'
51                let b:html_omni_flavor = 'xhtml10'
52            elseif line =~ ' HTML 4\.01'
53                let b:html_omni_flavor = 'html401'
54            elseif line =~ ' HTML 4.0\>'
55                let b:html_omni_flavor = 'html40'
56            endif
57            if line =~ '\<Transitional\>'
58                let b:html_omni_flavor .= 't'
59            elseif line =~ '\<Frameset\>'
60                let b:html_omni_flavor .= 'f'
61            else
62                let b:html_omni_flavor .= 's'
63            endif
64        endif
65    endif
66endif
67
68" HTML:  thanks to Johannes Zellner and Benji Fisher.
69if exists("loaded_matchit")
70    let b:match_ignorecase = 1
71    let b:match_words = '<:>,' .
72    \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
73    \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
74    \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
75endif
76
77" Change the :browse e filter to primarily show HTML-related files.
78if has("gui_win32")
79    let  b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" .
80		\	"JavaScript Files (*.js)\t*.js\n" .
81		\	"Cascading StyleSheets (*.css)\t*.css\n" .
82		\	"All Files (*.*)\t*.*\n"
83endif
84
85" Undo the stuff we changed.
86let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc< comments< formatoptions<" .
87    \	" | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter"
88
89" Restore the saved compatibility options.
90let &cpo = s:save_cpo
91