diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index a16d155779f2fba98a6144b16cbb4755e50106de..61d2a09d9b3d13b05076ba4ea11b5c116f0e4162 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -160,8 +160,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
 		unlet! b:entitiescompl
 
 		if !exists("g:xmldata_xhtml10s")
-			"runtime! autoload/xml/xhtml10s.vim
-			call htmlcomplete#LoadData()
+			runtime! autoload/xml/xhtml10s.vim
+			"call htmlcomplete#LoadData()
 		endif
 
 	    let entities =  g:xmldata_xhtml10s['vimxmlentities']
@@ -519,8 +519,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
 
 		" Load data {{{
 		if !exists("g:xmldata_xhtml10s")
-			"runtime! autoload/xml/xhtml10s.vim
-			call htmlcomplete#LoadData()
+			runtime! autoload/xml/xhtml10s.vim
+			"call htmlcomplete#LoadData()
 		endif
 		" }}}
 		"
@@ -570,8 +570,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
 	endif
 	" Load data {{{
 	if !exists("g:xmldata_xhtml10s")
-		"runtime! autoload/xml/xhtml10s.vim
-		call htmlcomplete#LoadData()
+		runtime! autoload/xml/xhtml10s.vim
+		"call htmlcomplete#LoadData()
 	endif
 	" }}}
 	" Tag completion {{{
@@ -621,4054 +621,4 @@ function! htmlcomplete#CompleteTags(findstart, base)
 	" }}}
   endif
 endfunction
