xref: /vim-8.2.3635/runtime/ftplugin/html.vim (revision f193fffd)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar" Language:	html
3071d4279SBram Moolenaar" Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
4*f193fffdSBram Moolenaar" Last Changed: 2006 Apr 26
5071d4279SBram Moolenaar" URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
6071d4279SBram Moolenaar
7071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif
8071d4279SBram Moolenaarlet b:did_ftplugin = 1
9071d4279SBram Moolenaar
10071d4279SBram Moolenaar" Make sure the continuation lines below do not cause problems in
11071d4279SBram Moolenaar" compatibility mode.
12071d4279SBram Moolenaarlet s:save_cpo = &cpo
13071d4279SBram Moolenaarset cpo-=C
14071d4279SBram Moolenaar
15071d4279SBram Moolenaarsetlocal commentstring=<!--%s-->
16071d4279SBram Moolenaar
17*f193fffdSBram Moolenaarif exists('&omnifunc')
18*f193fffdSBram Moolenaar" Distinguish between HTML versions
19*f193fffdSBram Moolenaar" To use with other HTML versions add another
20*f193fffdSBram Moolenaar" elseif condition to match proper DOCTYPE
21f75a963eSBram Moolenaarsetlocal omnifunc=htmlcomplete#CompleteTags
22f75a963eSBram Moolenaar
234a85b415SBram Moolenaarif &filetype == 'xhtml'
244a85b415SBram Moolenaar	let b:html_omni_flavor = 'xhtml10s'
254a85b415SBram Moolenaarelse
264a85b415SBram Moolenaar	let b:html_omni_flavor = 'html401t'
274a85b415SBram Moolenaarendif
284a85b415SBram Moolenaarlet i = 1
294a85b415SBram Moolenaarwhile i < 10 && i < line("$")
304a85b415SBram Moolenaar	let line = getline(i)
314a85b415SBram Moolenaar	if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
324a85b415SBram Moolenaar		let b:html_omni_flavor = 'html32'
334a85b415SBram Moolenaar		break
344a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
354a85b415SBram Moolenaar		let b:html_omni_flavor = 'html40t'
364a85b415SBram Moolenaar		break
374a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
384a85b415SBram Moolenaar		let b:html_omni_flavor = 'html40f'
394a85b415SBram Moolenaar		break
404a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
414a85b415SBram Moolenaar		let b:html_omni_flavor = 'html40s'
424a85b415SBram Moolenaar		break
434a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
444a85b415SBram Moolenaar		let b:html_omni_flavor = 'html401t'
454a85b415SBram Moolenaar		break
464a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
474a85b415SBram Moolenaar		let b:html_omni_flavor = 'html401f'
484a85b415SBram Moolenaar		break
494a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
504a85b415SBram Moolenaar		let b:html_omni_flavor = 'html401s'
514a85b415SBram Moolenaar		break
524a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
534a85b415SBram Moolenaar		let b:html_omni_flavor = 'xhtml10t'
544a85b415SBram Moolenaar		break
554a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
564a85b415SBram Moolenaar		let b:html_omni_flavor = 'xhtml10f'
574a85b415SBram Moolenaar		break
584a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
594a85b415SBram Moolenaar		let b:html_omni_flavor = 'xhtml10s'
604a85b415SBram Moolenaar		break
614a85b415SBram Moolenaar	elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
624a85b415SBram Moolenaar		let b:html_omni_flavor = 'xhtml11'
634a85b415SBram Moolenaar		break
644a85b415SBram Moolenaar	endif
654a85b415SBram Moolenaar	let i += 1
664a85b415SBram Moolenaarendwhile
67*f193fffdSBram Moolenaarendif
684a85b415SBram Moolenaar
69071d4279SBram Moolenaar" HTML:  thanks to Johannes Zellner and Benji Fisher.
70071d4279SBram Moolenaarif exists("loaded_matchit")
71071d4279SBram Moolenaar    let b:match_ignorecase = 1
72071d4279SBram Moolenaar    let b:match_skip = 's:Comment'
73071d4279SBram Moolenaar    let b:match_words = '<:>,' .
74071d4279SBram Moolenaar    \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' .
75071d4279SBram Moolenaar    \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' .
76071d4279SBram Moolenaar    \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>'
77071d4279SBram Moolenaarendif
78071d4279SBram Moolenaar
79071d4279SBram Moolenaar" Change the :browse e filter to primarily show HTML-related files.
80071d4279SBram Moolenaarif has("gui_win32")
818299df96SBram Moolenaar    let  b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" .
82071d4279SBram Moolenaar		\	"JavaScript Files (*.js)\t*.js\n" .
83071d4279SBram Moolenaar		\	"Cascading StyleSheets (*.css)\t*.css\n" .
84071d4279SBram Moolenaar		\	"All Files (*.*)\t*.*\n"
85071d4279SBram Moolenaarendif
86071d4279SBram Moolenaar
87071d4279SBram Moolenaar" Undo the stuff we changed.
88071d4279SBram Moolenaarlet b:undo_ftplugin = "setlocal commentstring<"
89071d4279SBram Moolenaar    \	" | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter"
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar" Restore the saved compatibility options.
92071d4279SBram Moolenaarlet &cpo = s:save_cpo
93