-" HTML context data
-function! htmlcomplete#LoadData() " {{{
-let g:xmldata_xhtml10s = {
-\ 'vimxmlentities' : ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"],
-\ 'vimxmlattrinfo' : {
-\ 'accept' : ['ContentType', ''],
-\ 'accesskey' : ['Character', ''],
-\ 'action' : ['*URI', ''],
-\ 'align' : ['String', ''],
-\ 'alt' : ['*Text', ''],
-\ 'archive' : ['UriList', ''],
-\ 'axis' : ['CDATA', ''],
-\ 'border' : ['Pixels', ''],
-\ 'cellpadding' : ['Length', ''],
-\ 'cellspacing' : ['Length', ''],
-\ 'char' : ['Character', ''],
-\ 'charoff' : ['Length', ''],
-\ 'charset' : ['LangCode', ''],
-\ 'checked' : ['Bool', ''],
-\ 'class' : ['CDATA', ''],
-\ 'codetype' : ['ContentType', ''],
-\ 'cols' : ['*Number', ''],
-\ 'colspan' : ['Number', ''],
-\ 'content' : ['*CDATA', ''],
-\ 'coords' : ['Coords', ''],
-\ 'data' : ['URI', ''],
-\ 'datetime' : ['DateTime', ''],
-\ 'declare' : ['Bool', ''],
-\ 'defer' : ['Bool', ''],
-\ 'dir' : ['String', ''],
-\ 'disabled' : ['Bool', ''],
-\ 'enctype' : ['ContentType', ''],
-\ 'for' : ['ID', ''],
-\ 'headers' : ['IDREFS', ''],
-\ 'height' : ['Number', ''],
-\ 'href' : ['*URI', ''],
-\ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
-\ 'ismap' : ['Bool', ''],
-\ 'label' : ['*Text', ''],
-\ 'lang' : ['LangCode', ''],
-\ 'longdesc' : ['URI', ''],
-\ 'maxlength' : ['Number', ''],
-\ 'media' : ['MediaDesc', ''],
-\ 'method' : ['String', ''],
-\ 'multiple' : ['Bool', ''],
-\ 'name' : ['CDATA', ''],
-\ 'nohref' : ['Bool', ''],
-\ 'onblur' : ['Script', ''],
-\ 'onchange' : ['Script', ''],
-\ 'onclick' : ['Script', ''],
-\ 'ondblclick' : ['Script', ''],
-\ 'onfocus' : ['Script', ''],
-\ 'onkeydown' : ['Script', ''],
-\ 'onkeypress' : ['Script', ''],
-\ 'onkeyup' : ['Script', ''],
-\ 'onload' : ['Script', ''],
-\ 'onmousedown' : ['Script', ''],
-\ 'onmousemove' : ['Script', ''],
-\ 'onmouseout' : ['Script', ''],
-\ 'onmouseover' : ['Script', ''],
-\ 'onmouseup' : ['Script', ''],
-\ 'onreset' : ['Script', ''],
-\ 'onselect' : ['Script', ''],
-\ 'onsubmit' : ['Script', ''],
-\ 'onunload' : ['Script', ''],
-\ 'profile' : ['URI', ''],
-\ 'readonly' : ['Bool', ''],
-\ 'rel' : ['LinkTypes', ''],
-\ 'rev' : ['LinkTypes', ''],
-\ 'rows' : ['*Number', ''],
-\ 'rules' : ['String', ''],
-\ 'scheme' : ['CDATA', ''],
-\ 'selected' : ['Bool', ''],
-\ 'shape' : ['Shape', ''],
-\ 'size' : ['CDATA', ''],
-\ 'span' : ['Number', ''],
-\ 'src' : ['*URI', ''],
-\ 'standby' : ['Text', ''],
-\ 'style' : ['StyleSheet', ''],
-\ 'summary' : ['*Text', ''],
-\ 'tabindex' : ['Number', ''],
-\ 'title' : ['Text', ''],
-\ 'type' : ['*ContentType', ''],
-\ 'usemap' : ['URI', ''],
-\ 'valign' : ['String', ''],
-\ 'valuetype' : ['String', ''],
-\ 'width' : ['Number', ''],
-\ 'xmlns' : ['URI', '']
-\ },
-\ 'vimxmltaginfo' : {
-\ 'base' : ['/>', ''],
-\ 'meta' : ['/>', ''],
-\ 'link' : ['/>', ''],
-\ 'img' : ['/>', ''],
-\ 'hr' : ['/>', ''],
-\ 'br' : ['/>', ''],
-\ 'param' : ['/>', ''],
-\ 'area' : ['/>', ''],
-\ 'input' : ['/>', ''],
-\ 'col' : ['/>', '']
-\ },
-\ 'tr' : [
-\ [
-\ 'th',
-\ 'td'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'input' : [[],
-\ {
-\ 'ondblclick' : [],
-\ 'onchange' : [],
-\ 'readonly' : [
-\  'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'src' : [],
-\ 'value' : [],
-\ 'name' : [],
-\ 'checked' : [
-\ 'BOOL'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'type' : [
-\ 'text',
-\ 'password',
-\ 'checkbox',
-\ 'radio',
-\ 'submit',
-\ 'reset',
-\ 'file',
-\ 'hidden',
-\ 'image',
-\ 'button'
-\ ],
-\ 'accesskey' : [],
-\ 'disabled' : [
-\  'BOOL'
-\ ],
-\ 'usemap' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'size' : [],
-\ 'onblur' : [],
-\ 'onfocus' : [],
-\ 'maxlength' : [],
-\ 'onselect' : [],
-\ 'accept' : [],
-\ 'alt' : [],
-\ 'tabindex' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'xml:lang' : []
-\ }
-\ ],
-\ 'table' : [
-\ [
-\ 'caption',
-\ 'col',
-\ 'colgroup',
-\ 'thead',
-\ 'tfoot',
-\ 'tbody',
-\ 'tr'
-\ ],
-\ {
-\ 'width' : [],
-\ 'frame' : [
-\ 'void',
-\ 'above',
-\ 'below',
-\ 'hsides',
-\ 'lhs',
-\ 'rhs',
-\ 'vsides',
-\ 'box',
-\ 'border'
-\ ],
-\ 'ondblclick' : [],
-\ 'rules' : [
-\ 'none',
-\ 'groups',
-\ 'rows',
-\ 'cols',
-\ 'all'
-\ ],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'summary' : [],
-\ 'onkeyup' : [],
-\ 'cellspacing' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'border' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'cellpadding' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'form' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onsubmit' : [],
-\ 'enctype' : [
-\ '',
-\ 'application/x-www-form-urlencoded',
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onreset' : [],
-\ 'onmouseup' : [],
-\ 'method' : [
-\ 'get',
-\ 'post'
-\ ],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'accept' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'accept-charset' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'action' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'h5' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'meta' : [[],
-\ {
-\ 'http-equiv' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'scheme' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'map' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript',
-\ 'area'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'style' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'tfoot' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'caption' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'code' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'base' : [[],
-\ {
-\ 'href' : []
-\ }
-\ ],
-\ 'br' : [[],
-\ {
-\ 'style' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'id' : []
-\ }
-\ ],
-\ 'acronym' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'strong' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h4' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'em' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'b' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'q' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'cite' : []
-\ }
-\ ],
-\ 'span' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'title' : [
-\ {
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'small' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'area' : [[],
-\ {
-\ 'accesskey' : [],
-\ 'coords' : [],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'nohref' : [
-\ 'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'alt' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'shape' : [
-\ 'rect',
-\ 'circle',
-\ 'poly',
-\ 'default'
-\ ]
-\ }
-\ ],
-\ 'body' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onunload' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onload' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'ol' : [
-\ [
-\ 'li'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'html' : [
-\ [
-\ 'head',
-\ 'body'
-\ ],
-\ {
-\ 'xmlns' : [
-\ 'http://www.w3.org/1999/xhtml',
-\ ],
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'var' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'ul' : [
-\ [
-\ 'li'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'del' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'datetime' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'cite' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'blockquote' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\  'ltr',
-\  'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : [],
-\ 'cite' : []
-\ }
-\ ],
-\ 'style' : [[],
-\ {
-\ 'lang' : [],
-\ 'media' : [],
-\ 'title' : [],
-\ 'type' : [],
-\ 'xml:space' : [
-\ 'preserve'
-\ ],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'dfn' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h3' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'textarea' : [[], 
-\ {
-\ 'accesskey' : [],
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'rows' : [],
-\ 'onblur' : [],
-\ 'cols' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onchange' : [],
-\ 'onfocus' : [],
-\ 'readonly' : [
-\ 'BOOL'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onselect' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'a' : [
-\ [
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'rel' : [],
-\ 'coords' : [],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'name' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'charset' : [],
-\ 'hreflang' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'rev' : [],
-\ 'shape' : [
-\ 'rect',
-\ 'circle',
-\ 'poly',
-\ 'default'
-\ ],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'img' : [[],
-\ {
-\ 'width' : [],
-\ 'ismap' : [
-\ 'BOOL'
-\ ],
-\ 'usemap' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'alt' : [],
-\ 'longdesc' : [],
-\ 'src' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'height' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'tt' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'thead' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'abbr' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'h6' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'sup' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'address' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'param' : [[],
-\ {
-\ 'value' : [],
-\ 'name' : [],
-\ 'type' : [],
-\ 'valuetype' : [
-\ 'data',
-\ 'ref',
-\ 'object'
-\ ],
-\ 'id' : []
-\ }
-\ ],
-\ 'th' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'headers' : [],
-\ 'ondblclick' : [],
-\ 'axis' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'abbr' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'h1' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'head' : [
-\ [
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'title',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'base',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'base',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object',
-\ 'title',
-\ 'script',
-\ 'style',
-\ 'meta',
-\ 'link',
-\ 'object'
-\ ],
-\ {
-\ 'profile' : [],
-\ 'lang' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ]
-\ }
-\ ],
-\ 'tbody' : [
-\ [
-\ 'tr'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'align' : [
-\ 'left',
-\ 'center',
-\ 'right',
-\ 'justify',
-\ 'char'
-\ ],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'legend' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'dd' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'hr' : [[],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'li' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'td' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'headers' : [],
-\ 'ondblclick' : [],
-\ 'axis' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'abbr' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'label' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'for' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'dl' : [
-\ [
-\ 'dt',
-\ 'dd'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'kbd' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'div' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'object' : [
-\ [
-\ 'param',
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'width' : [],
-\ 'usemap' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'standby' : [],
-\ 'archive' : [],
-\ 'lang' : [],
-\ 'classid' : [],
-\ 'name' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'data' : [],
-\ 'height' : [],
-\ 'xml:lang' : [],
-\ 'codetype' : [],
-\ 'declare' : [
-\  'BOOL'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'codebase' : []
-\ }
-\ ],
-\ 'dt' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'pre' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'xml:space' : [
-\ 'preserve'
-\ ],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'samp' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'col' : [[],
-\ {
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'value' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'label' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'selected' : [
-\ 'BOOL'
-\ ]
-\ }
-\ ],
-\ 'cite' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'i' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'select' : [
-\ [
-\ 'optgroup',
-\ 'option'
-\ ],
-\ {
-\ 'disabled' : [
-\ 'BOOL'
-\ ],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'size' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onchange' : [],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'multiple' : [
-\ 'multiple'
-\ ],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'link' : [[],
-\ {
-\ 'rel' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'media' : [],
-\ 'href' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'charset' : [],
-\ 'hreflang' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'rev' : [],
-\ 'type' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'script' : [[],
-\ {
-\ 'defer' : [
-\ 'BOOL'
-\ ],
-\ 'src' : [],
-\ 'type' : [],
-\ 'charset' : [],
-\ 'xml:space' : [
-\  'preserve'
-\  ]
-\ }
-\ ],
-\ 'bdo' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'colgroup' : [
-\ [
-\ 'col'
-\ ],
-\ {
-\ 'width' : [],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'charoff' : [],
-\ 'onmouseover' : [],
-\ 'align' : [
-\  'left',
-\  'center',
-\  'right',
-\  'justify',
-\  'char'
-\ ],
-\ 'lang' : [],
-\ 'valign' : [
-\ 'top',
-\ 'middle',
-\ 'bottom',
-\ 'baseline'
-\ ],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'char' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : [],
-\ 'span' : [
-\ '',
-\ '1',
-\ ]
-\ }
-\ ],
-\ 'h2' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'ins' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'ondblclick' : [],
-\ 'datetime' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'cite' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'p' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'sub' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'big' : [
-\ [
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'fieldset' : [
-\ [
-\ 'legend',
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'a',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'input',
-\ 'select',
-\ 'textarea',
-\ 'label',
-\ 'button',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'noscript' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'fieldset',
-\ 'table',
-\ 'form',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'onmouseout' : [],
-\ 'onmousemove' : [],
-\ 'style' : [],
-\ 'ondblclick' : [],
-\ 'xml:lang' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onkeypress' : [],
-\ 'onmousedown' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'class' : [],
-\ 'title' : [],
-\ 'onclick' : []
-\ }
-\ ],
-\ 'button' : [
-\ [
-\ 'p',
-\ 'h1',
-\ 'h2',
-\ 'h3',
-\ 'h4',
-\ 'h5',
-\ 'h6',
-\ 'div',
-\ 'ul',
-\ 'ol',
-\ 'dl',
-\ 'pre',
-\ 'hr',
-\ 'blockquote',
-\ 'address',
-\ 'table',
-\ 'br',
-\ 'span',
-\ 'bdo',
-\ 'object',
-\ 'img',
-\ 'map',
-\ 'tt',
-\ 'i',
-\ 'b',
-\ 'big',
-\ 'small',
-\ 'em',
-\ 'strong',
-\ 'dfn',
-\ 'code',
-\ 'q',
-\ 'sub',
-\ 'sup',
-\ 'samp',
-\ 'kbd',
-\ 'var',
-\ 'cite',
-\ 'abbr',
-\ 'acronym',
-\ 'ins',
-\ 'del',
-\ 'script',
-\ 'noscript'
-\ ],
-\ {
-\ 'accesskey' : [],
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'onblur' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onfocus' : [],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'tabindex' : [],
-\ 'lang' : [],
-\ 'value' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'name' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'type' : [
-\ 'button',
-\ 'submit',
-\ 'reset'
-\ ],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ],
-\ 'optgroup' : [
-\ [
-\ 'option'
-\ ],
-\ {
-\ 'disabled' : [
-\ 'disabled'
-\ ],
-\ 'ondblclick' : [],
-\ 'dir' : [
-\ 'ltr',
-\ 'rtl'
-\ ],
-\ 'onkeydown' : [],
-\ 'onkeyup' : [],
-\ 'onmouseup' : [],
-\ 'id' : [],
-\ 'onmouseover' : [],
-\ 'lang' : [],
-\ 'style' : [],
-\ 'onmousemove' : [],
-\ 'onmouseout' : [],
-\ 'xml:lang' : [],
-\ 'onmousedown' : [],
-\ 'onkeypress' : [],
-\ 'label' : [],
-\ 'onclick' : [],
-\ 'title' : [],
-\ 'class' : []
-\ }
-\ ]
-\ }
-endfunction
-" }}}
 " vim:set foldmethod=marker:
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 1a865fabe541260c5d6ddf850fb0e1f866f37728..79abec5947ed12821a00c22e8fb323d29b2bac35 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Apr 12, 2006
-" Version:	87
+" Date:		Apr 14, 2006
+" Version:	88
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v87"
+let g:loaded_netrw = "v88"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -929,7 +929,7 @@ fun! netrw#NetWrite(...) range
    ".........................................
    " ftp + <.netrc>: NetWrite Method #2 {{{3
    elseif b:netrw_method == 2
-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+    let netrw_fname= b:netrw_fname
     new
     setlocal ff=unix
     exe "put ='".g:netrw_ftpmode."'"
@@ -957,7 +957,7 @@ fun! netrw#NetWrite(...) range
    ".........................................
    " ftp + machine, id, passwd, filename: NetWrite Method #3 {{{3
    elseif b:netrw_method == 3
-    let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+    let netrw_fname= b:netrw_fname
     new
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
@@ -1408,7 +1408,7 @@ fun! s:NetBrowse(dirname)
 
   " set up syntax highlighting
   if has("syntax")
-   setlocal ft=netrwlist
+   setlocal ft=netrw
    if !exists("g:syntax_on") || !g:syntax_on
     setlocal ft=
     " Ugly workaround -- when syntax highlighting is off and laststatus==2,
@@ -1923,8 +1923,8 @@ endfun
 "  This function assumes that a long listing will be received.  Size, time,
 "  and reverse sorts will be requested of the server but not otherwise
 "  enforced here.
-fun! s:NetBrowseFtpCmd(path,cmd)
-"  call Dfunc("NetBrowseFtpCmd(path<".a:path."> cmd<".a:cmd.">) netrw_method=".w:netrw_method)
+fun! s:NetBrowseFtpCmd(path,listcmd)
+"  call Dfunc("NetBrowseFtpCmd(path<".a:path."> listcmd<".a:listcmd.">) netrw_method=".w:netrw_method)
 
   " because WinXX ftp uses unix style input
   " curline is one more than the bannercnt in order to account
@@ -1942,7 +1942,7 @@ fun! s:NetBrowseFtpCmd(path,cmd)
     put ='cd \"'.a:path.'\"'
 "    call Decho('ftp:  '.getline("."))
    endif
-   exe "put ='".a:cmd."'"
+   exe "put ='".a:listcmd."'"
 "   call Decho("ftp:  ".getline("."))
 "    redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
    if exists("g:netrw_port") && g:netrw_port != ""
@@ -1973,7 +1973,7 @@ fun! s:NetBrowseFtpCmd(path,cmd)
    if a:path != ""
     put ='cd \"'.a:path.'\"'
    endif
-   exe "put ='".a:cmd."'"
+   exe "put ='".a:listcmd."'"
 
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
@@ -1991,7 +1991,7 @@ fun! s:NetBrowseFtpCmd(path,cmd)
   if has("win32") || has("win95") || has("win64") || has("win16")
    silent! keepjumps! %s/\r$//e
   endif
-  if a:cmd == "dir"
+  if a:listcmd == "dir"
    " infer directory/link based on the file permission string
    silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
    silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
@@ -2137,9 +2137,9 @@ endfun
 " ---------------------------------------------------------------------
 " NetrwWideListing: {{{2
 fun! s:NetrwWideListing()
-"  call Dfunc("NetrwWideListing() w:netrw_longlist=".w:netrw_longlist)
 
   if w:netrw_longlist == 2
+"   call Dfunc("NetrwWideListing() w:netrw_longlist=".w:netrw_longlist)
    " look for longest filename (cpf=characters per filename)
    " cpf: characters per file
    " fpl: files per line
@@ -2182,9 +2182,9 @@ fun! s:NetrwWideListing()
    endwhile
    exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
    setlocal noma nomod
+"   call Dret("NetrwWideListing")
   endif
 
-"  call Dret("NetrwWideListing")
 endfun
 
 " ---------------------------------------------------------------------
@@ -2650,6 +2650,10 @@ endfun
 " NetMenu: generates the menu for gvim and netrw {{{2
 fun! s:NetMenu(domenu)
 
+  if !exists("g:NetrwMenuPriority")
+   let g:NetrwMenuPriority= 80
+  endif
+
   if has("menu") && has("gui_running") && &go =~ 'm'
 "   call Dfunc("NetMenu(domenu=".a:domenu.")")
    if !exists("s:netrw_menu_enabled") && a:domenu
@@ -2658,32 +2662,32 @@ fun! s:NetMenu(domenu)
     if !exists("g:NetrwTopLvlMenu")
      let g:NetrwTopLvlMenu= "Netrw."
     endif
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>b	Nb'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>B	NB'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u	u'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U	U'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<c-h>"
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr>	'."\<cr>"
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o	o'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v	v'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q	q'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i	i'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a	a'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O	O'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p	p'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P	P'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r	r"
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s	s'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S	S'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
-    exe 'silent! menu '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Help<tab><F1>	<F1>'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Apply\ Special\ Viewer<tab>x	x'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Bookmark\ Current\ Directory<tab>b	Nb'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Go\ Up\ Directory<tab>-	-'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Goto\ Bookmarked\ Directory<tab>B	NB'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Change\ To\ Recently\ Used\ Directory<tab>u	u'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Change\ To\ Subsequently\ Used\ Directory<tab>U	U'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Delete\ File/Directory<tab>D	D'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File\ Hiding\ List<tab>'."<ctrl-h>	\<c-h>"
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory<tab><cr>	'."\<cr>"
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Window<tab>o	o'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Edit\ File/Directory,\ New\ Vertical\ Window<tab>v	v'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'List\ Bookmarks\ and\ History<tab>q	q'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Listing\ Style\ (thin-long-wide)<tab>i	i'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Make\ Subdirectory<tab>d	d'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Normal-Hide-Show<tab>a	a'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Obtain\ File<tab>O	O'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Preview\ File/Directory<tab>p	p'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Previous\ Window\ Browser<tab>P	P'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Refresh\ Listing<tab>'."<ctrl-l>	\<c-l>"
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Rename\ File/Directory<tab>R	R'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Reverse\ Sorting\ Order<tab>'."r	r"
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Select\ Sorting\ Style<tab>s	s'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Sorting\ Sequence\ Edit<tab>S	S'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Set\ Current\ Directory<tab>c	c'
+    exe 'silent! '.g:NetrwMenuPriority.'menu '.g:NetrwTopLvlMenu.'Settings/Options<tab>:NetrwSettings	'.":NetrwSettings\<cr>"
    elseif !a:domenu
     let s:netrwcnt = 0
     let curwin     = winnr()
@@ -2972,7 +2976,7 @@ fun! netrw#DirBrowse(dirname)
 
   " set up syntax highlighting
   if has("syntax")
-   setlocal ft=netrwlist
+   setlocal ft=netrw
    if !exists("g:syntax_on") || !g:syntax_on
     setlocal ft=
    endif
diff --git a/runtime/autoload/xml/xhtml10s.vim b/runtime/autoload/xml/xhtml10s.vim
index 503201380c77402abd000d3e6bc7c1201e015a59..1d15cef15354ea5b2bbcfce605a14c8105813aaa 100644
--- a/runtime/autoload/xml/xhtml10s.vim
+++ b/runtime/autoload/xml/xhtml10s.vim
@@ -1,3 +1,5 @@
+" HTML context data
+"function! htmlcomplete#LoadData() " {{{
 let g:xmldata_xhtml10s = {
 \ 'vimxmlentities' : ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"],
 \ 'vimxmlattrinfo' : {
@@ -15,7 +17,7 @@ let g:xmldata_xhtml10s = {
 \ 'charoff' : ['Length', ''],
 \ 'charset' : ['LangCode', ''],
 \ 'checked' : ['Bool', ''],
-\ 'class' : ['CDATA', 'Name of class, used for connecting element with style'],
+\ 'class' : ['CDATA', ''],
 \ 'codetype' : ['ContentType', ''],
 \ 'cols' : ['*Number', ''],
 \ 'colspan' : ['Number', ''],
@@ -4044,3 +4046,6 @@ let g:xmldata_xhtml10s = {
 \ }
 \ ]
 \ }
+"endfunction
+" }}}
+" vim:set foldmethod=marker:
diff --git a/runtime/colors/delek.vim b/runtime/colors/delek.vim
index ac7065095d4b64e97a6058e10489546c9d6e8313..6812b9093d79953f9b8c3fafd427073becc44392 100644
--- a/runtime/colors/delek.vim
+++ b/runtime/colors/delek.vim
@@ -1,57 +1,51 @@
 " Vim color file
 " Maintainer:	David Schweikert <dws@ee.ethz.ch>
-" Last Change:	2004 May 16
+" Last Change:	2006 Apr 14
 
-" First remove all existing highlighting.
 hi clear
 
 let colors_name = "delek"
 
-hi Normal guifg=Black guibg=white
-
-" Groups used in the 'highlight' and 'guicursor' options default value.
-hi ErrorMsg term=standout ctermbg=DarkRed ctermfg=White guibg=Red guifg=White
-hi IncSearch term=reverse cterm=reverse gui=reverse
-hi ModeMsg term=bold cterm=bold gui=bold
-hi VertSplit term=reverse cterm=reverse gui=reverse
-hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
-hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
-hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
-hi Cursor guibg=Green guifg=NONE
-hi lCursor guibg=Cyan guifg=NONE
-hi Directory term=bold ctermfg=DarkBlue guifg=Blue
-hi LineNr term=underline ctermfg=Brown guifg=Brown
-hi MoreMsg term=bold ctermfg=DarkGreen gui=bold guifg=SeaGreen
-hi Question term=standout ctermfg=DarkGreen gui=bold guifg=SeaGreen
-hi Search term=reverse ctermbg=Yellow ctermfg=NONE guibg=Yellow guifg=NONE
-hi SpecialKey term=bold ctermfg=DarkBlue guifg=Blue
-hi Title term=bold ctermfg=DarkMagenta gui=bold guifg=Magenta
-hi WarningMsg term=standout ctermfg=DarkRed guifg=Red
-hi WildMenu term=standout ctermbg=Yellow ctermfg=Black guibg=Yellow guifg=Black
-hi Folded term=standout ctermbg=Grey ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
-hi FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkBlue
-hi DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue
-hi DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta
-hi DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
-
-hi StatusLine	cterm=bold ctermbg=blue ctermfg=yellow guibg=gold guifg=blue
-hi StatusLineNC	cterm=bold ctermbg=blue ctermfg=black  guibg=gold guifg=blue
-hi NonText term=bold ctermfg=Blue gui=bold guifg=gray guibg=white
-hi Cursor guibg=fg guifg=bg
+" Normal should come first
+hi Normal     guifg=Black  guibg=White
+hi Cursor     guifg=bg     guibg=fg
+hi lCursor    guifg=NONE   guibg=Cyan
+
+" Note: we never set 'term' because the defaults for B&W terminals are OK
+hi DiffAdd    ctermbg=LightBlue    guibg=LightBlue
+hi DiffChange ctermbg=LightMagenta guibg=LightMagenta
+hi DiffDelete ctermfg=Blue         ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
+hi DiffText   ctermbg=Red          cterm=bold gui=bold guibg=Red
+hi Directory  ctermfg=DarkBlue     guifg=Blue
+hi ErrorMsg   ctermfg=White        ctermbg=DarkRed  guibg=Red       guifg=White
+hi FoldColumn ctermfg=DarkBlue     ctermbg=Grey     guibg=Grey      guifg=DarkBlue
+hi Folded     ctermbg=Grey         ctermfg=DarkBlue guibg=LightGrey guifg=DarkBlue
+hi IncSearch  cterm=reverse        gui=reverse
+hi LineNr     ctermfg=Brown        guifg=Brown
+hi ModeMsg    cterm=bold           gui=bold
+hi MoreMsg    ctermfg=DarkGreen    gui=bold guifg=SeaGreen
+hi NonText    ctermfg=Blue         gui=bold guifg=gray guibg=white
+hi Pmenu      guibg=LightBlue
+hi PmenuSel   ctermfg=White        ctermbg=DarkBlue  guifg=White  guibg=DarkBlue
+hi Question   ctermfg=DarkGreen    gui=bold guifg=SeaGreen
+hi Search     ctermfg=NONE         ctermbg=Yellow guibg=Yellow guifg=NONE
+hi SpecialKey ctermfg=DarkBlue     guifg=Blue
+hi StatusLine cterm=bold           ctermbg=blue ctermfg=yellow guibg=gold guifg=blue
+hi StatusLineNC	cterm=bold         ctermbg=blue ctermfg=black  guibg=gold guifg=blue
+hi Title      ctermfg=DarkMagenta  gui=bold guifg=Magenta
+hi VertSplit  cterm=reverse        gui=reverse
+hi Visual     ctermbg=NONE         cterm=reverse gui=reverse guifg=Grey guibg=fg
+hi VisualNOS  cterm=underline,bold gui=underline,bold
+hi WarningMsg ctermfg=DarkRed      guifg=Red
+hi WildMenu   ctermfg=Black        ctermbg=Yellow    guibg=Yellow guifg=Black
 
 " syntax highlighting
-hi PreProc    term=underline cterm=NONE ctermfg=darkmagenta  gui=NONE guifg=magenta3
-hi Identifier term=underline cterm=NONE ctermfg=darkcyan     gui=NONE guifg=cyan4
-hi Comment    term=NONE      cterm=NONE ctermfg=darkred      gui=NONE guifg=red2
-hi Constant   term=underline cterm=NONE ctermfg=darkgreen    gui=NONE guifg=green3
-hi Special    term=bold      cterm=NONE ctermfg=lightred     gui=NONE guifg=deeppink
-hi Statement  term=bold      cterm=bold ctermfg=blue	     gui=bold guifg=blue
-hi Type	      term=underline cterm=NONE ctermfg=blue	     gui=bold guifg=blue
-
-if exists("syntax_on")
-  let syntax_cmd = "enable"
-  runtime syntax/syncolor.vim
-  unlet syntax_cmd
-endif
+hi Comment    cterm=NONE ctermfg=DarkRed     gui=NONE guifg=red2
+hi Constant   cterm=NONE ctermfg=DarkGreen   gui=NONE guifg=green3
+hi Identifier cterm=NONE ctermfg=DarkCyan    gui=NONE guifg=cyan4
+hi PreProc    cterm=NONE ctermfg=DarkMagenta gui=NONE guifg=magenta3
+hi Special    cterm=NONE ctermfg=LightRed    gui=NONE guifg=deeppink
+hi Statement  cterm=bold ctermfg=Blue	     gui=bold guifg=blue
+hi Type	      cterm=NONE ctermfg=Blue	     gui=bold guifg=blue
 
 " vim: sw=2
diff --git a/runtime/colors/evening.vim b/runtime/colors/evening.vim
index e72f00d5d8708b1268d46cfad63a12bd3574332c..298fd2481163b7dd404c6060bb1ae11dc6302923 100644
--- a/runtime/colors/evening.vim
+++ b/runtime/colors/evening.vim
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 May 21
+" Last Change:	2006 Apr 14
 
 " This color scheme uses a dark grey background.
 
@@ -22,7 +22,7 @@ hi ModeMsg term=bold cterm=bold gui=bold
 hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold
 hi StatusLineNC term=reverse cterm=reverse gui=reverse
 hi VertSplit term=reverse cterm=reverse gui=reverse
-hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
+hi Visual term=reverse ctermbg=black guibg=grey60
 hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
 hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
 hi Cursor guibg=Green guifg=Black
@@ -42,6 +42,8 @@ hi FoldColumn term=standout ctermbg=LightGrey ctermfg=DarkBlue guibg=Grey guifg=
 hi DiffAdd term=bold ctermbg=DarkBlue guibg=DarkBlue
 hi DiffChange term=bold ctermbg=DarkMagenta guibg=DarkMagenta
 hi DiffDelete term=bold ctermfg=Blue ctermbg=DarkCyan gui=bold guifg=Blue guibg=DarkCyan
+hi CursorColumn term=reverse ctermbg=Black guibg=grey40
+hi CursorLine term=underline cterm=underline guibg=grey40
 
 " Groups for syntax highlighting
 hi Constant term=underline ctermfg=Magenta guifg=#ffa0a0 guibg=grey5
diff --git a/runtime/colors/morning.vim b/runtime/colors/morning.vim
index bcdaa1d1726aca0e131c8912193fa26f7b639bb6..5b175877ffcebe6ed406fc1a1df09c8b3ba6ec9e 100644
--- a/runtime/colors/morning.vim
+++ b/runtime/colors/morning.vim
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 May 21
+" Last Change:	2006 Apr 14
 
 " This color scheme uses a light grey background.
 
@@ -22,7 +22,7 @@ hi ModeMsg term=bold cterm=bold gui=bold
 hi StatusLine term=reverse,bold cterm=reverse,bold gui=reverse,bold
 hi StatusLineNC term=reverse cterm=reverse gui=reverse
 hi VertSplit term=reverse cterm=reverse gui=reverse
-hi Visual term=reverse cterm=reverse gui=reverse guifg=Grey guibg=fg
+hi Visual term=reverse ctermbg=grey guibg=grey90
 hi VisualNOS term=underline,bold cterm=underline,bold gui=underline,bold
 hi DiffText term=reverse cterm=bold ctermbg=Red gui=bold guibg=Red
 hi Cursor guibg=Green guifg=NONE
@@ -42,6 +42,8 @@ hi FoldColumn term=standout ctermbg=Grey ctermfg=DarkBlue guibg=Grey guifg=DarkB
 hi DiffAdd term=bold ctermbg=LightBlue guibg=LightBlue
 hi DiffChange term=bold ctermbg=LightMagenta guibg=LightMagenta
 hi DiffDelete term=bold ctermfg=Blue ctermbg=LightCyan gui=bold guifg=Blue guibg=LightCyan
+hi CursorLine term=underline cterm=underline guibg=grey80
+hi CursorColumn term=reverse ctermbg=grey guibg=grey80
 
 " Colors for syntax highlighting
 hi Constant term=underline ctermfg=DarkRed guifg=Magenta guibg=grey95
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index d3466bfe438b2acf11baa8fb40fc23e23403dae7..49cdf1c557d7fd85bec3ab5ab2db71b8c94d24a4 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.0d.  Last change: 2006 Apr 04
+*diff.txt*      For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -206,7 +206,8 @@ The diffs are highlighted with these groups:
 				(searching from the end of the line).  The
 				text in between is highlighted.  This means
 				that parts in the middle that are still the
-				same are highlighted anyway.
+				same are highlighted anyway.  Only "iwhite" of
+				'diffopt' is used here.
 |hl-DiffDelete| DiffDelete	Deleted lines.  Also called filler lines,
 				because they don't really exist in this
 				buffer.
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6b8c469de7cae4f5e8cb8997d24bb74e0467df49..b69fa3642d8293d63271bda9b307cceca3a98787 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0d.  Last change: 2006 Apr 09
+*eval.txt*      For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -198,6 +198,11 @@ available. >
 	:let shortlist = mylist[2:2]	" List with one item: [3]
 	:let otherlist = mylist[:]	" make a copy of the List
 
+If the second index is equal to or greater than the length of the list there
+is no error and the length minus one is used: >
+	:let mylist = [0, 1, 2, 3]
+	:echo mylist[2:8]		" result: [2, 3]
+
 The second index can be just before the first index.  In that case the result
 is an empty list.  If the second index is lower, this results in an error. >
 	:echo mylist[2:1]		" result: []
diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt
index 7f0891d1f8c1933807874266f654b8294b4ac5cd..7d83b7b91129349506eb4ffa67e1c6a502463ab3 100644
--- a/runtime/doc/indent.txt
+++ b/runtime/doc/indent.txt
@@ -1,4 +1,4 @@
-*indent.txt*    For Vim version 7.0d.  Last change: 2006 Mar 29
+*indent.txt*    For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -33,7 +33,9 @@ There are in fact four methods available for indentation:
 The rest of this section describes the 'cindent' option.
 
 Note that 'cindent' indenting does not work for every code scenario.  Vim
-is not a C compiler: it does not recognize all syntax.
+is not a C compiler: it does not recognize all syntax.  One requirement is
+that toplevel functions have a '{' in the first column.  Otherwise they are
+easily confused with declarations.
 
 These four options control C program indenting:
 'cindent'	Enables Vim to perform C program indenting automatically.
@@ -403,6 +405,16 @@ assume a 'shiftwidth' of 4.
 		      c1 && c2			c1 && c2
 		     )			    )
 		      foo;			foo;
+<
+	MN    When N is non-zero, line up a line starting with a closing
+	      parentheses with the first character of the previous line.
+	      (default 0).
+
+		cino=			  cino=M1 >
+		  if (cond1 &&		    if (cond1 &&
+		         cond2			   cond2
+		     )			    	   )
+		      foo;			foo;
 <
 					*java-cinoptions* *java-indenting*
 	jN    Indent java anonymous classes correctly.  The value 'N' is
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index ae47469f2188e6efeb347d8574d78be2c848e144..d8be3381ab9ee95259274589ebb885972eb6da0c 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0d.  Last change: 2006 Apr 11
+*insert.txt*    For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -602,6 +602,9 @@ accept the currently selected entry.  The CTRL-Y is not inserted.  Typing a
 space, Enter, or some other unprintable character will leave completion mode
 and insert that typed character.
 
+When the popup menu is displayed there are a few more special keys, see
+|popupmenu-keys|.
+
 Note: The keys that are valid in CTRL-X mode are not mapped.  This allows for
 ":map ^F ^X^F" to work (where ^F is CTRL-F and ^X is CTRL-X).  The key that
 ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 09270497506afd128577596d2c900426f896ab8e..a02724de9aacd635db47422722d19e930ac96e47 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1447,6 +1447,10 @@ which is loaded automatically at startup (assuming :set nocp).
 ==============================================================================
 11. History						*netrw-history* {{{1
 
+	v88: * moved DrChip.Netrw menu to Netrw.  Now has priority 80 by
+	       default.  g:NetrwTopLvlMenu == "Netrw" and can be changed
+	       by the user to suit.  The priority is g:NetrwMenuPriority.
+	     * Changed filetype for browser displays from netrwlist to netrw.
 	v87: * bug fix -- menus were partially disappearing
 	v85: * bug fix -- missing an endif
 	     * bug fix -- handles spaces in names and directories when using
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 8c0b79c9b5314bd08c66d64f3db052fa11edf131..d69b1bdb139072bf1d6fcda7d9cb6ff649283aca 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0d.  Last change: 2006 Apr 06
+*syntax.txt*	For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1349,6 +1349,29 @@ Inform development environment, you may with to add this to your
 startup sequence: >
 	:let inform_highlight_old=1
 
+IDL							*idl.vim* *idl-syntax*
+
+IDL (Interface Definition Language) files are used to define RPC calls.  In
+Microsoft land, this is also used for defining COM interfaces and calls.
+
+IDL's structure is simple enough to permit a full grammar based approach to
+rather than using a few heuristics.  The result is large and somewhat
+repetative but seems to work.
+
+There are some Microsoft extensions to idl files that are here.  Some of them
+are disabled by defining idl_no_ms_extensions.
+
+The more complex of the extensions are disabled by defining idl_no_extensions.
+
+Variable			Effect ~
+
+idl_no_ms_extensions		Disable some of the Microsoft specific
+				extensions
+idl_no_extensions		Disable complex extensions
+idlsyntax_showerror		Show IDL errors (can be rather intrusive, but
+				quite helpful)
+idlsyntax_showerror_soft	Use softer colours by default for errors
+
 
 JAVA						*java.vim* *ft-java-syntax*
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 5f1b67dc221eccfb825c57bc7728211f3acc4b06..5acac75b2160abed197563cf0e388bef01cd3160 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5838,6 +5838,8 @@ iconize	starting.txt	/*iconize*
 iconv()	eval.txt	/*iconv()*
 iconv-dynamic	mbyte.txt	/*iconv-dynamic*
 ident-search	tips.txt	/*ident-search*
+idl-syntax	syntax.txt	/*idl-syntax*
+idl.vim	syntax.txt	/*idl.vim*
 if_cscop.txt	if_cscop.txt	/*if_cscop.txt*
 if_mzsch.txt	if_mzsch.txt	/*if_mzsch.txt*
 if_ole.txt	if_ole.txt	/*if_ole.txt*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 8e9ba4bc517cea396d85d50a07b1e627c452c8ee..933dd6f0beca474cd7ff610ca6e51dcdde18531b 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0d.  Last change: 2006 Apr 13
+*todo.txt*      For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -32,8 +32,6 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
 
 Do some of the 'cindent' bugs below.
 
-Should a[:5] not give an error for a list with 4 items?
-
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
 Win32: Describe how to do debugging. (George Reilly)
@@ -47,7 +45,8 @@ Mac unicode patch (Da Woon Jung, Eckehard Berns):
 - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
   (Alan Schmitt)
 
-Darren is including the patch in ctags.  Test it when it's ready.
+Darren Hiebert is including the patch for omni completion in ctags.  A new
+version still isn't available for download.
 
 
 Awaiting updated patches:
@@ -2238,29 +2237,6 @@ Insert mode:
 
 
 'cindent', 'smartindent':
-9   Too much indent for "lulu": (Uwe Zeisberger)
-       int main ()
-       {
-	 if (lala)
-	   do
-	     ++(*lolo);
-	   while (lili
-		  && lele);
-	   lulu;
-       }
-9   Function gets extra indent: (Jamax)
-	void function(int param) {
-	     if (false)
-		 return;
-	}
-9   brace not indented correctly:
-	case 'c':   if (cond)
-			{
-    Should align with "if" in case statement.
-7   Allow aligning a closing ")" with the line above, instead of the matching
-    "(": (Riehm) if (asdfasdf &&
-			asdf
-			)
 8   Java: Inside an anonymous class, after an "else" or "try" the indent is
     too small. (Vincent Bergbauer)
 8   In C++ it's possible to have {} inside (): (Kirshna)
@@ -2270,18 +2246,12 @@ Insert mode:
 			    "asdf"
 			}
 		    );
-7   Separate "(0" option into inside/outside a function (Zellner):
+7   Add separate "(0" option into inside/outside a function (Zellner):
 	func(
 	   int x)	// indent like "(4"
 	{
 	   if (a
 	       && b)	// indent like "(0"
-8   Strange problem with this code, "hello" is indented wrong: (Gary Holloway)
-    main() { char	foo[] = "/*";
-	 /* This is a comment; the indentation of C
-	  * source below this comment gets messed up due to the string above.
-	  */
-	  hello
 9   Using "{" in a comment: (Helmut Stiegler)
     if (a)
     {
@@ -2290,9 +2260,9 @@ Insert mode:
 		    // {
 	    }
 	    } <-- this is indented incorrect
-9   Wrong indent for cino=(4, removing the (void) fixes it: (Zellner)
-	(void) MyFancyFunction(
-			       argument);
+    Problem is that find_start_brace() checks for the matching brace to be in
+    a comment, but not braces in between.  Requires adding a comment check to
+    findmatchlimit().
 -   Make smartindenting configurable.  Add 'sioptions', e.g. '#' setting the
     indent to 0 should be switched on/off.
 7   Support ANSI style function header, with each argument on its own line.
@@ -2323,9 +2293,8 @@ Insert mode:
 7   Use Tabs for the indent of starting lines, pad with spaces for
     continuation lines.  Allows changing 'tabstop' without messing up the
     indents.
-    And/or: Add option to copy indent as-is, without changing spaces to tabs.
-    Also for 'autoindent'.  'keeptabs': when set don't change the tabs and
-    spaces used for indent, when the indent remains the same or increases.
+    'keeptabs': when set don't change the tabs and spaces used for indent,
+    when the indent remains the same or increases.
 
 
 Java:
@@ -3184,8 +3153,6 @@ Various improvements:
     stack of previous directories.  We also need ":cdnext".
 7   Should ":cd" for MS-DOS go to $HOME, when it's defined?
 -   Make "gq<CR>" work on the last line in the file.  Maybe for every operator?
-8   findmatchlimit() should be able to skip comments.  Solves problem of
-    matching the '{' in /* if (foo) { */ (Fiveash)
 -   Add more redirecting of Ex commands:
 	:redir #>  bufname
 	:redir #>> bufname   (append)
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index a37d7234a9c03312f7e105ebdb6174fb073eca47..b9f6914b7100f131612638abd6ad89ee1f47a431 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0d.  Last change: 2006 Apr 13
+*version7.txt*  For Vim version 7.0d.  Last change: 2006 Apr 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -242,8 +242,9 @@ Currently supported languages:
 	C					|ft-c-omni|
 	(X)HTML with CSS			|ft-html-omni|
 	JavaScript				|ft-javascript-omni|
-	any language wih syntax highligting	|ft-syntax-omni|
+	Python
 	XML					|ft-xml-omni|
+	any language wih syntax highligting	|ft-syntax-omni|
 
 When the 'completeopt' option contains "menu" then matches for Insert mode
 completion are displayed in a popup menu.
@@ -2476,4 +2477,15 @@ typing a special key.
 
 When 'foldignore' is set the folds were not updated right away.
 
+When a list is indexed with [a : b] and b was greater than the length an error
+message was given.  Now silently restrict to the length of the list.
+
+When using BS during Insert mode completion go back to the original text, so
+that CTRL-N selects the first matching entry.
+
+Added the 'm' flag to 'cinoptions'.
+
+Win32: Make the "gvim --help" window appear in the middle of the screen
+instead of at an arbitrary position. (Randall W. Morris)
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index 4c8db852b11af7993703d7391a037362bbf2f42e..8ce7f12ac33aa7dc88d54ae63a255409d94dbd01 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -51,6 +51,7 @@ setlocal formatoptions-=t formatoptions+=croql
 setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\>
 setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
 setlocal suffixesadd=.rb
+setlocal omnifunc=rubycomplete#Complete 
 
 " TODO:
 "setlocal define=^\\s*def
diff --git a/runtime/indent/vhdl.vim b/runtime/indent/vhdl.vim
index 8176673a812c1e7a569daf345692c00490e33a76..c6f01988dad94763a4c6ea32fed0431c76e5661e 100644
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -17,36 +17,6 @@ setlocal indentkeys=!^F,o,O,e,0(,0)
 setlocal indentkeys+==~if,=~then,=~elsif,=~else
 setlocal indentkeys+==~begin,=~is,=~select
 
-" count repeat
-"function! <SID>CountWrapper(cmd)
-"  let i = v:count1
-"  if a:cmd[0] == ":"
-"    while i > 0
-"      execute a:cmd
-"      let i = i - 1
-"    endwhile
-"  else
-"    execute "normal! gv\<Esc>"
-"    execute "normal ".i.a:cmd
-"    let curcol = col(".")
-"    let curline = line(".")
-"    normal! gv
-"    call cursor(curline, curcol)
-"  endif
-"endfunction
-
-" explore motion
-" keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
-"let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
-"noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-"noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-"noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
-"noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
-"vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
-"vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
-"vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
-"vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
-
 " constants
 " not a comment
 let s:NC = '\%(--.*\)\@<!'
@@ -55,28 +25,6 @@ let s:ES = '\s*\%(--.*\)\=$'
 " no "end" keyword in front
 let s:NE = '\%(\<end\s\+\)\@<!'
 
-" for matchit plugin
-"if exists("loaded_matchit")
-"  let b:match_ignorecase = 1
-"  let b:match_words =
-"    \ s:NE.'\<if\>:\<elsif\>:\<else\>:\<end\s\+if\>,'.
-"    \ s:NE.'\<case\>:\<when\>:\<end\s\+case\>,'.
-"    \ s:NE.'\<loop\>:\<end\s\+loop\>,'.
-"    \ s:NE.'\<for\>:\<end\s\+for\>,'.
-"    \ s:NE.'\<generate\>:\<end\s\+generate\>,'.
-"    \ s:NE.'\<record\>:\<end\s\+record\>,'.
-"    \ s:NE.'\<units\>:\<end\s\+units\>,'.
-"    \ s:NE.'\<process\>:\<end\s\+process\>,'.
-"    \ s:NE.'\<block\>:\<end\s\+block\>,'.
-"    \ s:NE.'\<function\>:\<end\s\+function\>,'.
-"    \ s:NE.'\<entity\>:\<end\s\+entity\>,'.
-"    \ s:NE.'\<component\>:\<end\s\+component\>,'.
-"    \ s:NE.'\<architecture\>:\<end\s\+architecture\>,'.
-"    \ s:NE.'\<package\>:\<end\s\+package\>,'.
-"    \ s:NE.'\<procedure\>:\<end\s\+procedure\>,'.
-"    \ s:NE.'\<configuration\>:\<end\s\+configuration\>'
-"endif
-
 " only define indent function once
 if exists("*GetVHDLindent")
   finish
diff --git a/runtime/syntax/html.vim b/runtime/syntax/html.vim
index a76dfccdc8d4bdadfe4d687f3cb898fd9396ac59..85f9a02544ee6760aaafacb1037c3b272d5cb147 100644
--- a/runtime/syntax/html.vim
+++ b/runtime/syntax/html.vim
@@ -2,7 +2,7 @@
 " Language:	HTML
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/html.vim
-" Last Change:  2005 Jul 20
+" Last Change:  2006 April 13
 
 " Please check :help html.vim for some comments and a description of the options
 
@@ -27,10 +27,6 @@ endif
 
 syn case ignore
 
-if main_syntax == "html"
-  syn spell toplevel
-endif
-
 " mark illegal characters
 syn match htmlError "[<>&]"
 
@@ -39,8 +35,8 @@ syn match htmlError "[<>&]"
 syn region  htmlString   contained start=+"+ end=+"+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
 syn region  htmlString   contained start=+'+ end=+'+ contains=htmlSpecialChar,javaScriptExpression,@htmlPreproc
 syn match   htmlValue    contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1   contains=javaScriptExpression,@htmlPreproc
-syn region  htmlEndTag		   start=+</+	   end=+>+ contains=htmlTagN,htmlTagError
-syn region  htmlTag		   start=+<[^/]+   end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
+syn region  htmlEndTag             start=+</+      end=+>+ contains=htmlTagN,htmlTagError
+syn region  htmlTag                start=+<[^/]+   end=+>+ contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent,htmlCssDefinition,@htmlPreproc,@htmlArgCluster
 syn match   htmlTagN     contained +<\s*[-a-zA-Z0-9]\++hs=s+1 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
 syn match   htmlTagN     contained +</\s*[-a-zA-Z0-9]\++hs=s+2 contains=htmlTagName,htmlSpecialTagName,@htmlTagNameCluster
 syn match   htmlTagError contained "[^>]<"ms=s+1
@@ -101,13 +97,13 @@ syn match htmlSpecialChar "&#\=[0-9A-Za-z]\{1,8};"
 
 " Comments (the real ones or the old netscape ones)
 if exists("html_wrong_comments")
-  syn region htmlComment		start=+<!--+	end=+--\s*>+
+  syn region htmlComment                start=+<!--+    end=+--\s*>+
 else
-  syn region htmlComment		start=+<!+	end=+>+   contains=htmlCommentPart,htmlCommentError
+  syn region htmlComment                start=+<!+      end=+>+   contains=htmlCommentPart,htmlCommentError
   syn match  htmlCommentError contained "[^><!]"
   syn region htmlCommentPart  contained start=+--+      end=+--\s*+  contains=@htmlPreProc
 endif
-syn region htmlComment			start=+<!DOCTYPE+ keepend end=+>+
+syn region htmlComment                  start=+<!DOCTYPE+ keepend end=+>+
 
 " server-parsed commands
 syn region htmlPreProc start=+<!--#+ end=+-->+ contains=htmlPreStmt,htmlPreError,htmlPreAttr
@@ -158,14 +154,14 @@ if !exists("html_no_rendering")
   syn region htmlH5 start="<h5\>" end="</h5>"me=e-5 contains=@htmlTop
   syn region htmlH6 start="<h6\>" end="</h6>"me=e-5 contains=@htmlTop
   syn region htmlHead start="<head\>" end="</head>"me=e-7 end="<body\>"me=e-5 end="<h[1-6]\>"me=e-3 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript,cssStyle,@htmlPreproc
-  syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=@Spell,htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
+  syn region htmlTitle start="<title\>" end="</title>"me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript,@htmlPreproc
 endif
 
-syn keyword htmlTagName		contained noscript
+syn keyword htmlTagName         contained noscript
 syn keyword htmlSpecialTagName  contained script style
 if main_syntax != 'java' || exists("java_javascript")
   " JAVA SCRIPT
-  syn include @htmlJavaScript <sfile>:p:h/javascript.vim
+  syn include @htmlJavaScript syntax/javascript.vim
   unlet b:current_syntax
   syn region  javaScript start=+<script[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlJavaScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
   syn region  htmlScriptTag     contained start=+<script+ end=+>+       contains=htmlTagN,htmlString,htmlArg,htmlValue,htmlTagError,htmlEvent
@@ -173,14 +169,14 @@ if main_syntax != 'java' || exists("java_javascript")
 
   " html events (i.e. arguments that include javascript commands)
   if exists("html_extended_events")
-    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
-    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
+    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ contains=htmlEventSQ
+    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ contains=htmlEventDQ
   else
-    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
-    syn region htmlEvent	contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
+    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*'+ end=+'+ keepend contains=htmlEventSQ
+    syn region htmlEvent        contained start=+\<on\a\+\s*=[\t ]*"+ end=+"+ keepend contains=htmlEventDQ
   endif
-  syn region htmlEventSQ	contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
-  syn region htmlEventDQ	contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
+  syn region htmlEventSQ        contained start=+'+ms=s+1 end=+'+me=s-1 contains=@htmlJavaScript
+  syn region htmlEventDQ        contained start=+"+ms=s+1 end=+"+me=s-1 contains=@htmlJavaScript
   HtmlHiLink htmlEventSQ htmlEvent
   HtmlHiLink htmlEventDQ htmlEvent
 
@@ -190,7 +186,7 @@ endif
 
 if main_syntax != 'java' || exists("java_vb")
   " VB SCRIPT
-  syn include @htmlVbScript <sfile>:p:h/vb.vim
+  syn include @htmlVbScript syntax/vb.vim
   unlet b:current_syntax
   syn region  javaScript start=+<script [^>]*language *=[^>]*vbscript[^>]*>+ keepend end=+</script>+me=s-1 contains=@htmlVbScript,htmlCssStyleComment,htmlScriptTag,@htmlPreproc
 endif
@@ -199,8 +195,8 @@ syn cluster htmlJavaScript      add=@htmlPreproc
 
 if main_syntax != 'java' || exists("java_css")
   " embedded style sheets
-  syn keyword htmlArg		contained media
-  syn include @htmlCss <sfile>:p:h/css.vim
+  syn keyword htmlArg           contained media
+  syn include @htmlCss syntax/css.vim
   unlet b:current_syntax
   syn region cssStyle start=+<style+ keepend end=+</style>+ contains=@htmlCss,htmlTag,htmlEndTag,htmlCssStyleComment,@htmlPreproc
   syn match htmlCssStyleComment contained "\(<!--\|-->\)"
@@ -223,65 +219,65 @@ if version >= 508 || !exists("did_html_syn_inits")
   if version < 508
     let did_html_syn_inits = 1
   endif
-  HtmlHiLink htmlTag			Function
-  HtmlHiLink htmlEndTag			Identifier
-  HtmlHiLink htmlArg			Type
-  HtmlHiLink htmlTagName		htmlStatement
-  HtmlHiLink htmlSpecialTagName		Exception
-  HtmlHiLink htmlValue			String
-  HtmlHiLink htmlSpecialChar		Special
-
+  HtmlHiLink htmlTag                     Function
+  HtmlHiLink htmlEndTag                  Identifier
+  HtmlHiLink htmlArg                     Type
+  HtmlHiLink htmlTagName                 htmlStatement
+  HtmlHiLink htmlSpecialTagName          Exception
+  HtmlHiLink htmlValue                     String
+  HtmlHiLink htmlSpecialChar             Special
+  
   if !exists("html_no_rendering")
-    HtmlHiLink htmlH1			   Title
-    HtmlHiLink htmlH2			   htmlH1
-    HtmlHiLink htmlH3			   htmlH2
-    HtmlHiLink htmlH4			   htmlH3
-    HtmlHiLink htmlH5			   htmlH4
-    HtmlHiLink htmlH6			   htmlH5
-    HtmlHiLink htmlHead			   PreProc
-    HtmlHiLink htmlTitle		   Title
-    HtmlHiLink htmlBoldItalicUnderline	   htmlBoldUnderlineItalic
-    HtmlHiLink htmlUnderlineBold	   htmlBoldUnderline
-    HtmlHiLink htmlUnderlineItalicBold	   htmlBoldUnderlineItalic
-    HtmlHiLink htmlUnderlineBoldItalic	   htmlBoldUnderlineItalic
-    HtmlHiLink htmlItalicUnderline	   htmlUnderlineItalic
-    HtmlHiLink htmlItalicBold		   htmlBoldItalic
-    HtmlHiLink htmlItalicBoldUnderline	   htmlBoldUnderlineItalic
-    HtmlHiLink htmlItalicUnderlineBold	   htmlBoldUnderlineItalic
-    HtmlHiLink htmlLink			   Underlined
+    HtmlHiLink htmlH1                      Title
+    HtmlHiLink htmlH2                      htmlH1
+    HtmlHiLink htmlH3                      htmlH2
+    HtmlHiLink htmlH4                      htmlH3
+    HtmlHiLink htmlH5                      htmlH4
+    HtmlHiLink htmlH6                      htmlH5
+    HtmlHiLink htmlHead                    PreProc
+    HtmlHiLink htmlTitle                   Title
+    HtmlHiLink htmlBoldItalicUnderline     htmlBoldUnderlineItalic
+    HtmlHiLink htmlUnderlineBold           htmlBoldUnderline
+    HtmlHiLink htmlUnderlineItalicBold     htmlBoldUnderlineItalic
+    HtmlHiLink htmlUnderlineBoldItalic     htmlBoldUnderlineItalic
+    HtmlHiLink htmlItalicUnderline         htmlUnderlineItalic
+    HtmlHiLink htmlItalicBold              htmlBoldItalic
+    HtmlHiLink htmlItalicBoldUnderline     htmlBoldUnderlineItalic
+    HtmlHiLink htmlItalicUnderlineBold     htmlBoldUnderlineItalic
+    HtmlHiLink htmlLink                    Underlined
     if !exists("html_my_rendering")
-      hi def htmlBold		     term=bold cterm=bold gui=bold
-      hi def htmlBoldUnderline	     term=bold,underline cterm=bold,underline gui=bold,underline
-      hi def htmlBoldItalic	     term=bold,italic cterm=bold,italic gui=bold,italic
+      hi def htmlBold                term=bold cterm=bold gui=bold
+      hi def htmlBoldUnderline       term=bold,underline cterm=bold,underline gui=bold,underline
+      hi def htmlBoldItalic          term=bold,italic cterm=bold,italic gui=bold,italic
       hi def htmlBoldUnderlineItalic term=bold,italic,underline cterm=bold,italic,underline gui=bold,italic,underline
-      hi def htmlUnderline	     term=underline cterm=underline gui=underline
+      hi def htmlUnderline           term=underline cterm=underline gui=underline
       hi def htmlUnderlineItalic     term=italic,underline cterm=italic,underline gui=italic,underline
-      hi def htmlItalic		     term=italic cterm=italic gui=italic
+      hi def htmlItalic              term=italic cterm=italic gui=italic
     endif
   endif
-
-  HtmlHiLink htmlPreStmt	    PreProc
-  HtmlHiLink htmlPreError	    Error
-  HtmlHiLink htmlPreProc	    PreProc
-  HtmlHiLink htmlPreAttr	    String
+  
+  HtmlHiLink htmlPreStmt            PreProc
+  HtmlHiLink htmlPreError           Error
+  HtmlHiLink htmlPreProc            PreProc
+  HtmlHiLink htmlPreAttr            String
   HtmlHiLink htmlPreProcAttrName    PreProc
   HtmlHiLink htmlPreProcAttrError   Error
-  HtmlHiLink htmlSpecial	    Special
-  HtmlHiLink htmlSpecialChar	    Special
-  HtmlHiLink htmlString		    String
-  HtmlHiLink htmlStatement	    Statement
-  HtmlHiLink htmlComment	    Comment
-  HtmlHiLink htmlCommentPart	    Comment
-  HtmlHiLink htmlValue		    String
-  HtmlHiLink htmlCommentError	    htmlError
-  HtmlHiLink htmlTagError	    htmlError
-  HtmlHiLink htmlEvent		    javaScript
-  HtmlHiLink htmlError		    Error
-
-  HtmlHiLink javaScript		    Special
+  HtmlHiLink htmlSpecial            Special
+  HtmlHiLink htmlSpecialChar        Special
+  HtmlHiLink htmlString             String
+  HtmlHiLink htmlStatement          Statement
+  HtmlHiLink htmlComment            Comment
+  HtmlHiLink htmlCommentPart        Comment
+  HtmlHiLink htmlValue              String
+  HtmlHiLink htmlCommentError       htmlError
+  HtmlHiLink htmlTagError           htmlError
+  HtmlHiLink htmlEvent              javaScript
+  HtmlHiLink htmlError              Error
+  
+  HtmlHiLink javaScript             Special
   HtmlHiLink javaScriptExpression   javaScript
   HtmlHiLink htmlCssStyleComment    Comment
-  HtmlHiLink htmlCssDefinition	    Special
+  HtmlHiLink htmlCssDefinition      Special
 endif
 
 delcommand HtmlHiLink
diff --git a/runtime/syntax/idl.vim b/runtime/syntax/idl.vim
index 855dc2172932f8afca822e6b3d2ca9f9527e60af..39041fcac278f015a87eca14745a3f2c4af9229c 100644
--- a/runtime/syntax/idl.vim
+++ b/runtime/syntax/idl.vim
@@ -1,8 +1,9 @@
 " Vim syntax file
 " Language:    IDL (Interface Description Language)
-" Created By:  Jody Goldberg <jody@gnome.org>
-" Maintainer:  Michael Geddes <michaelrgeddes@optushome.com.au>
-" Last Change:  2004 Jul 20
+" Created By:  Jody Goldberg
+" Maintainer:  Michael Geddes <vim@frog.wheelycreek.net>
+" Last Change:  Thu Apr 13 2006
+
 
 " This is an experiment.  IDL's structure is simple enough to permit a full
 " grammar based approach to rather than using a few heuristics.  The result
@@ -13,6 +14,10 @@
 "
 " The more complex of the extensions are disabled by defining idl_no_extensions.
 "
+" History:
+" 2.0: Michael's new version
+" 2.1: Support for Vim 7 spell (Anduin Withers)
+"      
 
 if exists("b:current_syntax")
   finish
@@ -32,7 +37,7 @@ syn match   idlSemiColon   contained ";"
 syn match   idlCommaArg    contained ","                      skipempty skipwhite nextgroup=idlSimpDecl
 syn region  idlArraySize1  contained start=:\[: end=:\]:      skipempty skipwhite nextgroup=idlArraySize1,idlError,idlSemiColon,idlCommaArg contains=idlArraySize1,idlLiteral
 syn match   idlSimpDecl    contained "[a-zA-Z][a-zA-Z0-9_]*"  skipempty skipwhite nextgroup=idlError,idlSemiColon,idlCommaArg,idlArraySize1
-syn region  idlString      contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+
+syn region  idlString      contained start=+"+  skip=+\\\(\\\\\)*"+  end=+"+ contains=@Spell
 syn match   idlLiteral     contained "[1-9]\d*\(\.\d*\)\="
 syn match   idlLiteral     contained "0"
 syn match   idlLiteral     contained "\.\d\+"
@@ -42,8 +47,8 @@ syn keyword idlLiteral     contained TRUE FALSE
 
 " Comments
 syn keyword idlTodo        contained TODO FIXME XXX
-syn region idlComment      start="/\*"  end="\*/" contains=idlTodo
-syn match  idlComment      "//.*" contains=idlTodo
+syn region idlComment      start="/\*"  end="\*/" contains=idlTodo,@Spell
+syn match  idlComment      "//.*" contains=idlTodo,@Spell
 syn match  idlCommentError "\*/"
 
 " C style Preprocessor
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index 9e959e1de75245b1c8f6d5e4f6945ed70fe17204..a1b9e157a334f3c6fdb29d7dd0413b8fa94fdd05 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -7,7 +7,7 @@
 "		(ss) repaired several quoting and grouping glitches
 "		(ss) fixed regex parsing issue with multiple qualifiers [gi]
 "		(ss) additional factoring of keywords, globals, and members
-" Last Change:	2005 Nov 12 (ss)
+" Last Change:	2006 Jan 15
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -41,7 +41,7 @@ syn region  javaScriptStringS	       start=+'+  skip=+\\\\\|\\'+  end=+'\|$+  co
 
 syn match   javaScriptSpecialCharacter "'\\.'"
 syn match   javaScriptNumber	       "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
-syn region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline
+syn region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)\]}]+me=e-1 contains=@htmlPreproc oneline
 
 syn keyword javaScriptConditional	if else switch
 syn keyword javaScriptRepeat		while for do in
diff --git a/runtime/syntax/mma.vim b/runtime/syntax/mma.vim
index 37988ed078d58272724fa22cb764258a69bbb1c2..12aac9cc47fdcce4dc4b865d500682c18f53bfd4 100644
--- a/runtime/syntax/mma.vim
+++ b/runtime/syntax/mma.vim
@@ -1,11 +1,12 @@
 " Vim syntax file
 " Language:     Mathematica
 " Maintainer:   steve layland <layland@wolfram.com>
-" Last Change:  Tue May 10 18:31:00 CDT 2005
-" Source:       http://vim.sourceforge.net/scripts/script.php?script_id=1273
-"               http://members.wri.com/layland/vim/syntax/mma.vim
-"
+" Last Change:  Thu May 19 21:36:04 CDT 2005
+" Source:       http://members.wri.com/layland/vim/syntax/mma.vim
+"               http://vim.sourceforge.net/scripts/script.php?script_id=1273
+" Id:           $Id$
 " NOTE:
+" 
 " Empty .m files will automatically be presumed as Matlab files
 " unless you have the following in your .vimrc:
 "
@@ -23,6 +24,12 @@
 "    from the Java vim syntax file by Claudio Fleiner.  Thanks!
 " o  Everything else written by steve <layland@wolfram.com>
 "
+" Bugs: 
+" o  Vim 6.1 didn't really have support for character classes 
+"    of other named character classes.  For example, [\a\d]
+"    didn't work.  Therefore, a lot of this code uses explicit
+"    character classes instead: [0-9a-zA-Z] 
+"
 " TODO:
 "   folding
 "   fix nesting
@@ -78,19 +85,20 @@ syntax keyword mmaVariable Protected Listable OneIdentity Orderless Flat Constan
 " Comment Sections:
 "   this:
 "   :that:
-syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\a\)[a-zA-Z0-9 ]\+:" contained contains=@mmaNotes
+syntax match mmaItem "\%(^[( |*\t]*\)\@<=\%(:\+\|\w\)\w\+\%( \w\+\)\{0,3}:" contained contains=@mmaNotes
 
 " Comment Keywords:
 syntax keyword mmaTodo TODO NOTE HEY contained
 syntax match mmaTodo "X\{3,}" contained
 syntax keyword mmaFixme FIX[ME] FIXTHIS BROKEN contained
+syntax match mmaFixme "BUG\%( *\#\=[0-9]\+\)\=" contained
 " yay pirates...
 syntax match mmaFixme "\%(Y\=A\+R\+G\+\|GRR\+\|CR\+A\+P\+\)\%(!\+\)\=" contained
 
 " EmPHAsis:
 " this unnecessary, but whatever :)
-syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%(\s\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis
-syntax match mmaemPHAsis "\%(^\|\s\)(\@<!\*[a-zA-Z0-9]\+\%(\s\+[a-zA-Z0-9]\+\)*)\@!\*\%(\s\|$\)" contained contains=mmaemPHAsis
+syntax match mmaemPHAsis "\%(^\|\s\)\([_/]\)[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*\1\%(\s\|$\)" contained contains=mmaemPHAsis
+syntax match mmaemPHAsis "\%(^\|\s\)(\@<!\*[a-zA-Z0-9]\+\%([- \t':]\+[a-zA-Z0-9]\+\)*)\@!\*\%(\s\|$\)" contained contains=mmaemPHAsis
 
 " Regular Comments:
 "   (* *)
@@ -112,9 +120,11 @@ syntax match mmaCommentStar "^\s*\*\+" contained
 
 " Variables:
 "   Dollar sign variables
-syntax match mmaVariable "$\a\+\d*"
-"   Preceding contexts
-syntax match mmaVariable "`\=\a\+\d*`"
+syntax match mmaVariable "\$\a\+[0-9a-zA-Z$]*"
+
+"   Preceding and Following Contexts
+syntax match mmaVariable "`[a-zA-Z$]\+[0-9a-zA-Z$]*" contains=mmaVariable
+syntax match mmaVariable "[a-zA-Z$]\+[0-9a-zA-Z$]*`" contains=mmaVariable
 
 " Strings:
 "   "string"
@@ -179,9 +189,11 @@ syntax match mmaOperator "[*+=^.:?-]"
 syntax match mmaOperator "\%(\~\~\=\)"
 syntax match mmaOperator "\%(=\{2,3}\|=\=!=\|||\=\|&&\|!\)" contains=ALLBUT,mmaPureFunction
 
-" Function Usage Messages:
+" Symbol Tags:
 "   "SymbolName::item"
-syntax match mmaMessage "$\=\a\+\d*::\a\+\d*"
+"syntax match mmaSymbol "`\=[a-zA-Z$]\+[0-9a-zA-Z$]*\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*" contained
+syntax match mmaMessage "`\=\([a-zA-Z$]\+[0-9a-zA-Z$]*\)\%(`\%([a-zA-Z$]\+[0-9a-zA-Z$]*\)\=\)*::\a\+" contains=mmaMessageType
+syntax match mmaMessageType "::\a\+"hs=s+2 contained
 
 " Pure Functions:
 syntax match mmaPureFunction "#\%(#\|\d\+\)\="
@@ -208,7 +220,7 @@ syntax match mmaUnicode "\\\%(\x\{3}\|\.\x\{2}\|:\x\{4}\)"
 
 " Syntax Errors:
 syntax match mmaError "\*)" containedin=ALLBUT,@mmaComments,@mmaStrings
-syntax match mmaError "\%([&:|+*/?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings
+syntax match mmaError "\%([/]{3,}\|[&:|+*?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" containedin=ALLBUT,@mmaComments,@mmaStrings
 
 " Punctuation:
 " things that shouldn't really be highlighted, or highlighted 
@@ -217,13 +229,56 @@ syntax match mmaError "\%([&:|+*/?~-]\{3,}\|[.=]\{4,}\|_\@<=\.\{2,}\|`\{2,}\)" c
 " TODO - use Delimiter group?
 syntax match mmaBoring "[(){}]" contained
 
+" ------------------------------------
+"    future explorations...
+" ------------------------------------
 " Function Arguments:
 "   anything between brackets []
-"   TODO - make good folds for this.
-"syntax region mmaArgument start="\[" end="]" containedin=ALLBUT,@mmaComments,@mmaCommentStrings transparent fold
-"syntax sync fromstart
+"   (fold)
+"syntax region mmaArgument start="\[" end="\]" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold
+
+" Lists:
+"   (fold)
+"syntax region mmaLists start="{" end="}" containedin=ALLBUT,@mmaComments,@mmaStrings transparent fold
+
+" Regions:
+"   (fold)
+"syntax region mmaRegion start="(\*\+[^<]*<!--[^>]*\*\+)" end="--> \*)" containedin=ALLBUT,@mmaStrings transparent fold keepend
+
+" show fold text
+set commentstring='(*%s*)'
+"set foldtext=MmaFoldText()
+
+"function MmaFoldText()
+"    let line = getline(v:foldstart)
+"    
+"    let lines = v:foldend-v:foldstart+1
+"    
+"    let sub = substitute(line, '(\*\+|\*\+)|[-*_]\+', '', 'g')
+"
+"    if match(line, '(\*') != -1
+"        let lines = lines.' line comment'
+"    else
+"        let lines = lines.' lines'
+"    endif
+"
+"    return v:folddashes.' '.lines.' '.sub
+"endf
+    
+"this is slow for computing folds, but it does so accurately
+syntax sync fromstart
+
+" but this seems to do alright for non fold syntax coloring.
+" for folding, however, it doesn't get the nesting right.
+" TODO - find sync group for multiline modules? ick...
+
+" sync multi line comments
+"syntax sync match syncComments groupthere NONE "\*)"
+"syntax sync match syncComments groupthere mmaComment "(\*"
+
 "set foldmethod=syntax
-"set foldminlines=10
+"set foldnestmax=1
+"set foldminlines=15
 
 if version >= 508 || !exists("did_mma_syn_inits")
 	if version < 508
@@ -238,12 +293,14 @@ if version >= 508 || !exists("did_mma_syn_inits")
     " :so $VIMRUNTIME/syntax/hitest.vim and tweak these to
     " look good in yours
 
+
     HiLink mmaComment           Comment
     HiLink mmaCommentStar       Comment
     HiLink mmaFunctionComment   Comment
     HiLink mmaLooseQuote        Comment
 	HiLink mmaGenericFunction   Function
 	HiLink mmaVariable          Identifier
+"    HiLink mmaSymbol            Identifier
 	HiLink mmaOperator          Operator
     HiLink mmaPatternOp         Operator
 	HiLink mmaPureFunction      Operator
@@ -259,6 +316,7 @@ if version >= 508 || !exists("did_mma_syn_inits")
     HiLink mmaTodo              Todo
     HiLink mmaemPHAsis          Special
     HiLink mmaFunctionTitle     Special
+    HiLink mmaMessageType       Special
     HiLink mmaItem              Preproc
 
 	delcommand HiLink
diff --git a/runtime/syntax/netrwlist.vim b/runtime/syntax/netrw.vim
similarity index 100%
rename from runtime/syntax/netrwlist.vim
rename to runtime/syntax/netrw.vim
diff --git a/runtime/syntax/nroff.vim b/runtime/syntax/nroff.vim
index 2f004d605290d6c9e2c636d9eb27f2234fd26c26..6f2a13134c50f5674736929882404544e2f7a790 100644
--- a/runtime/syntax/nroff.vim
+++ b/runtime/syntax/nroff.vim
@@ -2,7 +2,7 @@
 " Language:	nroff/groff
 " Maintainer:	Alejandro López-Valencia <dradul@yahoo.com>
 " URL:		http://dradul.tripod.com/vim
-" Last Change:	2003 May 24
+" Last Change:	2006 Apr 14
 "
 " {{{1 Acknowledgements
 "
@@ -125,12 +125,12 @@ if exists("b:nroff_is_groff")
 "
 " GNU troff allows long request names
 "
-syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg
+	syn match nroffReqName /[^\t \\\[?]\+/ contained nextgroup=nroffReqArg
 else
 	syn match nroffReqName /[^\t \\\[?]\{1,2}/ contained nextgroup=nroffReqArg
 endif
 
-syn region roffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment
+syn region nroffReqArg start=/\S/ skip=/\\$/ end=/$/ contained contains=nroffEscape,@nroffSpecial,nroffString,nroffError,nroffSpaceError,nroffNumBlock,nroffComment
 
 " {{{2 Conditional: .if .ie .el
 syn match nroffReqName /\(if\|ie\)/ contained nextgroup=nroffCond skipwhite
diff --git a/src/diff.c b/src/diff.c
index 4896c049ac253f12fed490668625b29e2eb8e1f2..f5577f16b66fbfc21daab5f2ed77d5aac4497ffb 100644
--- a/src/diff.c
+++ b/src/diff.c
@@ -1807,7 +1807,8 @@ diff_find_change(wp, lnum, startp, endp)
     char_u	*line_org;
     char_u	*line_new;
     int		i;
-    int		si, ei_org, ei_new;
+    int		si_org, si_new;
+    int		ei_org, ei_new;
     diff_T	*dp;
     int		idx;
     int		off;
@@ -1838,34 +1839,66 @@ diff_find_change(wp, lnum, startp, endp)
 	    if (off >= dp->df_count[i])
 		continue;
 	    added = FALSE;
-	    line_new = ml_get_buf(curtab->tp_diffbuf[i], dp->df_lnum[i] + off, FALSE);
+	    line_new = ml_get_buf(curtab->tp_diffbuf[i],
+						 dp->df_lnum[i] + off, FALSE);
 
 	    /* Search for start of difference */
-	    for (si = 0; line_org[si] != NUL && line_org[si] == line_new[si]; )
-		++si;
+	    si_org = si_new = 0;
+	    while (line_org[si_org] != NUL)
+	    {
+		if ((diff_flags & DIFF_IWHITE)
+			&& vim_iswhite(line_org[si_org])
+			&& vim_iswhite(line_new[si_new]))
+		{
+		    si_org = skipwhite(line_org + si_org) - line_org;
+		    si_new = skipwhite(line_new + si_new) - line_new;
+		}
+		else
+		{
+		    if (line_org[si_org] != line_new[si_new])
+			break;
+		    ++si_org;
+		    ++si_new;
+		}
+	    }
 #ifdef FEAT_MBYTE
 	    if (has_mbyte)
 	    {
 		/* Move back to first byte of character in both lines (may
 		 * have "nn^" in line_org and "n^ in line_new). */
-		si -= (*mb_head_off)(line_org, line_org + si);
-		si -= (*mb_head_off)(line_new, line_new + si);
+		si_org -= (*mb_head_off)(line_org, line_org + si_org);
+		si_new -= (*mb_head_off)(line_new, line_new + si_new);
 	    }
 #endif
-	    if (*startp > si)
-		*startp = si;
+	    if (*startp > si_org)
+		*startp = si_org;
 
 	    /* Search for end of difference, if any. */
-	    if (line_org[si] != NUL || line_new[si] != NUL)
+	    if (line_org[si_org] != NUL || line_new[si_new] != NUL)
 	    {
 		ei_org = (int)STRLEN(line_org);
 		ei_new = (int)STRLEN(line_new);
-		while (ei_org >= *startp && ei_new >= *startp
-			&& ei_org >= 0 && ei_new >= 0
-			&& line_org[ei_org] == line_new[ei_new])
+		while (ei_org >= *startp && ei_new >= si_new
+						&& ei_org >= 0 && ei_new >= 0)
 		{
-		    --ei_org;
-		    --ei_new;
+		    if ((diff_flags & DIFF_IWHITE)
+			    && vim_iswhite(line_org[ei_org])
+			    && vim_iswhite(line_new[ei_new]))
+		    {
+			while (ei_org >= *startp
+					     && vim_iswhite(line_org[ei_org]))
+			    --ei_org;
+			while (ei_new >= si_new
+					     && vim_iswhite(line_new[ei_new]))
+			    --ei_new;
+		    }
+		    else
+		    {
+			if (line_org[ei_org] != line_new[ei_new])
+			    break;
+			--ei_org;
+			--ei_new;
+		    }
 		}
 		if (*endp < ei_org)
 		    *endp = ei_org;
diff --git a/src/edit.c b/src/edit.c
index a57787a98a9731f765866734e4a7d999d9e80164..8fd9ed451f9cfeb86da775710f467150563d4730 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -2140,7 +2140,7 @@ ins_compl_add(str, len, icase, fname, cptext, cdir, flags)
      * - a copy of fname, FREE_FNAME is set to free later THE allocated mem.
      * - NULL otherwise.	--Acevedo */
     if (fname != NULL
-	    && compl_curr_match
+	    && compl_curr_match != NULL
 	    && compl_curr_match->cp_fname != NULL
 	    && STRCMP(fname, compl_curr_match->cp_fname) == 0)
 	match->cp_fname = compl_curr_match->cp_fname;
@@ -2501,6 +2501,11 @@ ins_compl_show_pum()
 						    * compl_match_arraysize));
 	if (compl_match_array != NULL)
 	{
+	    /* If the current match is the original text don't find the first
+	     * match after it, don't highlight anything. */
+	    if (compl_shown_match->cp_flags & ORIGINAL_TEXT)
+		shown_match_ok = TRUE;
+
 	    i = 0;
 	    compl = compl_first_match;
 	    do
@@ -2571,8 +2576,10 @@ ins_compl_show_pum()
 	    if (compl_match_array[i].pum_text == compl_shown_match->cp_str
 		    || compl_match_array[i].pum_text
 				      == compl_shown_match->cp_text[CPT_ABBR])
+	    {
+		cur = i;
 		break;
-	cur = i;
+	    }
     }
 
     if (compl_match_array != NULL)
@@ -2951,6 +2958,8 @@ ins_compl_bs()
 	ins_compl_free();
 	compl_started = FALSE;
 	compl_matches = 0;
+	compl_cont_status = 0;
+	compl_cont_mode = 0;
     }
 
     line = ml_get_curline();
@@ -2983,6 +2992,15 @@ ins_compl_bs()
 	    }
 	}
 
+	/* Go to the original text, since none of the matches is inserted. */
+	if (compl_first_match->cp_prev != NULL
+		&& (compl_first_match->cp_prev->cp_flags & ORIGINAL_TEXT))
+	    compl_shown_match = compl_first_match->cp_prev;
+	else
+	    compl_shown_match = compl_first_match;
+	compl_curr_match = compl_shown_match;
+	compl_shows_dir = compl_direction;
+
 	/* Show the popup menu with a different set of matches. */
 	ins_compl_show_pum();
 	compl_used_match = FALSE;
diff --git a/src/eval.c b/src/eval.c
index 45efab72cc050690e535eed476c87d4883ed90e5..8728608e8882640112fee59e018a9d4a420610ee 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -4696,8 +4696,8 @@ eval7(arg, rettv, evaluate)
 }
 
 /*
- * Evaluate an "[expr]" or "[expr:expr]" index.
- * "*arg" points to the '['.
+ * Evaluate an "[expr]" or "[expr:expr]" index.  Also "dict.key".
+ * "*arg" points to the '[' or '.'.
  * Returns FAIL or OK. "*arg" is advanced to after the ']'.
  */
     static int
@@ -4867,7 +4867,9 @@ eval_index(arg, rettv, evaluate, verbose)
 
 		    if (n2 < 0)
 			n2 = len + n2;
-		    if (!empty2 && (n2 < 0 || n2 >= len || n2 + 1 < n1))
+		    else if (n2 >= len)
+			n2 = len - 1;
+		    if (!empty2 && (n2 < 0 || n2 + 1 < n1))
 		    {
 			if (verbose)
 			    EMSGN(_(e_listidx), n2);
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 7592c7f7144438432e467e858d2d8d63a2abc5d9..f99662f9a0b4850a9e0bd8d67dcf7fa6d2808919 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -2118,7 +2118,7 @@ CenterWindow(
     hChild = rChild.bottom - rChild.top;
 
     /* If Vim is minimized put the window in the middle of the screen. */
-    if (IsMinimized(hwndParent))
+    if (hwndParent == NULL || IsMinimized(hwndParent))
     {
 #ifdef WIN16
 	rParent.left = 0;
diff --git a/src/misc1.c b/src/misc1.c
index 905df158cf27ab66d826f45eb1161d0b50e6db2a..dd1da4694905d1003c9a609213971863b26ef86c 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -4658,18 +4658,30 @@ find_start_comment(ind_maxcomment)	    /* XXX */
     pos_T	*pos;
     char_u	*line;
     char_u	*p;
+    int		cur_maxcomment = ind_maxcomment;
 
-    if ((pos = findmatchlimit(NULL, '*', FM_BACKWARD, ind_maxcomment)) == NULL)
-	return NULL;
+    for (;;)
+    {
+	pos = findmatchlimit(NULL, '*', FM_BACKWARD, cur_maxcomment);
+	if (pos == NULL)
+	    break;
 
-    /*
-     * Check if the comment start we found is inside a string.
-     */
-    line = ml_get(pos->lnum);
-    for (p = line; *p && (unsigned)(p - line) < pos->col; ++p)
-	p = skip_string(p);
-    if ((unsigned)(p - line) > pos->col)
-	return NULL;
+	/*
+	 * Check if the comment start we found is inside a string.
+	 * If it is then restrict the search to below this line and try again.
+	 */
+	line = ml_get(pos->lnum);
+	for (p = line; *p && (unsigned)(p - line) < pos->col; ++p)
+	    p = skip_string(p);
+	if ((unsigned)(p - line) <= pos->col)
+	    break;
+	cur_maxcomment = curwin->w_cursor.lnum - pos->lnum - 1;
+	if (cur_maxcomment <= 0)
+	{
+	    pos = NULL;
+	    break;
+	}
+    }
     return pos;
 }
 
@@ -4770,6 +4782,7 @@ static int	cin_isif __ARGS((char_u *));
 static int	cin_iselse __ARGS((char_u *));
 static int	cin_isdo __ARGS((char_u *));
 static int	cin_iswhileofdo __ARGS((char_u *, linenr_T, int));
+static int	cin_iswhileofdo_end __ARGS((int terminated, int	ind_maxparen, int ind_maxcomment));
 static int	cin_isbreak __ARGS((char_u *));
 static int	cin_is_cpp_baseclass __ARGS((char_u *line, colnr_T *col));
 static int	get_baseclass_amount __ARGS((int col, int ind_maxparen, int ind_maxcomment, int ind_cpp_baseclass));
@@ -5078,7 +5091,7 @@ get_indent_nolabel(lnum)		/* XXX */
 
 /*
  * Find indent for line "lnum", ignoring any case or jump label.
- * Also return a pointer to the text (after the label).
+ * Also return a pointer to the text (after the label) in "pp".
  *   label:	if (asdf && asdfasdf)
  *		^
  */
@@ -5442,6 +5455,66 @@ cin_iswhileofdo(p, lnum, ind_maxparen)	    /* XXX */
     return retval;
 }
 
+/*
+ * Return TRUE if we are at the end of a do-while.
+ *    do
+ *       nothing;
+ *    while (foo
+ *             && bar);  <-- here
+ * Adjust the cursor to the line with "while".
+ */
+    static int
+cin_iswhileofdo_end(terminated, ind_maxparen, ind_maxcomment)
+    int	    terminated;
+    int	    ind_maxparen;
+    int	    ind_maxcomment;
+{
+    char_u	*line;
+    char_u	*p;
+    char_u	*s;
+    pos_T	*trypos;
+    int		i;
+
+    if (terminated != ';')	/* there must be a ';' at the end */
+	return FALSE;
+
+    p = line = ml_get_curline();
+    while (*p != NUL)
+    {
+	p = cin_skipcomment(p);
+	if (*p == ')')
+	{
+	    s = skipwhite(p + 1);
+	    if (*s == ';' && cin_nocode(s + 1))
+	    {
+		/* Found ");" at end of the line, now check there is "while"
+		 * before the matching '('.  XXX */
+		i = p - line;
+		curwin->w_cursor.col = i;
+		trypos = find_match_paren(ind_maxparen, ind_maxcomment);
+		if (trypos != NULL)
+		{
+		    s = cin_skipcomment(ml_get(trypos->lnum));
+		    if (*s == '}')		/* accept "} while (cond);" */
+			s = cin_skipcomment(s + 1);
+		    if (STRNCMP(s, "while", 5) == 0 && !vim_isIDc(s[5]))
+		    {
+			curwin->w_cursor.lnum = trypos->lnum;
+			return TRUE;
+		    }
+		}
+
+		/* Searching may have made "line" invalid, get it again. */
+		line = ml_get_curline();
+		p = line + i;
+	    }
+	}
+	if (*p != NUL)
+	    ++p;
+    }
+    return FALSE;
+}
+
     static int
 cin_isbreak(p)
     char_u  *p;
@@ -5716,7 +5789,7 @@ find_start_brace(ind_maxcomment)	    /* XXX */
 	trypos = &pos_copy;
 	curwin->w_cursor = *trypos;
 	pos = NULL;
-	/* ignore the { if it's in a // comment */
+	/* ignore the { if it's in a // or / *  * / comment */
 	if ((colnr_T)cin_skip2pos(trypos) == trypos->col
 		&& (pos = find_start_comment(ind_maxcomment)) == NULL) /* XXX */
 	    break;
@@ -5738,7 +5811,7 @@ find_match_paren(ind_maxparen, ind_maxcomment)	    /* XXX */
 {
     pos_T	cursor_save;
     pos_T	*trypos;
-    static pos_T	pos_copy;
+    static pos_T pos_copy;
 
     cursor_save = curwin->w_cursor;
     if ((trypos = findmatchlimit(NULL, '(', 0, ind_maxparen)) != NULL)
@@ -5941,6 +6014,11 @@ get_c_indent()
      */
     int ind_matching_paren = 0;
 
+    /*
+     * indent a closing parentheses under the previous line.
+     */
+    int ind_paren_prev = 0;
+
     /*
      * Extra indent for comments.
      */
@@ -6079,6 +6157,7 @@ get_c_indent()
 	    case 'W': ind_unclosed_wrapped = n; break;
 	    case 'w': ind_unclosed_whiteok = n; break;
 	    case 'm': ind_matching_paren = n; break;
+	    case 'M': ind_paren_prev = n; break;
 	    case ')': ind_maxparen = n; break;
 	    case '*': ind_maxcomment = n; break;
 	    case 'g': ind_scopedecl = n; break;
@@ -6322,41 +6401,50 @@ get_c_indent()
 	 * If the matching paren is more than one line away, use the indent of
 	 * a previous non-empty line that matches the same paren.
 	 */
-	amount = -1;
-	cur_amount = MAXCOL;
-	our_paren_pos = *trypos;
-	for (lnum = cur_curpos.lnum - 1; lnum > our_paren_pos.lnum; --lnum)
+	if (theline[0] == ')' && ind_paren_prev)
 	{
-	    l = skipwhite(ml_get(lnum));
-	    if (cin_nocode(l))		/* skip comment lines */
-		continue;
-	    if (cin_ispreproc_cont(&l, &lnum))	/* ignore #defines, #if, etc. */
-		continue;
-	    curwin->w_cursor.lnum = lnum;
-
-	    /* Skip a comment. XXX */
-	    if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
+	    /* Line up with the start of the matching paren line. */
+	    amount = get_indent_lnum(curwin->w_cursor.lnum - 1);  /* XXX */
+	}
+	else
+	{
+	    amount = -1;
+	    cur_amount = MAXCOL;
+	    our_paren_pos = *trypos;
+	    for (lnum = cur_curpos.lnum - 1; lnum > our_paren_pos.lnum; --lnum)
 	    {
-		lnum = trypos->lnum + 1;
-		continue;
-	    }
+		l = skipwhite(ml_get(lnum));
+		if (cin_nocode(l))		/* skip comment lines */
+		    continue;
+		if (cin_ispreproc_cont(&l, &lnum))
+		    continue;			/* ignore #define, #if, etc. */
+		curwin->w_cursor.lnum = lnum;
 
-	    /* XXX */
-	    if ((trypos = find_match_paren(
-			    corr_ind_maxparen(ind_maxparen, &cur_curpos),
+		/* Skip a comment. XXX */
+		if ((trypos = find_start_comment(ind_maxcomment)) != NULL)
+		{
+		    lnum = trypos->lnum + 1;
+		    continue;
+		}
+
+		/* XXX */
+		if ((trypos = find_match_paren(
+				corr_ind_maxparen(ind_maxparen, &cur_curpos),
 						      ind_maxcomment)) != NULL
-		    && trypos->lnum == our_paren_pos.lnum
-		    && trypos->col == our_paren_pos.col)
-	    {
-		    amount = get_indent_lnum(lnum);	/* XXX */
+			&& trypos->lnum == our_paren_pos.lnum
+			&& trypos->col == our_paren_pos.col)
+		{
+			amount = get_indent_lnum(lnum);	/* XXX */
 
-		    if (theline[0] == ')')
-		    {
-			if (our_paren_pos.lnum != lnum && cur_amount > amount)
-			    cur_amount = amount;
-			amount = -1;
-		    }
-		break;
+			if (theline[0] == ')')
+			{
+			    if (our_paren_pos.lnum != lnum
+						       && cur_amount > amount)
+				cur_amount = amount;
+			    amount = -1;
+			}
+		    break;
+		}
 	    }
 	}
 
@@ -6367,9 +6455,34 @@ get_c_indent()
 	 */
 	if (amount == -1)
 	{
+	    int	    ignore_paren_col = 0;
+
 	    amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment);
+	    look = skipwhite(look);
+	    if (*look == '(')
+	    {
+		linenr_T    save_lnum = curwin->w_cursor.lnum;
+		char_u	    *line;
+		int	    look_col;
+
+		/* Ignore a '(' in front of the line that has a match before
+		 * our matching '('. */
+		curwin->w_cursor.lnum = our_paren_pos.lnum;
+		line = ml_get_curline();
+		look_col = look - line;
+		curwin->w_cursor.col = look_col + 1;
+		if ((trypos = findmatchlimit(NULL, ')', 0, ind_maxparen))
+								      != NULL
+			  && trypos->lnum == our_paren_pos.lnum
+			  && trypos->col < our_paren_pos.col)
+		    ignore_paren_col = trypos->col + 1;
+
+		curwin->w_cursor.lnum = save_lnum;
+		look = ml_get(our_paren_pos.lnum) + look_col;
+	    }
 	    if (theline[0] == ')' || ind_unclosed == 0
-		       || (!ind_unclosed_noignore && *skipwhite(look) == '('))
+		    || (!ind_unclosed_noignore && *look == '('
+						    && ignore_paren_col == 0))
 	    {
 		/*
 		 * If we're looking at a close paren, line up right there;
@@ -6439,16 +6552,17 @@ get_c_indent()
 		/* Line up with the start of the matching paren line. */
 	    }
 	    else if (ind_unclosed == 0 || (!ind_unclosed_noignore
-						  && *skipwhite(look) == '('))
+				    && *look == '(' && ignore_paren_col == 0))
 	    {
 		if (cur_amount != MAXCOL)
 		    amount = cur_amount;
 	    }
 	    else
 	    {
-		/* add ind_unclosed2 for each '(' before our matching one */
+		/* Add ind_unclosed2 for each '(' before our matching one, but
+		 * ignore (void) before the line (ignore_paren_col). */
 		col = our_paren_pos.col;
-		while (our_paren_pos.col > 0)
+		while (our_paren_pos.col > ignore_paren_col)
 		{
 		    --our_paren_pos.col;
 		    switch (*ml_get_pos(&our_paren_pos))
@@ -6887,7 +7001,12 @@ get_c_indent()
 			amount = n;
 			l = after_label(ml_get_curline());
 			if (l != NULL && cin_is_cinword(l))
-			    amount += ind_level + ind_no_brace;
+			{
+			    if (theline[0] == '{')
+				amount += ind_open_extra;
+			    else
+				amount += ind_level + ind_no_brace;
+			}
 			break;
 		    }
 
@@ -7259,8 +7378,8 @@ get_c_indent()
 		 * If so: Ignore until the matching "do".
 		 */
 							/* XXX */
-		else if (cin_iswhileofdo(l,
-					 curwin->w_cursor.lnum, ind_maxparen))
+		else if (cin_iswhileofdo_end(terminated, ind_maxparen,
+							      ind_maxcomment))
 		{
 		    /*
 		     * Found an unterminated line after a while ();, line up
diff --git a/src/search.c b/src/search.c
index a063a26beb56b0559ef3e156c84fa6b5da92d7a8..addb9cdb0a228f15f1c30ba36840bd42c77ba09d 100644
--- a/src/search.c
+++ b/src/search.c
@@ -1930,7 +1930,7 @@ findmatchlimit(oap, initc, flags, maxtravel)
 		    break;
 		--pos.lnum;
 
-		if (maxtravel && traveled++ > maxtravel)
+		if (maxtravel > 0 && ++traveled > maxtravel)
 		    break;
 
 		linep = ml_get(pos.lnum);
diff --git a/src/testdir/test3.in b/src/testdir/test3.in
index 89831183483eb165217295bc92678d2e779ae703..b929279f4dc603f317ca57d5b1044db6b230b6df 100644
--- a/src/testdir/test3.in
+++ b/src/testdir/test3.in
@@ -10,7 +10,7 @@ STARTTEST
 =/end of AUTO
 ENDTEST
 
-/* start of AUTO matically checked */
+/* start of AUTO matically checked vim: set ts=4 : */
 {
 	if (test)
 		cmd1;
@@ -766,7 +766,39 @@ Constructor::Constructor(int a,
 	mMember(b)
 {
 }
+       int main ()
+       {
+	 if (lala)
+	   do
+	     ++(*lolo);
+	   while (lili
+		  && lele);
+	   lulu;
+       }
 
+int main ()
+{
+switch (c)
+{
+case 'c': if (cond)
+{
+}
+}
+}
+
+main()
+{
+	(void) MyFancyFuasdfadsfnction(
+			argument);
+}
+
+main()
+{
+	char	foo[] = "/*";
+	/* as
+	df */
+		hello
+}
 /* end of AUTO */
 
 STARTTEST
@@ -1269,6 +1301,19 @@ ENDTEST
          );
 }
 
+STARTTEST
+:set cino=M1
+2kdd]]=][
+ENDTEST
+
+int main ()
+{
+	if (cond1 &&
+			cond2
+			)
+		foo;
+}
+
 STARTTEST
 :g/^STARTTEST/.,/^ENDTEST/d
 :1;/start of AUTO/,$wq! test.out
diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok
index 2c7fd17f56f32314cac9e7824f5ed2c34e4c157c..8c015a3389360a6113a119fb0452892c5bb17f51 100644
--- a/src/testdir/test3.ok
+++ b/src/testdir/test3.ok
@@ -1,4 +1,4 @@
-/* start of AUTO matically checked */
+/* start of AUTO matically checked vim: set ts=4 : */
 {
 	if (test)
 		cmd1;
@@ -754,7 +754,39 @@ Constructor::Constructor(int a,
 	mMember(b)
 {
 }
+int main ()
+{
+	if (lala)
+		do
+			++(*lolo);
+		while (lili
+				&& lele);
+	lulu;
+}
+
+int main ()
+{
+	switch (c)
+	{
+		case 'c': if (cond)
+				  {
+				  }
+	}
+}
+
+main()
+{
+	(void) MyFancyFuasdfadsfnction(
+			argument);
+}
 
+main()
+{
+	char	foo[] = "/*";
+	/* as
+	   df */
+	hello
+}
 /* end of AUTO */
 
 
@@ -1142,3 +1174,12 @@ foo()
 			);
 }
 
+
+int main ()
+{
+	if (cond1 &&
+			cond2
+			)
+		foo;
+}
+
diff --git a/src/version.h b/src/version.h
index 11f5d83d617ee67d9eb21142ddf1b63ebe94aa8a..843d9a124380674a9da24df898c122f409ab67a0 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70d"
 #define VIM_VERSION_SHORT	"7.0d"
-#define VIM_VERSION_MEDIUM	"7.0d03 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0d03 BETA (2006 Apr 13)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0d03 BETA (2006 Apr 13, compiled "
+#define VIM_VERSION_MEDIUM	"7.0d04 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0d04 BETA (2006 Apr 14)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0d04 BETA (2006 Apr 14, compiled "