# HG changeset patch # User vimboss # Date 1145571440 0 # Node ID 8e5830943bff21c0a2aa18399d18c8269ed9d3f7 # Parent 6bb1fa855dc91259d295a1beeb4144aa51b3cab6 updated for version 7.0e04 diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim --- a/runtime/autoload/htmlcomplete.vim +++ b/runtime/autoload/htmlcomplete.vim @@ -1,7 +1,7 @@ " Vim completion script -" Language: HTML (XHTML 1.0 Strict by default) +" Language: HTML and XHTML " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) -" Last Change: 2006 Apr 17 +" Last Change: 2006 Apr 20 function! htmlcomplete#CompleteTags(findstart, base) if a:findstart @@ -159,12 +159,12 @@ function! htmlcomplete#CompleteTags(find if exists("b:entitiescompl") unlet! b:entitiescompl - if !exists("g:html_omni") + if !exists("b:html_omni") "runtime! autoload/xml/xhtml10s.vim call htmlcomplete#LoadData() endif - let entities = g:html_omni['vimxmlentities'] + let entities = b:html_omni['vimxmlentities'] if len(a:base) == 1 for m in entities @@ -462,8 +462,8 @@ function! htmlcomplete#CompleteTags(find endfor endif else - if has_key(g:html_omni, tag) && has_key(g:html_omni[tag][1], attrname) - let values = g:html_omni[tag][1][attrname] + if has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname) + let values = b:html_omni[tag][1][attrname] else return [] endif @@ -503,13 +503,13 @@ function! htmlcomplete#CompleteTags(find let sbase = matchstr(context, '.*\ze\s.*') " Load data {{{ - if !exists("g:html_omni_gen") + if !exists("b:html_omni_gen") call htmlcomplete#LoadData() endif " }}} - if has_key(g:html_omni, tag) - let attrs = keys(g:html_omni[tag][1]) + if has_key(b:html_omni, tag) + let attrs = keys(b:html_omni[tag][1]) else return [] endif @@ -522,13 +522,13 @@ function! htmlcomplete#CompleteTags(find endif endfor let menu = res + res2 - if has_key(g:html_omni, 'vimxmlattrinfo') + if has_key(b:html_omni, 'vimxmlattrinfo') let final_menu = [] for i in range(len(menu)) let item = menu[i] - if has_key(g:html_omni['vimxmlattrinfo'], item) - let m_menu = g:html_omni['vimxmlattrinfo'][item][0] - let m_info = g:html_omni['vimxmlattrinfo'][item][1] + if has_key(b:html_omni['vimxmlattrinfo'], item) + let m_menu = b:html_omni['vimxmlattrinfo'][item][0] + let m_info = b:html_omni['vimxmlattrinfo'][item][1] if m_menu !~ 'Bool' let item .= '="' endif @@ -558,7 +558,7 @@ function! htmlcomplete#CompleteTags(find endif " }}} " Load data {{{ - if !exists("g:html_omni") + if !exists("b:html_omni") "runtime! autoload/xml/xhtml10s.vim call htmlcomplete#LoadData() endif @@ -568,16 +568,16 @@ function! htmlcomplete#CompleteTags(find let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack")) " MM: TODO: GLOT works always the same but with some weird situation it " behaves as intended in HTML but screws in PHP - if opentag == '' || &ft == 'php' && !has_key(g:html_omni, opentag) + if opentag == '' || &ft == 'php' && !has_key(b:html_omni, opentag) " Hack for sometimes failing GetLastOpenTag. " As far as I tested fail isn't GLOT fault but problem " of invalid document - not properly closed tags and other mish-mash. " Also when document is empty. Return list of *all* tags. - let tags = keys(g:html_omni) + let tags = keys(b:html_omni) call filter(tags, 'v:val !~ "^vimxml"') else - if has_key(g:html_omni, opentag) - let tags = g:html_omni[opentag][0] + if has_key(b:html_omni, opentag) + let tags = b:html_omni[opentag][0] else return [] endif @@ -596,17 +596,20 @@ function! htmlcomplete#CompleteTags(find endif endfor let menu = res + res2 - if has_key(g:html_omni, 'vimxmltaginfo') + if has_key(b:html_omni, 'vimxmltaginfo') let final_menu = [] for i in range(len(menu)) let item = menu[i] - if has_key(g:html_omni['vimxmltaginfo'], item) - let m_menu = g:html_omni['vimxmltaginfo'][item][0] - let m_info = g:html_omni['vimxmltaginfo'][item][1] + if has_key(b:html_omni['vimxmltaginfo'], item) + let m_menu = b:html_omni['vimxmltaginfo'][item][0] + let m_info = b:html_omni['vimxmltaginfo'][item][1] else let m_menu = '' let m_info = '' endif + if &ft == 'html' && exists("uppercase_tag") && uppercase_tag == 1 + let item = toupper(item) + endif let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}] endfor else @@ -619,25 +622,39 @@ function! htmlcomplete#CompleteTags(find endfunction function! htmlcomplete#LoadData() " {{{ - if !exists("g:html_omni_flavor") - let g:html_omni_flavor = 'xhtml10s' + if !exists("b:html_omni_flavor") + if &ft == 'html' + let b:html_omni_flavor = 'html401t' + else + let b:html_omni_flavor = 'xhtml10s' + endif endif - exe 'runtime! autoload/xml/'.g:html_omni_flavor.'.vim' - " This one is necessary because we don't know if - " g:html_omni_flavor file exists and was sourced + " With that if we still have bloated memory but create new buffer + " variables only by linking to existing g:variable, not sourcing whole + " file. + if exists('g:xmldata_'.b:html_omni_flavor) + exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor + else + exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim' + exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor + endif + " This repetition is necessary because we don't know if + " b:html_omni_flavor file exists and was sourced " Proper checking for files would require iterating through 'rtp' " and could introduce OS dependent mess. - if !exists("g:xmldata_".g:html_omni_flavor) - let g:html_omni_flavor = 'xhtml10s' - runtime! autoload/xml/xhtml10s.vim + if !exists("g:xmldata_".b:html_omni_flavor) + if &ft == 'html' + let b:html_omni_flavor = 'html401t' + else + let b:html_omni_flavor = 'xhtml10s' + endif endif - - exe 'let g:html_omni = g:xmldata_'.g:html_omni_flavor - - " Free some memory - exe 'unlet! g:xmldata_'.g:html_omni_flavor - - "call htmlcomplete#LoadData() + if exists('g:xmldata_'.b:html_omni_flavor) + exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor + else + exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim' + exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor + endif endfunction " }}} " vim:set foldmethod=marker: diff --git a/runtime/autoload/pythoncomplete.vim b/runtime/autoload/pythoncomplete.vim --- a/runtime/autoload/pythoncomplete.vim +++ b/runtime/autoload/pythoncomplete.vim @@ -1,20 +1,16 @@ "pythoncomplete.vim - Omni Completion for python -" Maintainer: Aaron Griffin -" Version: 0.3 -" Last Updated: 23 January 2006 +" Maintainer: Aaron Griffin +" Version: 0.5 +" Last Updated: 19 April 2006 " -" v0.3 Changes: -" added top level def parsing -" for safety, call returns are not evaluated -" handful of parsing changes -" trailing ( and . characters -" argument completion on open parens -" stop parsing at current line - ++performance, local var resolution +" Yeah, I skipped a version number - 0.4 was never public. +" It was a bugfix version on top of 0.3. This is a complete +" rewrite. " -" TODO -" RExec subclass -" Code cleanup + make class -" use internal dict, not globals() +" TODO: +" User defined docstrings aren't handled right... +" 'info' item output can use some formatting work +" Add an "unsafe eval" mode, to allow for return type evaluation if !has('python') echo "Error: Required vim compiled with +python" @@ -23,12 +19,12 @@ endif function! pythoncomplete#Complete(findstart, base) "findstart = 1 when we need to get the text length - if a:findstart + if a:findstart == 1 let line = getline('.') let idx = col('.') while idx > 0 let idx -= 1 - let c = line[idx-1] + let c = line[idx] if c =~ '\w' continue elseif ! c =~ '\.' @@ -42,310 +38,530 @@ function! pythoncomplete#Complete(findst return idx "findstart = 0 when we need to return the list of completions else - execute "python get_completions('" . a:base . "')" + "vim no longer moves the cursor upon completion... fix that + let line = getline('.') + let idx = col('.') + let cword = '' + while idx > 0 + let idx -= 1 + let c = line[idx] + if c =~ '\w' || c =~ '\.' + let cword = c . cword + continue + elseif strlen(cword) > 0 || idx == 0 + break + endif + endwhile + execute "python vimcomplete('" . cword . "', '" . a:base . "')" return g:pythoncomplete_completions endif endfunction function! s:DefPython() python << PYTHONEOF -import vim, sys, types -import __builtin__ -import tokenize, keyword, cStringIO +import sys, tokenize, cStringIO, types +from token import NAME, DEDENT, NEWLINE, STRING -LOCALDEFS = \ - ['LOCALDEFS', 'clean_up','eval_source_code', \ - 'get_completions', '__builtin__', '__builtins__', \ - 'dbg', '__name__', 'vim', 'sys', 'parse_to_end', \ - 'parse_statement', 'tokenize', 'keyword', 'cStringIO', \ - 'debug_level', 'safe_eval', '_ctor', 'get_arguments', \ - 'strip_calls', 'types', 'parse_block'] +debugstmts=[] +def dbg(s): debugstmts.append(s) +def showdbg(): + for d in debugstmts: print "DBG: %s " % d -def dbg(level,msg): - debug_level = 1 +def vimcomplete(context,match): + global debugstmts + debugstmts = [] try: - debug_level = vim.eval("g:pythoncomplete_debug_level") - except: - pass - if level <= debug_level: print(msg) + import vim + def complsort(x,y): + return x['abbr'] > y['abbr'] + cmpl = Completer() + cmpl.evalsource('\n'.join(vim.current.buffer),vim.eval("line('.')")) + all = cmpl.get_completions(context,match) + all.sort(complsort) + dictstr = '[' + # have to do this for double quoting + for cmpl in all: + dictstr += '{' + for x in cmpl: dictstr += '"%s":"%s",' % (x,cmpl[x]) + dictstr += '"icase":0},' + if dictstr[-1] == ',': dictstr = dictstr[:-1] + dictstr += ']' + dbg("dict: %s" % dictstr) + vim.command("silent let g:pythoncomplete_completions = %s" % dictstr) + #dbg("Completion dict:\n%s" % all) + except vim.error: + dbg("VIM Error: %s" % vim.error) + +class Completer(object): + def __init__(self): + self.compldict = {} + self.parser = PyParser() + + def evalsource(self,text,line=0): + sc = self.parser.parse(text,line) + src = sc.get_code() + dbg("source: %s" % src) + try: exec(src) in self.compldict + except: dbg("parser: %s, %s" % (sys.exc_info()[0],sys.exc_info()[1])) + for l in sc.locals: + try: exec(l) in self.compldict + except: dbg("locals: %s, %s [%s]" % (sys.exc_info()[0],sys.exc_info()[1],l)) + + def _cleanstr(self,doc): + return doc.replace('"',' ')\ + .replace("'",' ')\ + .replace('\n',' ')\ + .replace('\r',' ')\ + .replace(' ',' ') + + def get_arguments(self,func_obj): + def _ctor(obj): + try: return class_ob.__init__.im_func + except AttributeError: + for base in class_ob.__bases__: + rc = _find_constructor(base) + if rc is not None: return rc + return None -def strip_calls(stmt): - parsed='' - level = 0 - for c in stmt: - if c in ['[','(']: - level += 1 - elif c in [')',']']: - level -= 1 - elif level == 0: - parsed += c - ##dbg(10,"stripped: %s" % parsed) - return parsed + arg_offset = 1 + if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj) + elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func + else: arg_offset = 0 + + arg_text = ')' + if type(func_obj) in [types.FunctionType, types.LambdaType]: + try: + cd = func_obj.func_code + real_args = cd.co_varnames[arg_offset:cd.co_argcount] + defaults = func_obj.func_defaults or [] + defaults = [map(lambda name: "=%s" % name, defaults)] + defaults = [""] * (len(real_args)-len(defaults)) + defaults + items = map(lambda a,d: a+d, real_args, defaults) + if func_obj.func_code.co_flags & 0x4: + items.append("...") + if func_obj.func_code.co_flags & 0x8: + items.append("***") + arg_text = ", ".join(items) + ')' + + except: + dbg("completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1])) + pass + if len(arg_text) == 0: + # The doc string sometimes contains the function signature + # this works for alot of C modules that are part of the + # standard library + doc = func_obj.__doc__ + if doc: + doc = doc.lstrip() + pos = doc.find('\n') + if pos > 0: + sigline = doc[:pos] + lidx = sigline.find('(') + ridx = sigline.find(')') + if lidx > 0 and ridx > 0: + arg_text = sigline[lidx+1:ridx] + ')' + return arg_text + + def get_completions(self,context,match): + dbg("get_completions('%s','%s')" % (context,match)) + stmt = '' + if context: stmt += str(context) + if match: stmt += str(match) + try: + result = None + all = {} + ridx = stmt.rfind('.') + if len(stmt) > 0 and stmt[-1] == '(': + #TODO + result = eval(_sanitize(stmt[:-1]), self.compldict) + doc = result.__doc__ + if doc == None: doc = '' + args = self.get_arguments(res) + return [{'word':self._cleanstr(args),'info':self._cleanstr(doc),'kind':'p'}] + elif ridx == -1: + match = stmt + all = self.compldict + else: + match = stmt[ridx+1:] + stmt = _sanitize(stmt[:ridx]) + result = eval(stmt, self.compldict) + all = dir(result) -def get_completions(base): - stmt = vim.eval('expand("")') - #dbg(1,"statement: %s - %s" % (stmt, base)) - stmt = stmt+base - eval_source_code() + dbg("completing: stmt:%s" % stmt) + completions = [] + + try: maindoc = result.__doc__ + except: maindoc = ' ' + if maindoc == None: maindoc = ' ' + for m in all: + if m == "_PyCmplNoType": continue #this is internal + try: + dbg('possible completion: %s' % m) + if m.find(match) == 0: + if result == None: inst = all[m] + else: inst = getattr(result,m) + try: doc = inst.__doc__ + except: doc = maindoc + typestr = str(inst) + if doc == None or doc == '': doc = maindoc + + wrd = m[len(match):] + c = {'word':wrd, 'abbr':m, 'info':self._cleanstr(doc),'kind':'m'} + if "function" in typestr: + c['word'] += '(' + c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) + c['kind'] = 'f' + elif "method" in typestr: + c['word'] += '(' + c['abbr'] += '(' + self._cleanstr(self.get_arguments(inst)) + c['kind'] = 'f' + elif "module" in typestr: + c['word'] += '.' + c['kind'] = 'm' + elif "class" in typestr: + c['word'] += '(' + c['abbr'] += '(' + c['kind']='c' + completions.append(c) + except: + i = sys.exc_info() + dbg("inner completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) + return completions + except: + i = sys.exc_info() + dbg("completion: %s,%s [stmt='%s']" % (i[0],i[1],stmt)) + return [] + +class Scope(object): + def __init__(self,name,indent): + self.subscopes = [] + self.docstr = '' + self.locals = [] + self.parent = None + self.name = name + self.indent = indent + + def add(self,sub): + #print 'push scope: [%s@%s]' % (sub.name,sub.indent) + sub.parent = self + self.subscopes.append(sub) + return sub - try: - ridx = stmt.rfind('.') - if stmt[-1] == '(': - match = "" - stmt = strip_calls(stmt[:len(stmt)-1]) - all = get_arguments(eval(stmt)) - elif ridx == -1: - match = stmt - all = globals() + __builtin__.__dict__ - else: - match = stmt[ridx+1:] - stmt = strip_calls(stmt[:ridx]) - all = eval(stmt).__dict__ + def doc(self,str): + """ Clean up a docstring """ + d = str.replace('\n',' ') + d = d.replace('\t',' ') + while d.find(' ') > -1: d = d.replace(' ',' ') + while d[0] in '"\'\t ': d = d[1:] + while d[-1] in '"\'\t ': d = d[:-1] + self.docstr = d + + def local(self,loc): + if not self._hasvaralready(loc): + self.locals.append(loc) + + def copy_decl(self,indent=0): + """ Copy a scope's declaration only, at the specified indent level - not local variables """ + return Scope(self.name,indent) + + def _hasvaralready(self,test): + "Convienance function... keep out duplicates" + if test.find('=') > -1: + var = test.split('=')[0].strip() + for l in self.locals: + if l.find('=') > -1 and var == l.split('=')[0].strip(): + return True + return False - #dbg(15,"completions for: %s, match=%s" % (stmt,match)) - completions = [] - if type(all) == types.DictType: - for m in all: - if m.find('_') != 0 and m.find(match) == 0 and \ - m not in LOCALDEFS: - #dbg(25,"matched... %s, %s" % (m, m.find(match))) - typestr = str(all[m]) - if "function" in typestr: m += '(' - elif "method" in typestr: m += '(' - elif "module" in typestr: m += '.' - elif "class" in typestr: m += '(' - completions.append(m) - completions.sort() + def get_code(self): + # we need to start with this, to fix up broken completions + # hopefully this name is unique enough... + str = '"""'+self.docstr+'"""\n' + str += 'class _PyCmplNoType:\n def __getattr__(self,name):\n return None\n' + for sub in self.subscopes: + str += sub.get_code() + #str += '\n'.join(self.locals)+'\n' + + return str + + def pop(self,indent): + #print 'pop scope: [%s] to [%s]' % (self.indent,indent) + outer = self + while outer.parent != None and outer.indent >= indent: + outer = outer.parent + return outer + + def currentindent(self): + #print 'parse current indent: %s' % self.indent + return ' '*self.indent + + def childindent(self): + #print 'parse child indent: [%s]' % (self.indent+1) + return ' '*(self.indent+1) + +class Class(Scope): + def __init__(self, name, supers, indent): + Scope.__init__(self,name,indent) + self.supers = supers + def copy_decl(self,indent=0): + c = Class(self.name,self.supers,indent) + for s in self.subscopes: + c.add(s.copy_decl(indent+1)) + return c + def get_code(self): + str = '%sclass %s' % (self.currentindent(),self.name) + if len(self.supers) > 0: str += '(%s)' % ','.join(self.supers) + str += ':\n' + if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' + if len(self.subscopes) > 0: + for s in self.subscopes: str += s.get_code() else: - completions.append(all) - #dbg(10,"all completions: %s" % completions) - vim.command("let g:pythoncomplete_completions = %s" % completions) - except: - vim.command("let g:pythoncomplete_completions = []") - #dbg(1,"exception: %s" % sys.exc_info()[1]) - clean_up() + str += '%spass\n' % self.childindent() + return str + + +class Function(Scope): + def __init__(self, name, params, indent): + Scope.__init__(self,name,indent) + self.params = params + def copy_decl(self,indent=0): + return Function(self.name,self.params,indent) + def get_code(self): + str = "%sdef %s(%s):\n" % \ + (self.currentindent(),self.name,','.join(self.params)) + if len(self.docstr) > 0: str += self.childindent()+'"""'+self.docstr+'"""\n' + str += "%spass\n" % self.childindent() + return str + +class PyParser: + def __init__(self): + self.top = Scope('global',0) + self.scope = self.top + + def _parsedotname(self,pre=None): + #returns (dottedname, nexttoken) + name = [] + if pre == None: + tokentype, token, indent = self.next() + if tokentype != NAME and token != '*': + return ('', token) + else: token = pre + name.append(token) + while True: + tokentype, token, indent = self.next() + if token != '.': break + tokentype, token, indent = self.next() + if tokentype != NAME: break + name.append(token) + return (".".join(name), token) + + def _parseimportlist(self): + imports = [] + while True: + name, token = self._parsedotname() + if not name: break + name2 = '' + if token == 'as': name2, token = self._parsedotname() + imports.append((name, name2)) + while token != "," and "\n" not in token: + tokentype, token, indent = self.next() + if token != ",": break + return imports + + def _parenparse(self): + name = '' + names = [] + level = 1 + while True: + tokentype, token, indent = self.next() + if token in (')', ',') and level == 1: + names.append(name) + name = '' + if token == '(': + level += 1 + elif token == ')': + level -= 1 + if level == 0: break + elif token == ',' and level == 1: + pass + else: + name += str(token) + return names + + def _parsefunction(self,indent): + self.scope=self.scope.pop(indent) + tokentype, fname, ind = self.next() + if tokentype != NAME: return None + + tokentype, open, ind = self.next() + if open != '(': return None + params=self._parenparse() + + tokentype, colon, ind = self.next() + if colon != ':': return None + + return Function(fname,params,indent) -def get_arguments(func_obj): - def _ctor(obj): - try: - return class_ob.__init__.im_func - except AttributeError: - for base in class_ob.__bases__: - rc = _find_constructor(base) - if rc is not None: return rc - return None + def _parseclass(self,indent): + self.scope=self.scope.pop(indent) + tokentype, cname, ind = self.next() + if tokentype != NAME: return None + + super = [] + tokentype, next, ind = self.next() + if next == '(': + super=self._parenparse() + elif next != ':': return None + + return Class(cname,super,indent) - arg_offset = 1 - if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj) - elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func - else: arg_offset = 0 - - #dbg(20,"%s, offset=%s" % (str(func_obj), arg_offset)) + def _parseassignment(self): + assign='' + tokentype, token, indent = self.next() + if tokentype == tokenize.STRING or token == 'str': + return '""' + elif token == '[' or token == 'list': + return '[]' + elif token == '{' or token == 'dict': + return '{}' + elif tokentype == tokenize.NUMBER: + return '0' + elif token == 'open' or token == 'file': + return 'file' + elif token == 'None': + return '_PyCmplNoType()' + elif token == 'type': + return 'type(_PyCmplNoType)' #only for method resolution + else: + assign += token + level = 0 + while True: + tokentype, token, indent = self.next() + if token in ('(','{','['): + level += 1 + elif token in (']','}',')'): + level -= 1 + if level == 0: break + elif level == 0: + if token in (';','\n'): break + assign += token + return "%s" % assign - arg_text = '' - if type(func_obj) in [types.FunctionType, types.LambdaType]: + def next(self): + type, token, (lineno, indent), end, self.parserline = self.gen.next() + if lineno == self.curline: + #print 'line found [%s] scope=%s' % (line.replace('\n',''),self.scope.name) + self.currentscope = self.scope + return (type, token, indent) + + def _adjustvisibility(self): + newscope = Scope('result',0) + scp = self.currentscope + while scp != None: + if type(scp) == Function: + slice = 0 + #Handle 'self' params + if scp.parent != None and type(scp.parent) == Class: + slice = 1 + p = scp.params[0] + i = p.find('=') + if i != -1: p = p[:i] + newscope.local('%s = %s' % (scp.params[0],scp.parent.name)) + for p in scp.params[slice:]: + i = p.find('=') + if i == -1: + newscope.local('%s = _PyCmplNoType()' % p) + else: + newscope.local('%s = %s' % (p[:i],_sanitize(p[i+1]))) + + for s in scp.subscopes: + ns = s.copy_decl(0) + newscope.add(ns) + for l in scp.locals: newscope.local(l) + scp = scp.parent + + self.currentscope = newscope + return self.currentscope + + #p.parse(vim.current.buffer[:],vim.eval("line('.')")) + def parse(self,text,curline=0): + self.curline = int(curline) + buf = cStringIO.StringIO(''.join(text) + '\n') + self.gen = tokenize.generate_tokens(buf.readline) + self.currentscope = self.scope + try: - cd = func_obj.func_code - real_args = cd.co_varnames[arg_offset:cd.co_argcount] - defaults = func_obj.func_defaults or [] - defaults = list(map(lambda name: "=%s" % name, defaults)) - defaults = [""] * (len(real_args)-len(defaults)) + defaults - items = map(lambda a,d: a+d, real_args, defaults) - if func_obj.func_code.co_flags & 0x4: - items.append("...") - if func_obj.func_code.co_flags & 0x8: - items.append("***") - arg_text = ", ".join(items) + ')' + freshscope=True + while True: + tokentype, token, indent = self.next() + #print 'main: token=[%s] indent=[%s]' % (token,indent) - except: - #dbg(1,"exception: %s" % sys.exc_info()[1]) + if tokentype == DEDENT: + self.scope = self.scope.pop(indent) + elif token == 'def': + func = self._parsefunction(indent) + if func == None: + print "function: syntax error..." + continue + freshscope = True + self.scope = self.scope.add(func) + elif token == 'class': + cls = self._parseclass(indent) + if cls == None: + print "class: syntax error..." + continue + freshscope = True + self.scope = self.scope.add(cls) + + elif token == 'import': + imports = self._parseimportlist() + for mod, alias in imports: + loc = "import %s" % mod + if len(alias) > 0: loc += " as %s" % alias + self.scope.local(loc) + freshscope = False + elif token == 'from': + mod, token = self._parsedotname() + if not mod or token != "import": + print "from: syntax error..." + continue + names = self._parseimportlist() + for name, alias in names: + loc = "from %s import %s" % (mod,name) + if len(alias) > 0: loc += " as %s" % alias + self.scope.local(loc) + freshscope = False + elif tokentype == STRING: + if freshscope: self.scope.doc(token) + elif tokentype == NAME: + name,token = self._parsedotname(token) + if token == '=': + stmt = self._parseassignment() + if stmt != None: + self.scope.local("%s = %s" % (name,stmt)) + freshscope = False + except StopIteration: #thrown on EOF pass - if len(arg_text) == 0: - # The doc string sometimes contains the function signature - # this works for alot of C modules that are part of the - # standard library - doc = getattr(func_obj, '__doc__', '') - if doc: - doc = doc.lstrip() - pos = doc.find('\n') - if pos > 0: - sigline = doc[:pos] - lidx = sigline.find('(') - ridx = sigline.find(')') - retidx = sigline.find('->') - ret = sigline[retidx+2:].strip() - if lidx > 0 and ridx > 0: - arg_text = sigline[lidx+1:ridx] + ')' - if len(ret) > 0: arg_text += ' #returns %s' % ret - #dbg(15,"argument completion: %s" % arg_text) - return arg_text + except: + dbg("parse error: %s, %s @ %s" % + (sys.exc_info()[0], sys.exc_info()[1], self.parserline)) + return self._adjustvisibility() -def parse_to_end(gen): - stmt='' +def _sanitize(str): + val = '' level = 0 - for type, str, begin, end, line in gen: - if line == vim.eval('getline(\'.\')'): break - elif str == '\\': continue - elif str == ';': - break - elif type == tokenize.NEWLINE and level == 0: - break - elif str in ['[','(']: + for c in str: + if c in ('(','{','['): level += 1 - elif str in [')',']']: + elif c in (']','}',')'): level -= 1 elif level == 0: - stmt += str - #dbg(10,"current statement: %s" % stmt) - return stmt - -def parse_block(gen): - lines = [] - level = 0 - for type, str, begin, end, line in gen: - if line.replace('\n','') == vim.eval('getline(\'.\')'): break - elif type == tokenize.INDENT: - level += 1 - elif type == tokenize.DEDENT: - level -= 1 - if level == 0: break; - else: - stmt = parse_statement(gen,str) - if len(stmt) > 0: lines.append(stmt) - return lines - -def parse_statement(gen,curstr=''): - var = curstr - type, str, begin, end, line = gen.next() - if str == '=': - type, str, begin, end, line = gen.next() - if type == tokenize.NEWLINE: - return '' - elif type == tokenize.STRING or str == 'str': - return '%s = str' % var - elif str == '[' or str == 'list': - return '%s= list' % var - elif str == '{' or str == 'dict': - return '%s = dict' % var - elif type == tokenize.NUMBER: - return '%s = 0' % var - elif str == 'Set': - return '%s = Set' % var - elif str == 'open' or str == 'file': - return '%s = file' % var - else: - inst = str + parse_to_end(gen) - if len(inst) > 0: - #dbg(5,"found [%s = %s]" % (var, inst)) - return '%s = %s' % (var, inst) - return '' - -def eval_source_code(): - LINE=vim.eval('getline(\'.\')') - s = cStringIO.StringIO('\n'.join(vim.current.buffer[:]) + '\n') - g = tokenize.generate_tokens(s.readline) - - stmts = [] - lineNo = 0 - try: - for type, str, begin, end, line in g: - if line.replace('\n','') == vim.eval('getline(\'.\')'): break - elif begin[0] == lineNo: continue - #junk - elif type == tokenize.INDENT or \ - type == tokenize.DEDENT or \ - type == tokenize.ERRORTOKEN or \ - type == tokenize.ENDMARKER or \ - type == tokenize.NEWLINE or \ - type == tokenize.COMMENT: - continue - #import statement - elif str == 'import': - import_stmt=parse_to_end(g) - if len(import_stmt) > 0: - #dbg(5,"found [import %s]" % import_stmt) - stmts.append("import %s" % import_stmt) - #import from statement - elif str == 'from': - type, str, begin, end, line = g.next() - mod = str - - type, str, begin, end, line = g.next() - if str != "import": break - from_stmt=parse_to_end(g) - if len(from_stmt) > 0: - #dbg(5,"found [from %s import %s]" % (mod, from_stmt)) - stmts.append("from %s import %s" % (mod, from_stmt)) - #def statement - elif str == 'def': - funcstr = '' - for type, str, begin, end, line in g: - if line.replace('\n','') == vim.eval('getline(\'.\')'): break - elif str == ':': - stmts += parse_block(g) - break - funcstr += str - if len(funcstr) > 0: - #dbg(5,"found [def %s]" % funcstr) - stmts.append("def %s:\n pass" % funcstr) - #class declaration - elif str == 'class': - type, str, begin, end, line = g.next() - classname = str - #dbg(5,"found [class %s]" % classname) - - level = 0 - members = [] - for type, str, begin, end, line in g: - if line.replace('\n','') == vim.eval('getline(\'.\')'): break - elif type == tokenize.INDENT: - level += 1 - elif type == tokenize.DEDENT: - level -= 1 - if level == 0: break; - elif str == 'def': - memberstr = '' - for type, str, begin, end, line in g: - if line.replace('\n','') == vim.eval('getline(\'.\')'): break - elif str == ':': - stmts += parse_block(g) - break - memberstr += str - #dbg(5," member [%s]" % memberstr) - members.append(memberstr) - classstr = 'class %s:' % classname - for m in members: - classstr += ("\n def %s:\n pass" % m) - stmts.append("%s\n" % classstr) - elif keyword.iskeyword(str) or str in globals(): - #dbg(5,"keyword = %s" % str) - lineNo = begin[0] - else: - assign = parse_statement(g,str) - if len(assign) > 0: stmts.append(assign) - - for s in stmts: - try: - #dbg(15,"evaluating: %s\n" % s) - exec(s) in globals() - except: - #dbg(1,"exception: %s" % sys.exc_info()[1]) - pass - except: - #dbg(1,"exception: %s" % sys.exc_info()[1]) - pass - -def clean_up(): - for o in globals().keys(): - if o not in LOCALDEFS: - try: - exec('del %s' % o) in globals() - except: pass + val += c + return val sys.path.extend(['.','..']) PYTHONEOF endfunction -let g:pythoncomplete_debug_level = 0 call s:DefPython() " vim: set et ts=4: diff --git a/runtime/autoload/rubycomplete.vim b/runtime/autoload/rubycomplete.vim --- a/runtime/autoload/rubycomplete.vim +++ b/runtime/autoload/rubycomplete.vim @@ -1,6 +1,6 @@ " Vim completion script " Language: Ruby -" Maintainer: Mark Guzman ( segfault AT hasno DOT info ) +" Maintainer: Mark Guzman " Info: $Id$ " URL: http://vim-ruby.rubyforge.org " Anon CVS: See above site @@ -11,16 +11,64 @@ " ---------------------------------------------------------------------------- if !has('ruby') + echohl ErrorMsg echo "Error: Required vim compiled with +ruby" + echohl None finish endif if version < 700 + echohl ErrorMsg echo "Error: Required vim >= 7.0" + echohl None finish endif -func! GetRubyVarType(v) + +function! GetBufferRubyModule(name) + let [snum,enum] = GetBufferRubyEntity(a:name, "module") + return snum . '..' . enum +endfunction + +function! GetBufferRubyClass(name) + let [snum,enum] = GetBufferRubyEntity(a:name, "class") + return snum . '..' . enum +endfunction + +function! GetBufferRubySingletonMethods(name) +endfunction + +function! GetBufferRubyEntity( name, type ) + let stopline = 1 + let crex = '^\s*' . a:type . '\s*' . a:name . '\s*\(<\s*.*\s*\)\?\n*\(\(\s\|#\).*\n*\)*\n*\s*end$' + let [lnum,lcol] = searchpos( crex, 'nbw') + if lnum == 0 && lcol == 0 + return [0,0] + endif + + let [enum,ecol] = searchpos( crex, 'nebw') + if lnum > enum + let realdef = getline( lnum ) + let crexb = '^' . realdef . '\n*\(\(\s\|#\).*\n*\)*\n*\s*end$' + let [enum,ecol] = searchpos( crexb, 'necw' ) + endif + " we found a the class def + return [lnum,enum] +endfunction + +function! IsInClassDef() + let [snum,enum] = GetBufferRubyEntity( '.*', "class" ) + let ret = 'nil' + let pos = line('.') + + if snum < pos && pos < enum + let ret = snum . '..' . enum + endif + + return ret +endfunction + +function! GetRubyVarType(v) let stopline = 1 let vtp = '' let pos = getpos('.') @@ -32,9 +80,9 @@ func! GetRubyVarType(v) return vtp endif call setpos('.',pos) - let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"'']\)','nb',stopline) + let [lnum,lcol] = searchpos(''.a:v.'\>\s*[+\-*/]*=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"''/]\|%r{\)','nb',stopline) if lnum != 0 && lcol != 0 - let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"'']\)',lcol) + let str = matchstr(getline(lnum),'=\s*\([^ \t]\+.\(now\|new\|open\|get_instance\)\>\|[\[{"''/]\|%r{\)',lcol) let str = substitute(str,'^=\s*','','') call setpos('.',pos) if str == '"' || str == '''' @@ -43,6 +91,8 @@ func! GetRubyVarType(v) return 'Array' elseif str == '{' return 'Hash' + elseif str == '/' || str == '%r{' + return 'Regexp' elseif strlen(str) > 4 let l = stridx(str,'.') return str[0:l-1] @@ -51,7 +101,7 @@ func! GetRubyVarType(v) endif call setpos('.',pos) return '' -endf +endfunction function! rubycomplete#Complete(findstart, base) "findstart = 1 when we need to get the text length @@ -74,14 +124,20 @@ function! rubycomplete#Complete(findstar return idx "findstart = 0 when we need to return the list of completions else + let g:rubycomplete_completions = [] execute "ruby get_completions('" . a:base . "')" - return g:rbcomplete_completions + return g:rubycomplete_completions endif endfunction function! s:DefRuby() ruby << RUBYEOF +RailsWords = [ + "has_many", "has_one", + "belongs_to", + ] + ReservedWords = [ "BEGIN", "END", "alias", "and", @@ -106,188 +162,290 @@ Operators = [ "%", "&", "*", "**", "+", "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>", "[]", "[]=", "^", ] -def identify_type(var) - @buf = VIM::Buffer.current - enum = @buf.line_number - snum = (enum-10).abs - nums = Range.new( snum, enum ) - regxs = '/.*(%s)\s*=(.*)/' % var - regx = Regexp.new( regxs ) - nums.each do |x| - ln = @buf[x] - #print $~ if regx.match( ln ) + +def load_requires + @buf = VIM::Buffer.current + enum = @buf.line_number + nums = Range.new( 1, enum ) + nums.each do |x| + ln = @buf[x] + begin + eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln ) + rescue Exception + #ignore? end + end +end + +def load_buffer_class(name) + classdef = get_buffer_entity(name, 'GetBufferRubyClass("%s")') + return if classdef == nil + + pare = /^\s*class\s*(.*)\s*<\s*(.*)\s*\n/.match( classdef ) + load_buffer_class( $2 ) if pare != nil + + mixre = /.*\n\s*include\s*(.*)\s*\n/.match( classdef ) + load_buffer_module( $2 ) if mixre != nil + + eval classdef +end + +def load_buffer_module(name) + classdef = get_buffer_entity(name, 'GetBufferRubyModule("%s")') + return if classdef == nil + + eval classdef end -def load_requires - @buf = VIM::Buffer.current - enum = @buf.line_number - nums = Range.new( 1, enum ) - nums.each do |x| - ln = @buf[x] - begin - eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln ) - rescue Exception - #ignore? - end +def get_buffer_entity(name, vimfun) + @buf = VIM::Buffer.current + nums = eval( VIM::evaluate( vimfun % name ) ) + return nil if nums == nil + return nil if nums.min == nums.max && nums.min == 0 + + cur_line = VIM::Buffer.current.line_number + classdef = "" + nums.each do |x| + if x != cur_line + ln = @buf[x] + classdef += "%s\n" % ln end + end + + return classdef +end + +def load_rails() + allow_rails = VIM::evaluate('g:rubycomplete_rails') + return if allow_rails != '1' + + buf_path = VIM::evaluate('expand("%:p")') + file_name = VIM::evaluate('expand("%:t")') + path = buf_path.gsub( file_name, '' ) + path.gsub!( /\\/, "/" ) + pup = [ "../", "../../", "../../../", "../../../../" ] + pok = nil + + pup.each do |sup| + tpok = "%s%sconfig" % [ path, sup ] + if File.exists?( tpok ) + pok = tpok + break + end + end + bootfile = pok + "/boot.rb" + require bootfile if pok != nil && File.exists?( bootfile ) +end + +def get_rails_helpers + allow_rails = VIM::evaluate('g:rubycomplete_rails') + return [] if allow_rails != '1' + return RailsWords end def get_completions(base) - load_requires - input = VIM::evaluate('expand("")') - input += base - message = nil + load_requires + load_rails + + input = VIM::evaluate('expand("")') + input += base + input.lstrip! + if input.length == 0 + input = VIM::Buffer.current.line + input.strip! + end + message = nil - case input - when /^(\/[^\/]*\/)\.([^.]*)$/ - # Regexp - receiver = $1 - message = Regexp.quote($2) + case input + when /^(\/[^\/]*\/)\.([^.]*)$/ + # Regexp + receiver = $1 + message = Regexp.quote($2) + + candidates = Regexp.instance_methods(true) + select_message(receiver, message, candidates) - candidates = Regexp.instance_methods(true) - select_message(receiver, message, candidates) + when /^([^\]]*\])\.([^.]*)$/ + # Array + receiver = $1 + message = Regexp.quote($2) + + candidates = Array.instance_methods(true) + select_message(receiver, message, candidates) + + when /^([^\}]*\})\.([^.]*)$/ + # Proc or Hash + receiver = $1 + message = Regexp.quote($2) - when /^([^\]]*\])\.([^.]*)$/ - # Array - receiver = $1 - message = Regexp.quote($2) + candidates = Proc.instance_methods(true) | Hash.instance_methods(true) + select_message(receiver, message, candidates) - candidates = Array.instance_methods(true) - select_message(receiver, message, candidates) + when /^(:[^:.]*)$/ + # Symbol + if Symbol.respond_to?(:all_symbols) + sym = $1 + candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name} + candidates.grep(/^#{sym}/) + candidates.delete_if do |c| + c.match( /'/ ) + end + candidates.uniq! + candidates.sort! + else + [] + end - when /^([^\}]*\})\.([^.]*)$/ - # Proc or Hash - receiver = $1 - message = Regexp.quote($2) + when /^::([A-Z][^:\.\(]*)$/ + # Absolute Constant or class methods + receiver = $1 + candidates = Object.constants + candidates.grep(/^#{receiver}/).collect{|e| "::" + e} - candidates = Proc.instance_methods(true) | Hash.instance_methods(true) - select_message(receiver, message, candidates) + when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ + # Constant or class methods + receiver = $1 + message = Regexp.quote($4) + begin + candidates = eval("#{receiver}.constants | #{receiver}.methods") + rescue Exception + candidates = [] + end + candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e} - when /^(:[^:.]*)$/ - # Symbol - if Symbol.respond_to?(:all_symbols) - sym = $1 - candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name} - candidates.grep(/^#{sym}/) - else - [] - end + when /^(:[^:.]+)\.([^.]*)$/ + # Symbol + receiver = $1 + message = Regexp.quote($2) + + candidates = Symbol.instance_methods(true) + select_message(receiver, message, candidates) + + when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ + # Numeric + receiver = $1 + message = Regexp.quote($4) - when /^::([A-Z][^:\.\(]*)$/ - # Absolute Constant or class methods - receiver = $1 - candidates = Object.constants - candidates.grep(/^#{receiver}/).collect{|e| "::" + e} + begin + candidates = eval(receiver).methods + rescue Exception + candidates + end + select_message(receiver, message, candidates) + + when /^(\$[^.]*)$/ + candidates = global_variables.grep(Regexp.new(Regexp.quote($1))) - when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ - # Constant or class methods - receiver = $1 - message = Regexp.quote($4) +# when /^(\$?(\.?[^.]+)+)\.([^.]*)$/ + when /^((\.?[^.]+)+)\.([^.]*)$/ + # variable + receiver = $1 + message = Regexp.quote($3) + load_buffer_class( receiver ) + + cv = eval("self.class.constants") + + vartype = VIM::evaluate("GetRubyVarType('%s')" % receiver) + if vartype != '' + load_buffer_class( vartype ) + begin - candidates = eval("#{receiver}.constants | #{receiver}.methods") + candidates = eval("#{vartype}.instance_methods") rescue Exception candidates = [] end - candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e} - - when /^(:[^:.]+)\.([^.]*)$/ - # Symbol - receiver = $1 - message = Regexp.quote($2) - - candidates = Symbol.instance_methods(true) - select_message(receiver, message, candidates) - - when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ - # Numeric - receiver = $1 - message = Regexp.quote($4) - + elsif (cv).include?(receiver) + # foo.func and foo is local var. + candidates = eval("#{receiver}.methods") + elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver + # Foo::Bar.func begin - candidates = eval(receiver).methods + candidates = eval("#{receiver}.methods") rescue Exception - candidates + candidates = [] end - select_message(receiver, message, candidates) - - when /^(\$[^.]*)$/ - candidates = global_variables.grep(Regexp.new(Regexp.quote($1))) - -# when /^(\$?(\.?[^.]+)+)\.([^.]*)$/ - when /^((\.?[^.]+)+)\.([^.]*)$/ - # variable - receiver = $1 - message = Regexp.quote($3) - - cv = eval("self.class.constants") - - vartype = VIM::evaluate("GetRubyVarType('%s')" % receiver) - if vartype != '' - candidates = eval("#{vartype}.instance_methods") - elsif (cv).include?(receiver) - # foo.func and foo is local var. - candidates = eval("#{receiver}.methods") - elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver - # Foo::Bar.func - begin - candidates = eval("#{receiver}.methods") - rescue Exception - candidates = [] - end - else - # func1.func2 - candidates = [] - ObjectSpace.each_object(Module){|m| - next if m.name != "IRB::Context" and - /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name - candidates.concat m.instance_methods(false) - } - candidates.sort! - candidates.uniq! - end - #identify_type( receiver ) - select_message(receiver, message, candidates) + else + # func1.func2 + candidates = [] + ObjectSpace.each_object(Module){|m| + next if m.name != "IRB::Context" and + /^(IRB|SLex|RubyLex|RubyToken)/ =~ m.name + candidates.concat m.instance_methods(false) + } + candidates.sort! + candidates.uniq! + end + #identify_type( receiver ) + select_message(receiver, message, candidates) #when /^((\.?[^.]+)+)\.([^.]*)\(\s*\)*$/ #function call #obj = $1 #func = $3 - when /^\.([^.]*)$/ + when /^\.([^.]*)$/ # unknown(maybe String) - receiver = "" - message = Regexp.quote($1) + receiver = "" + message = Regexp.quote($1) + + candidates = String.instance_methods(true) + select_message(receiver, message, candidates) + + else + inclass = eval( VIM::evaluate("IsInClassDef()") ) - candidates = String.instance_methods(true) + if inclass != nil + classdef = "%s\n" % VIM::Buffer.current[ inclass.min ] + found = /^\s*class\s*([A-Za-z0-9_-]*)(\s*<\s*([A-Za-z0-9_:-]*))?\s*\n$/.match( classdef ) + + if found != nil + receiver = $1 + message = input + load_buffer_class( receiver ) + candidates = eval( "#{receiver}.instance_methods" ) + candidates += get_rails_helpers select_message(receiver, message, candidates) - - else + end + end + + if inclass == nil || found == nil candidates = eval("self.class.constants") - (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/) end + end #print candidates - if message != nil && message.length > 0 - rexp = '^%s' % message.downcase - candidates.delete_if do |c| - c.downcase.match( rexp ) - $~ == nil - end + if message != nil && message.length > 0 + rexp = '^%s' % message.downcase + candidates.delete_if do |c| + c.downcase.match( rexp ) + $~ == nil end + end + outp = "" + + # tags = VIM::evaluate("taglist('^%s$')" % + valid = (candidates-Object.instance_methods) + + rg = 0..valid.length + rg.step(150) do |x| + stpos = 0+x + enpos = 150+x + valid[stpos..enpos].each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] } + outp.sub!(/,$/, '') + + VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp) outp = "" - # tags = VIM::evaluate("taglist('^%s$')" % - (candidates-Object.instance_methods).each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] } - outp.sub!(/,$/, '') - VIM::command("let g:rbcomplete_completions = [%s]" % outp) + end end def select_message(receiver, message, candidates) + #tags = VIM::evaluate("taglist('%s')" % receiver) + #print tags candidates.grep(/^#{message}/).collect do |e| case e when /^[a-zA-Z_]/ @@ -304,5 +462,7 @@ end RUBYEOF endfunction + +let g:rubycomplete_rails = 0 call s:DefRuby() " vim: set et ts=4: diff --git a/runtime/autoload/xml/xhtml10s.vim b/runtime/autoload/xml/xhtml10s.vim --- a/runtime/autoload/xml/xhtml10s.vim +++ b/runtime/autoload/xml/xhtml10s.vim @@ -1,7 +1,314 @@ -" 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"], +\ 'vimxmlroot': ['html'], +\ 'a': [ +\ ['br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'accesskey': [], 'rel': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'name': [], 'style': [], 'charset': [], 'xml:lang': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']} +\ ], +\ 'abbr': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'acronym': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'address': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'area': [ +\ [], +\ { 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'nohref': ['BOOL'], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'alt': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']} +\ ], +\ 'b': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'base': [ +\ [], +\ { 'href': [], 'id': []} +\ ], +\ 'bdo': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'big': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], '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', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'body': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'br': [ +\ [], +\ { 'id': [], 'style': [], 'class': [], 'title': []} +\ ], +\ 'button': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'table', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'noscript', 'ins', 'del', 'script'], +\ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'value': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']} +\ ], +\ 'caption': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'cite': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'code': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'col': [ +\ [], +\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'colgroup': [ +\ ['col'], +\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], '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', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'del': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'dfn': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'div': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'dl': [ +\ ['dt', 'dd'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'dt': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'em': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'fieldset': [ +\ ['legend', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'form': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'noscript', 'ins', 'del', 'script'], +\ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['get', 'get', 'post'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h1': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'h2': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'h3': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'h4': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'h5': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'h6': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ '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': [], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []} +\ ], +\ 'hr': [ +\ [], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'html': [ +\ ['head', 'body'], +\ { 'xmlns': ['http://www.w3.org/1999/xhtml'], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []} +\ ], +\ 'i': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'img': [ +\ [], +\ { 'width': [], 'usemap': [], 'ismap': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'alt': [], 'lang': [], 'src': [], 'longdesc': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'input': [ +\ [], +\ { 'ondblclick': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'src': [], 'name': [], 'checked': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['text', 'text', 'password', 'checkbox', 'radio', 'submit', 'reset', 'file', 'hidden', 'image', 'button'], 'accesskey': [], 'disabled': ['BOOL'], 'usemap': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'size': [], 'onfocus': [], 'maxlength': [], 'onselect': [], 'accept': [], 'tabindex': [], 'alt': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'ins': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'cite': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'kbd': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'label': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'legend': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'li': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'link': [ +\ [], +\ { 'rel': [], 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'media': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'map': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script', 'area'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'onclick': [], 'title': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmouseout': [], 'onmousemove': [], 'xml:lang': []} +\ ], +\ 'meta': [ +\ [], +\ { 'http-equiv': [], 'content': [], 'id': [], 'lang': [], 'name': [], 'scheme': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'noscript': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'object': [ +\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'data': [], 'declare': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'width': [], 'usemap': [], 'dir': ['ltr', 'rtl'], 'archive': [], 'standby': [], 'tabindex': [], 'classid': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'codetype': [], 'codebase': []} +\ ], +\ 'ol': [ +\ ['li'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'optgroup': [ +\ ['option'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'option': [ +\ [''], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'selected': ['BOOL']} +\ ], +\ 'p': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'param': [ +\ [], +\ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['data', 'data', 'ref', 'object']} +\ ], +\ 'pre': [ +\ ['a', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'br', 'span', 'bdo', 'map', 'ins', 'del', 'script', 'input', 'select', 'textarea', 'label', 'button'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'q': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'cite': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'samp': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'script': [ +\ [''], +\ { 'id': [], 'src': [], 'charset': [], 'xml:space': ['preserve', 'preserve'], 'type': ['text/javascript'], 'defer': ['BOOL']} +\ ], +\ 'select': [ +\ ['optgroup', 'option'], +\ { 'ondblclick': [], 'onkeydown': [], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'size': [], 'onblur': [], 'onfocus': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'multiple': ['BOOL']} +\ ], +\ 'small': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'span': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'strong': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'style': [ +\ [''], +\ { 'media': [], 'id': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'title': [], 'type': ['text/css'], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'sub': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'sup': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'table': [ +\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'frame': ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'], 'rules': ['none', 'groups', 'rows', 'cols', 'all'], 'dir': ['ltr', 'rtl'], 'summary': [], 'cellspacing': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'border': [], 'cellpadding': []} +\ ], +\ 'tbody': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'td': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'headers': [], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'textarea': [ +\ [''], +\ { 'ondblclick': [], 'cols': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'disabled': ['BOOL'], 'rows': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onselect': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'tfoot': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'th': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'pre', 'hr', 'blockquote', 'address', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'headers': [], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'thead': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'title': [ +\ [''], +\ { 'id': [], 'lang': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'tr': [ +\ ['th', 'td'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'tt': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'ul': [ +\ ['li'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'var': [ +\ ['a', 'br', 'span', 'bdo', 'map', 'object', 'img', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], \ 'vimxmlattrinfo' : { \ 'accept' : ['ContentType', ''], \ 'accesskey' : ['Character', ''], @@ -88,3988 +395,17 @@ let g:xmldata_xhtml10s = { \ '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' : [ -\ 'screen', -\ 'tty', -\ 'tv', -\ 'projection', -\ 'handheld', -\ 'print', -\ 'braille', -\ 'aural', -\ 'all' -\ ], -\ 'title' : [], -\ 'type' : [ -\ 'text/css' -\ ], -\ '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' : [] +\ 'vimxmltaginfo': { +\ 'area': ['/>', ''], +\ 'base': ['/>', ''], +\ 'br': ['/>', ''], +\ 'col': ['/>', ''], +\ 'hr': ['/>', ''], +\ 'img': ['/>', ''], +\ 'input': ['/>', ''], +\ 'link': ['/>', ''], +\ 'meta': ['/>', ''], +\ 'param': ['/>', ''], \ } -\ ], -\ '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' : [ -\ 'screen', -\ 'tty', -\ 'tv', -\ 'projection', -\ 'handheld', -\ 'print', -\ 'braille', -\ 'aural', -\ 'all' -\ ], -\ 'href' : [], -\ 'onmouseup' : [], -\ 'id' : [], -\ 'onmouseover' : [], -\ 'lang' : [], -\ 'style' : [], -\ 'onmousemove' : [], -\ 'onmouseout' : [], -\ 'charset' : [], -\ 'hreflang' : [], -\ 'xml:lang' : [], -\ 'onmousedown' : [], -\ 'onkeypress' : [], -\ 'rev' : [], -\ 'type' : [], -\ 'onclick' : [], -\ 'title' : [], -\ 'class' : [] -\ } -\ ], -\ 'script' : [[], -\ { -\ 'defer' : [ -\ 'BOOL' -\ ], -\ 'src' : [], -\ 'type' : [ -\ 'text/javascript' -\ ], -\ '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: +" vim:ft=vim:ff=unix diff --git a/runtime/autoload/xml/xhtml10t.vim b/runtime/autoload/xml/xhtml10t.vim new file mode 100644 --- /dev/null +++ b/runtime/autoload/xml/xhtml10t.vim @@ -0,0 +1,461 @@ +let g:xmldata_xhtml10t = { +\ '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"], +\ 'vimxmlroot': ['html'], +\ 'a': [ +\ ['br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'accesskey': [], 'rel': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'target': [], 'onfocus': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'xml:lang': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']} +\ ], +\ 'abbr': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'acronym': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'address': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script', 'p'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'applet': [ +\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'width': [], 'object': [], 'id': [], 'code': [], 'vspace': [], 'archive': [], 'alt': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'style': [], 'name': [], 'height': [], 'hspace': [], 'title': [], 'class': [], 'codebase': []} +\ ], +\ 'area': [ +\ [], +\ { 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'nohref': ['BOOL'], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'alt': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'shape': ['rect', 'rect', 'circle', 'poly', 'default']} +\ ], +\ 'b': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'base': [ +\ [], +\ { 'target': [], 'href': [], 'id': []} +\ ], +\ 'basefont': [ +\ [], +\ { 'size': [], 'face': [], 'color': [], 'id': []} +\ ], +\ 'bdo': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'big': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'blockquote': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'body': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'xml:lang': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'br': [ +\ [], +\ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []} +\ ], +\ 'button': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'table', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'noscript', 'ins', 'del', 'script'], +\ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'value': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']} +\ ], +\ 'caption': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['top', 'bottom', 'left', 'right'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'center': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'cite': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'code': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'col': [ +\ [], +\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'colgroup': [ +\ ['col'], +\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'charoff': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'char': [], 'span': ['1'], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'dd': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'del': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'dfn': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'dir': [ +\ ['li'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'div': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'dl': [ +\ ['dt', 'dd'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'dt': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'em': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'fieldset': [ +\ ['legend', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'font': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'xml:lang': [], 'title': [], 'class': []} +\ ], +\ 'form': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['get', 'get', 'post'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h1': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h2': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h3': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h4': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h5': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'h6': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'head': [ +\ ['script', 'style', 'meta', 'link', 'object', 'isindex', 'title', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object', 'isindex', 'title', 'script', 'style', 'meta', 'link', 'object', 'isindex'], +\ { 'profile': [], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []} +\ ], +\ 'hr': [ +\ [], +\ { 'width': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'size': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'noshade': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'html': [ +\ ['head', 'body'], +\ { 'xmlns': ['http://www.w3.org/1999/xhtml'], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []} +\ ], +\ 'i': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []} +\ ], +\ 'iframe': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'width': [], 'scrolling': ['auto', 'yes', 'no', 'auto'], 'marginwidth': [], 'id': [], 'marginheight': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'longdesc': [], 'src': [], 'style': [], 'name': [], 'height': [], 'frameborder': ['1', '1', '0'], 'title': [], 'class': []} +\ ], +\ 'img': [ +\ [], +\ { 'width': [], 'usemap': [], 'ismap': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'vspace': [], 'onmouseover': [], 'alt': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'src': [], 'longdesc': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'xml:lang': [], 'height': [], 'border': [], 'hspace': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []} +\ ], +\ 'input': [ +\ [], +\ { 'ondblclick': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'value': [], 'src': [], 'name': [], 'checked': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['text', 'text', 'password', 'checkbox', 'radio', 'submit', 'reset', 'file', 'hidden', 'image', 'button'], 'accesskey': [], 'disabled': ['BOOL'], 'usemap': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'size': [], 'onfocus': [], 'maxlength': [], 'onselect': [], 'accept': [], 'tabindex': [], 'alt': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'ins': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'datetime': [], 'cite': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'isindex': [ +\ [], +\ { 'id': [], 'lang': [], 'prompt': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'xml:lang': []} +\ ], +\ 'kbd': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'label': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'legend': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['top', 'bottom', 'left', 'right'], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'li': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'type': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'link': [ +\ [], +\ { 'rel': [], 'ondblclick': [], 'onkeydown': [], 'target': [], 'onkeyup': [], 'href': [], 'media': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'map': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'noscript', 'ins', 'del', 'script', 'area'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'onclick': [], 'title': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmouseout': [], 'onmousemove': [], 'xml:lang': []} +\ ], +\ 'menu': [ +\ ['li'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'meta': [ +\ [], +\ { 'http-equiv': [], 'content': [], 'id': [], 'lang': [], 'name': [], 'scheme': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'noframes': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'noscript': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'object': [ +\ ['param', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'name': [], 'data': [], 'declare': ['BOOL'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'width': [], 'usemap': [], 'dir': ['ltr', 'rtl'], 'vspace': [], 'tabindex': [], 'standby': [], 'archive': [], 'classid': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'height': [], 'xml:lang': [], 'border': [], 'codetype': [], 'hspace': [], 'codebase': []} +\ ], +\ 'ol': [ +\ ['li'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'type': [], 'class': [], 'title': [], 'onclick': [], 'start': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'optgroup': [ +\ ['option'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'option': [ +\ [''], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'value': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'label': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'selected': ['BOOL']} +\ ], +\ 'p': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'param': [ +\ [], +\ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['data', 'data', 'ref', 'object']} +\ ], +\ 'pre': [ +\ ['a', 'br', 'span', 'bdo', 'tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'q': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'cite': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 's': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'samp': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'script': [ +\ [''], +\ { 'id': [], 'src': [], 'charset': [], 'xml:space': ['preserve', 'preserve'], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []} +\ ], +\ 'select': [ +\ ['optgroup', 'option'], +\ { 'ondblclick': [], 'onkeydown': [], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'disabled': ['BOOL'], 'dir': ['ltr', 'rtl'], 'size': [], 'onblur': [], 'onfocus': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'multiple': ['BOOL']} +\ ], +\ 'small': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'span': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'strike': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'strong': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'style': [ +\ [''], +\ { 'media': [], 'id': [], 'lang': [], 'xml:space': ['preserve', 'preserve'], 'title': [], 'type': ['text/css'], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'sub': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'sup': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'table': [ +\ ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody', 'tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'frame': ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'], 'rules': ['none', 'groups', 'rows', 'cols', 'all'], 'dir': ['ltr', 'rtl'], 'summary': [], 'bgcolor': [], 'cellspacing': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'border': [], 'cellpadding': []} +\ ], +\ 'tbody': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'td': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'headers': [], 'nowrap': ['BOOL'], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'char': []} +\ ], +\ 'textarea': [ +\ [''], +\ { 'ondblclick': [], 'cols': [], 'onkeydown': [], 'readonly': ['BOOL'], 'onchange': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'name': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'disabled': ['BOOL'], 'rows': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onselect': [], 'tabindex': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'tfoot': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'th': [ +\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'div', 'ul', 'ol', 'dl', 'menu', 'dir', 'pre', 'hr', 'blockquote', 'address', 'center', 'noframes', 'isindex', 'fieldset', 'table', 'form', 'a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'noscript', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'axis': [], 'onkeydown': [], 'abbr': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'scope': ['row', 'col', 'rowgroup', 'colgroup'], 'onmouseover': [], 'lang': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'width': [], 'headers': [], 'nowrap': ['BOOL'], 'dir': ['ltr', 'rtl'], 'rowspan': ['1'], 'colspan': ['1'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'height': [], 'char': []} +\ ], +\ 'thead': [ +\ ['tr'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'title': [ +\ [''], +\ { 'id': [], 'lang': [], 'dir': ['ltr', 'rtl'], 'xml:lang': []} +\ ], +\ 'tr': [ +\ ['th', 'td'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify', 'char'], 'lang': [], 'valign': ['top', 'middle', 'bottom', 'baseline'], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'bgcolor': [], 'charoff': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': [], 'char': []} +\ ], +\ 'tt': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'u': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ 'ul': [ +\ ['li'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'compact': ['BOOL'], 'onmouseover': [], 'lang': [], 'onkeypress': [], 'onmousedown': [], 'type': ['disc', 'square', 'circle'], 'class': [], 'title': [], 'onclick': [], 'dir': ['ltr', 'rtl'], 'onmouseout': [], 'onmousemove': [], 'style': [], 'xml:lang': []} +\ ], +\ 'var': [ +\ ['a', 'br', 'span', 'bdo', 'object', 'applet', 'img', 'map', 'iframe', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'font', 'basefont', 'em', 'strong', 'dfn', 'code', 'q', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'sub', 'sup', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del', 'script'], +\ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'xml:lang': []} +\ ], +\ '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': { +\ 'area': ['/>', ''], +\ 'base': ['/>', ''], +\ 'basefont': ['/>', ''], +\ 'br': ['/>', ''], +\ 'col': ['/>', ''], +\ 'hr': ['/>', ''], +\ 'img': ['/>', ''], +\ 'input': ['/>', ''], +\ 'isindex': ['/>', ''], +\ 'link': ['/>', ''], +\ 'meta': ['/>', ''], +\ 'param': ['/>', ''], +\ } +\ } +" vim:ft=vim:ff=unix diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,4 +1,4 @@ -*insert.txt* For Vim version 7.0e. Last change: 2006 Apr 18 +*insert.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1026,7 +1026,8 @@ The "menu" item is used in the popup men be relatively short. The "info" item can be longer, it will be displayed in the preview window when "preview" appears in 'completeopt'. The "info" item will also remain displayed after the popup menu has been removed. This is -useful for function arguments. +useful for function arguments. Use a single space for "info" to remove +existing text in the preview window. The "kind" item uses a single letter to indicate the kind of completion. This may be used to show the completion differently (different color or icon). @@ -1266,22 +1267,32 @@ run |:make| command to detect formatting HTML flavor *html-flavor* -By default HTML completion provides completion for XHTML 1.0 Strict. This is -not the only HTML version. To use another data file and still have benefits of -custom completion for class, style, etc. attributes set g:html_omni_flavor -variable. Example (in .vimrc or filetype plugin file): > +Default HTML completion depends on filetype. For HTML files it is HTML +4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict +(&ft=='xhtml'). - let g:html_omni_flavor = 'xhtml10t' +These are not the only HTML versions. To use another data file and still +have benefits of custom completion for class, style, etc. attributes set +b:html_omni_flavor variable. Example (in .vimrc or filetype plugin +file): > + + let g:html_omni_flavor = 'xhtml10s' -Data for HTML completion will be read from 'autoload/xml/xhtml10t.vim' file -located somewhere in 'runtimepath' (not in default distribution). +(Completion data file for HTML 4.01 Strict is also provided by Vim +distribution.) + +Data for HTML completion will be read from 'autoload/xml/html10s.vim' file +located somewhere in 'runtimepath'. -More about format of data file in |xml-omni-datafile|. Some of data files may -in future be found on vim-online site (|www|). +Note: HTML completion files are also located in 'autoload/xml' +directory. -Note that g:html_omni_flavor may point to file with any XML data. This makes -possible to mix PHP (|ft-php-omni|) completion with whatever XML dialect -(assuming you have data file for it). +More about format of data file in |xml-omni-datafile|. Some of data +files may in future be found on vim-online site (|www|). + +Note that b:html_omni_flavor may point to file with any XML data. This +makes possible to mix PHP (|ft-php-omni|) completion with whatever XML +dialect (assuming you have data file for it). JAVASCRIPT *ft-javascript-omni* @@ -1359,6 +1370,39 @@ automatically switch to HTML/CSS/JavaScr original HTML files completion of tags (and only tags) isn't context aware. +RUBY *ft-ruby-omni* + +Completion of Ruby code requires that vim be built with |+ruby|. + +Ruby completion will parse your buffer on demand in order to provide a list of +completions. These completions will be drawn from modules loaded by 'require' +and modules defined in the current buffer. + +The completions provided by CTRL-X CTRL-O are sensitive to the context: + + CONTEXT COMPLETIONS PROVIDED ~ + + 1. Not inside a class definition Classes, constants and globals + + 2. Inside a class definition Methods or constants defined in the class + + 3. After '.', '::' or ':' Methods applicable to the object being + dereferenced + + 4. After ':' or ':foo' Symbol name (beginning with 'foo') + +Notes: + - Vim will load/evaluate code in order to provide completions. This may + cause some code execution, which may be a concern. + - In context 2 above, anonymous classes are not supported. + - In context 3 above, Vim will attempt to determine the methods supported by + the object. + - Vim can detect and load the Rails environment for files within a rails + project. The feature is disabled by default, to enable it add > + let g:rubycomplete_rails = 1 +< to your vimrc. + + SYNTAX *ft-syntax-omni* This uses the current syntax highlighting for completion. It can be used for diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -1,4 +1,4 @@ -*intro.txt* For Vim version 7.0e. Last change: 2006 Apr 09 +*intro.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -75,7 +75,7 @@ Published by O'Reilly. ISBN: 1-56592-42 ============================================================================== 2. Vim on the internet *internet* - *www* *faq* *FAQ* *distribution* *download* + *www* *WWW* *faq* *FAQ* *distribution* *download* The Vim pages contain the most recent information about Vim. They also contain links to the most recent version of Vim. The FAQ is a list of Frequently Asked Questions. Read this if you have problems. diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,4 +1,4 @@ -*map.txt* For Vim version 7.0e. Last change: 2006 Apr 19 +*map.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -882,10 +882,11 @@ See |:verbose-cmd| for more information. avoid that a typed {lhs} is expanded, since command-line abbreviations apply here. -:ab[breviate] {lhs} {rhs} +:ab[breviate] [] {lhs} {rhs} add abbreviation for {lhs} to {rhs}. If {lhs} already existed it is replaced with the new {rhs}. {rhs} may contain spaces. + See |:map-| for the optional argument. *:una* *:unabbreviate* :una[bbreviate] {lhs} Remove abbreviation for {lhs} from the list. If none @@ -895,12 +896,13 @@ See |:verbose-cmd| for more information. expansion insert a CTRL-V (type it twice). *:norea* *:noreabbrev* -:norea[bbrev] [lhs] [rhs] +:norea[bbrev] [] [lhs] [rhs] same as ":ab", but no remapping for this {rhs} {not in Vi} *:ca* *:cabbrev* -:ca[bbrev] [lhs] [rhs] same as ":ab", but for Command-line mode only. {not +:ca[bbrev] [] [lhs] [rhs] + same as ":ab", but for Command-line mode only. {not in Vi} *:cuna* *:cunabbrev* @@ -908,19 +910,20 @@ See |:verbose-cmd| for more information. in Vi} *:cnorea* *:cnoreabbrev* -:cnorea[bbrev] [lhs] [rhs] +:cnorea[bbrev] [] [lhs] [rhs] same as ":ab", but for Command-line mode only and no remapping for this {rhs} {not in Vi} *:ia* *:iabbrev* -:ia[bbrev] [lhs] [rhs] same as ":ab", but for Insert mode only. {not in Vi} +:ia[bbrev] [] [lhs] [rhs] + same as ":ab", but for Insert mode only. {not in Vi} *:iuna* *:iunabbrev* :iuna[bbrev] {lhs} same as ":una", but for insert mode only. {not in Vi} *:inorea* *:inoreabbrev* -:inorea[bbrev] [lhs] [rhs] +:inorea[bbrev] [] [lhs] [rhs] same as ":ab", but for Insert mode only and no remapping for this {rhs} {not in Vi} diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,4 +1,4 @@ -*options.txt* For Vim version 7.0e. Last change: 2006 Apr 18 +*options.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -6684,6 +6684,7 @@ A jump table for the options with a shor this. 'textwidth' is set to 0 when the 'paste' option is set. When 'textwidth' is zero, 'wrapmargin' may be used. See also 'formatoptions' and |ins-textwidth|. + When 'formatexpr' is set it will be used to break the line. NOTE: This option is set to 0 when 'compatible' is set. *'thesaurus'* *'tsr'* diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 7.0e. Last change: 2006 Apr 12 +*spell.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -161,6 +161,10 @@ z= For the word under/after the cursor mode and when there are no line wraps). Click on the first line (the header) to cancel. + The suggestions listed normally replace a highlighted + bad word. Sometimes they include other text, in that + case the replaced text is also listed after a "<". + If a count is used that suggestion is used, without prompting. For example, "1z=" always takes the first suggestion. diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 7.0e. Last change: 2006 Apr 15 +*syntax.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -1606,12 +1606,22 @@ instead, and the name of your source fil LUA *lua.vim* *ft-lua-syntax* -This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are -programming in Lua 4.0, use this: > +This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is +the default). You can select one of these versions using the global variables +lua_version and lua_subversion. For example, to activate Lua +4.0 syntax highlighting, use this command: > :let lua_version = 4 -If lua_version variable doesn't exist, it is set to 5. +If you are using Lua 5.0, use these commands: > + + :let lua_version = 5 + :let lua_subversion = 0 + +To restore highlighting for Lua 5.1: > + + :let lua_version = 5 + :let lua_subversion = 1 MAIL *mail.vim* *ft-mail.vim* @@ -2765,7 +2775,7 @@ DEFINING KEYWORDS *:syn-keyword* :syntax keyword Type contained int long char :syntax keyword Type int long contained char :syntax keyword Type int long char contained -< *E747* +< *E789* When you have a keyword with an optional tail, like Ex commands in Vim, you can put the optional characters inside [], to define all the variations at once: > diff --git a/runtime/doc/tags b/runtime/doc/tags --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -3959,7 +3959,6 @@ E744 netbeans.txt /*E744* E745 eval.txt /*E745* E746 eval.txt /*E746* E747 editing.txt /*E747* -E747 syntax.txt /*E747* E748 repeat.txt /*E748* E749 eval.txt /*E749* E75 vi_diff.txt /*E75* @@ -4005,6 +4004,7 @@ E785 eval.txt /*E785* E786 eval.txt /*E786* E787 diff.txt /*E787* E788 autocmd.txt /*E788* +E789 syntax.txt /*E789* E79 message.txt /*E79* E80 message.txt /*E80* E800 arabic.txt /*E800* @@ -4264,6 +4264,7 @@ W16 message.txt /*W16* W17 arabic.txt /*W17* W18 syntax.txt /*W18* WORD motion.txt /*WORD* +WWW intro.txt /*WWW* Win32 os_win32.txt /*Win32* WinEnter autocmd.txt /*WinEnter* WinLeave autocmd.txt /*WinLeave* @@ -5314,6 +5315,7 @@ ft-python-syntax syntax.txt /*ft-python- ft-quake-syntax syntax.txt /*ft-quake-syntax* ft-readline-syntax syntax.txt /*ft-readline-syntax* ft-rexx-syntax syntax.txt /*ft-rexx-syntax* +ft-ruby-omni insert.txt /*ft-ruby-omni* ft-ruby-syntax syntax.txt /*ft-ruby-syntax* ft-scheme-syntax syntax.txt /*ft-scheme-syntax* ft-sdl-syntax syntax.txt /*ft-sdl-syntax* diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 7.0e. Last change: 2006 Apr 19 +*todo.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -30,14 +30,13 @@ be worked on, but only if you sponsor Vi *known-bugs* -------------------- Known bugs and current work ----------------------- -Hang in omni completion when 'lines' is 6. (dtsfan) +For a tooltip of at GUI tab label we need a new field. Also 'guitabtip'? Crash in "z=" when the change triggers checking out the file, FileChangedRO event. Problem in move_lines()? FileChangedShell also involved? (Neil Bird) Added a few checks for valid buffer, did that help? -Check findoption() return value. -Other coverity false positives? +Fix coverity false positives? Add more tests for all new functionality in Vim 7. Especially new functions. @@ -1086,6 +1085,7 @@ 8 Support saving and restoring session Tab pages: 9 GUI implementation for the tab pages line for other systems. 8 Make GUI menu in tab pages line configurable. Like the popup menu. +8 balloons for the tab page labels that are shortened to show the full path. 8 :tabmove +N move tab page N pages forward 8 :tabmove -N move tab page N pages backward 7 :tabdup duplicate the tab with all its windows. @@ -2009,7 +2009,8 @@ 8 When editing "tt.gz", which is in DO Error - When an error happens NormalEnter - Entering Normal mode ReplaceEnter - Entering Replace mode - CmdEnter - Entering Cmdline mode + CmdEnter - Entering Cmdline mode (with type of cmdline to allow + different mapping) VisualEnter - Entering Visual mode *Leave - Leaving a mode (in pair with the above *Enter) VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,4 +1,4 @@ -*version7.txt* For Vim version 7.0e. Last change: 2006 Apr 19 +*version7.txt* For Vim version 7.0e. Last change: 2006 Apr 20 VIM REFERENCE MANUAL by Bram Moolenaar @@ -243,6 +243,7 @@ Currently supported languages: (X)HTML with CSS |ft-html-omni| JavaScript |ft-javascript-omni| Python + Ruby |ft-ruby-omni| XML |ft-xml-omni| any language wih syntax highligting |ft-syntax-omni| @@ -2559,4 +2560,14 @@ The taglist() function could hang on a t Win32: When 'encoding' differs from the system encoding tab page labels with non-ASCII characters looked wrong. (Yegappan Lakshmanan) +Motif: building failed when Xm/Notebook.h doesn't exist. Added a configure +check, disable GUI tabline when it's missing. + +Mac: When compiled without multi-byte feature the clipboard didn't work. + +It was possible to switch to another tab page when the cmdline window is open. + +Completion could hang when 'lines' is 6 and a preview window was opened. + + vim:tw=78:ts=8:ft=help:norl: diff --git a/runtime/spell/ca/ca_ES.diff b/runtime/spell/ca/ca_ES.diff --- a/runtime/spell/ca/ca_ES.diff +++ b/runtime/spell/ca/ca_ES.diff @@ -31,7 +31,7 @@ ! REP l·l l *** ca_ES.orig.dic Sat Aug 13 18:33:44 2005 ---- ca_ES.dic Thu Jan 12 21:55:39 2006 +--- ca_ES.dic Thu Apr 20 20:31:16 2006 *************** *** 1,2 **** ! 149661 diff --git a/runtime/spell/es/es_ES.diff b/runtime/spell/es/es_ES.diff --- a/runtime/spell/es/es_ES.diff +++ b/runtime/spell/es/es_ES.diff @@ -24,7 +24,7 @@ + SFX J Y 12 *** es_ES.orig.dic Thu Aug 25 19:19:44 2005 ---- es_ES.dic Thu Aug 25 20:18:55 2005 +--- es_ES.dic Thu Apr 20 20:30:24 2006 *************** *** 485,487 **** acercóse @@ -74,8 +74,14 @@ inadecuación/S --- 25126,25127 ---- *************** -*** 28007,28009 **** - librancista/S +*** 28008,28010 **** + líbranos - líbranos - líbranos ---- 27999,28000 ---- + libranza/S +--- 28000,28001 ---- +*************** +*** 48480,48481 **** +--- 48471,48473 ---- + xilotila/S ++ y + ya diff --git a/runtime/syntax/bindzone.vim b/runtime/syntax/bindzone.vim --- a/runtime/syntax/bindzone.vim +++ b/runtime/syntax/bindzone.vim @@ -1,9 +1,12 @@ " Vim syntax file -" Language: BIND 8.x zone files (RFC1035) -" Maintainer: glory hump -" Last change: Thu Apr 26 02:16:18 SAMST 2001 -" Filenames: /var/named/* -" URL: http://rnd.web-drive.ru/vim/syntax/bindzone.vim +" Language: BIND zone files (RFC1035) +" Maintainer: Julian Mehnle +" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/ +" Last Change: Thu 2006-04-20 12:30:45 UTC +" +" Based on an earlier version by Ð’ÑчеÑлав Горбанев (Slava Gorbanev), with +" heavy modifications. +" " $Id$ " For version 5.x: Clear all syntax items @@ -16,54 +19,55 @@ endif syn case match -if version >= 600 - setlocal iskeyword=.,-,48-58,A-Z,a-z,_ -else - set iskeyword=.,-,48-58,A-Z,a-z,_ -endif +" Directives +syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown +syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown +syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneNumber,zoneUnknown +syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown +syn match zoneDirective /^\$GENERATE\s/ -" Master File Format (rfc 1035) +syn match zoneUnknown contained /\S\+/ -" directives -syn region zoneRRecord start=+^+ end=+$+ contains=zoneLHSDomain,zoneLHSIP,zoneIllegalDom,zoneWhitespace,zoneComment,zoneParen,zoneSpecial -syn match zoneDirective /\$ORIGIN\s\+/ nextgroup=zoneDomain,zoneIllegalDom -syn match zoneDirective /\$TTL\s\+/ nextgroup=zoneTTL -syn match zoneDirective /\$INCLUDE\s\+/ -syn match zoneDirective /\$GENERATE\s/ +syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite +syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ +syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ -syn match zoneWhitespace contained /^\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType -syn match zoneError "\s\+$" -syn match zoneSpecial contained /^[@.]\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType -syn match zoneSpecial contained /@$/ +syn match zoneSpecial contained /^[@*.]\s/ +syn match zoneTTL contained /\<\d[0-9HhWwDd]*\>/ nextgroup=zoneClass,zoneRRType skipwhite +syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite +syn keyword zoneRRType contained A AAAA CNAME HINFO MX NS PTR SOA SRV TXT nextgroup=zoneRData skipwhite +syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown + +syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ -" domains and IPs -syn match zoneLHSDomain contained /^[-0-9A-Za-z.]\+\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType -syn match zoneLHSIP contained /^[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType -syn match zoneIPaddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ -syn match zoneDomain contained /\<[0-9A-Za-z][-0-9A-Za-z.]\+\>/ - -syn match zoneIllegalDom contained /\S*[^-A-Za-z0-9.[:space:]]\S*\>/ -"syn match zoneIllegalDom contained /[0-9]\S*[-A-Za-z]\S*/ - -" keywords -syn keyword zoneClass IN CHAOS nextgroup=zoneRRType +" Plain IPv6 address IPv6-embedded-IPv4 address +" 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" ::[...:]8 ::[...:]127.0.0.1 +syn match zoneIP6Addr contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111::[...:]8 1111::[...:]127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111:2::[...:]8 1111:2::[...:]127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1 +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/ +" 1111:2:3:4:5:6::8 - +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/ +" 1111[:...]:: - +syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/ -syn match zoneTTL contained /\<[0-9HhWwDd]\+\s\+/ nextgroup=zoneClass,zoneRRType -syn match zoneRRType contained /\s*\<\(NS\|HINFO\)\s\+/ nextgroup=zoneSpecial,zoneDomain -syn match zoneRRType contained /\s*\/ - -syn match zoneMailPrio contained /\<[0-9]\+\s*/ nextgroup=zoneDomain,zoneIllegalDom -syn match zoneErrParen /)/ -syn region zoneParen contained start=+(+ end=+)+ contains=zoneSerial,zoneTTL,zoneComment -syn match zoneComment ";.*" +syn match zoneErrParen /)/ +syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneNumber,zoneComment +syn match zoneComment /;.*/ " Define the default highlighting. " For version 5.7 and earlier: only when not done already @@ -76,23 +80,31 @@ if version >= 508 || !exists("did_bind_z command -nargs=+ HiLink hi def link endif - HiLink zoneComment Comment - HiLink zoneDirective Macro - HiLink zoneLHSDomain Statement - HiLink zoneLHSIP Statement - HiLink zoneClass Include - HiLink zoneSpecial Special - HiLink zoneRRType Type - HiLink zoneError Error - HiLink zoneErrParen Error - HiLink zoneIllegalDom Error - HiLink zoneSerial Todo - HiLink zoneIPaddr Number - HiLink zoneDomain Identifier + HiLink zoneDirective Macro + + HiLink zoneUnknown Error + + HiLink zoneOrigin Statement + HiLink zoneOwnerName Statement + HiLink zoneDomain Identifier + + HiLink zoneSpecial Special + HiLink zoneTTL Constant + HiLink zoneClass Include + HiLink zoneRRType Type + + HiLink zoneIPAddr Number + HiLink zoneIP6Addr Number + HiLink zoneText String + HiLink zoneNumber Number + HiLink zoneSerial Special + + HiLink zoneErrParen Error + HiLink zoneComment Comment delcommand HiLink endif let b:current_syntax = "bindzone" -" vim: ts=17 +" vim:sts=2 sw=2 diff --git a/runtime/syntax/crontab.vim b/runtime/syntax/crontab.vim --- a/runtime/syntax/crontab.vim +++ b/runtime/syntax/crontab.vim @@ -1,10 +1,12 @@ " Vim syntax file -" Language: crontab -" Maintainer: John Hoelzel johnh51@users.sourceforge.net -" Maintainer: David Necas (Yeti) -" Last Change: 2005-04-26 -" Filenames: /tmp/crontab.* used by "crontab -e" -" URL: http://trific.ath.cx/Ftp/vim/syntax/crontab.vim +" Language: crontab +" Maintainer: David Necas (Yeti) +" Original Maintainer: John Hoelzel johnh51@users.sourceforge.net +" License: This file can be redistribued and/or modified under the same terms +" as Vim itself. +" Filenames: /tmp/crontab.* used by "crontab -e" +" URL: http://trific.ath.cx/Ftp/vim/syntax/crontab.vim +" Last Change: 2006-04-20 " " crontab line format: " Minutes Hours Days Months Days_of_Week Commands # comments @@ -17,24 +19,23 @@ elseif exists("b:current_syntax") finish endif -syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite -syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained -syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained +syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite +syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained +syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained -syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained -syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec +syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow skipwhite contained +syntax keyword crontabMnth12 contained jan feb mar apr may jun jul aug sep oct nov dec -syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained -syntax keyword crontabDow7 contained sun mon tue wed thu fri sat - -" syntax region crontabCmd start="\<[a-z0-9\/\(]" end="$" nextgroup=crontabCmnt skipwhite contained contains=crontabCmnt keepend +syntax match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained +syntax keyword crontabDow7 contained sun mon tue wed thu fri sat -syntax region crontabCmd start="\S" end="$" nextgroup=crontabCmnt skipwhite contained keepend -syntax match crontabCmnt "^\s*#.*" +syntax region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent +syntax match crontabCmnt "^\s*#.*" +syntax match crontabPercent "[^\\]%.*"lc=1 contained -syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite +syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite -syntax match crontabVar "^\s*\k\w*\s*="me=e-1 +syntax match crontabVar "^\s*\k\w*\s*="me=e-1 " Define the default highlighting. " For version 5.7 and earlier: only when not done already @@ -63,9 +64,10 @@ if version >= 508 || !exists("did_cronta HiLink crontabNick Special HiLink crontabVar Identifier + HiLink crontabPercent Special " comment out next line for to suppress unix commands coloring. - HiLink crontabCmd Type + HiLink crontabCmd Statement HiLink crontabCmnt Comment diff --git a/runtime/syntax/inform.vim b/runtime/syntax/inform.vim --- a/runtime/syntax/inform.vim +++ b/runtime/syntax/inform.vim @@ -1,8 +1,8 @@ " Vim syntax file " Language: Inform -" Maintainer: Stephen Thomas (informvim@stephenthomas.uklinux.net) -" URL: http://www.stephenthomas.uklinux.net/informvim -" Last Change: 2004 May 16 +" Maintainer: Stephen Thomas (stephen@gowarthomas.com) +" URL: http://www.gowarthomas.com/informvim +" Last Change: 2006 April 20 " Quit when a syntax file was already loaded if version < 600 diff --git a/runtime/syntax/lua.vim b/runtime/syntax/lua.vim --- a/runtime/syntax/lua.vim +++ b/runtime/syntax/lua.vim @@ -1,297 +1,299 @@ -" Vim syntax file -" Language: Lua 4.0, Lua 5.0 and Lua 5.1 -" Maintainer: Marcus Aurelius Farias -" First Author: Carlos Augusto Teixeira Mendes -" Last Change: 2006 Apr. 19 -" Options: lua_version = 4 or 5 -" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) -" default 5.1 - -" For version 5.x: Clear all syntax items -" For version 6.x: Quit when a syntax file was already loaded -if version < 600 - syntax clear -elseif exists("b:current_syntax") - finish -endif - -if !exists("lua_version") - " Default is lua 5.1 - let lua_version = 5 - let lua_subversion = 1 -elseif !exists("lua_subversion") - " lua_version exists, but lua_subversion doesn't. So, set it to 0 - let lua_subversion = 0 -endif - -syn case match - -" syncing method -syn sync minlines=100 - -" Comments -syn keyword luaTodo contained TODO FIXME XXX -syn match luaComment "--.*$" contains=luaTodo -if lua_version == 5 && lua_subversion == 0 - syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment - syn region luaInnerComment contained transparent start="\[\[" end="\]\]" -elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) - " Comments in Lua 5.1: [[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. - syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" -endif - -" First line may start with #! -syn match luaComment "\%^#!.*" - -" catch errors caused by wrong parenthesis and wrong curly brackets or -" keywords placed outside their respective blocks - -syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement -syn match luaError ")" -syn match luaError "}" -syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" - -" Function declaration -syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" if then else elseif end -syn keyword luaCond contained else - -" then ... end -syn region luaCondEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat - -" elseif ... then -syn region luaCondElseif contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" if ... then -syn region luaCondStart transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty - -" do ... end -syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" repeat ... until -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat - -" while ... do -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty - -" for ... do and for ... in ... do -syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty - -" Following 'else' example. This is another item to those -" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it. -syn keyword luaRepeat contained in - -" other keywords -syn keyword luaStatement return local break -syn keyword luaOperator and or not -syn keyword luaConstant nil -if lua_version > 4 - syn keyword luaConstant true false -endif - -" Strings -syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}" -syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial -syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial -" Nested strings -if (lua_version == 5 && lua_subversion == 0) || lua_version < 5 - syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2 -elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) - syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" -endif - -" integer number -syn match luaNumber "\<[0-9]\+\>" -" floating point number, with dot, optional exponent -syn match luaFloat "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>" -" floating point number, starting with a dot, optional exponent -syn match luaFloat "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>" -" floating point number, without dot, with exponent -syn match luaFloat "\<[0-9]\+e[-+]\=[0-9]\+\>" - -" tables -syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement - -syn keyword luaFunc assert collectgarbage dofile error gcinfo next -syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION - -if lua_version == 4 - syn keyword luaFunc _ALERT _ERRORMESSAGE - syn keyword luaFunc call copytagmethods dostring - syn keyword luaFunc foreach foreachi getglobal getn - syn keyword luaFunc gettagmethod globals newtag - syn keyword luaFunc setglobal settag settagmethod sort - syn keyword luaFunc tag tinsert tremove - syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR - syn keyword luaFunc openfile closefile flush seek - syn keyword luaFunc setlocale execute remove rename tmpname - syn keyword luaFunc getenv date clock exit - syn keyword luaFunc readfrom writeto appendto read write - syn keyword luaFunc PI abs sin cos tan asin - syn keyword luaFunc acos atan atan2 ceil floor - syn keyword luaFunc mod frexp ldexp sqrt min max log - syn keyword luaFunc log10 exp deg rad random - syn keyword luaFunc randomseed strlen strsub strlower strupper - syn keyword luaFunc strchar strrep ascii strbyte - syn keyword luaFunc format strfind gsub - syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook -elseif lua_version == 5 - " Not sure if all these functions need to be highlighted... - syn keyword luaFunc _G getfenv getmetatable ipairs loadfile - syn keyword luaFunc loadstring pairs pcall rawequal - syn keyword luaFunc require setfenv setmetatable unpack xpcall - if lua_subversion == 0 - syn keyword luaFunc loadlib LUA_PATH _LOADED _REQUIREDNAME - elseif lua_subversion == 1 - syn keyword luaFunc load module select - syn match luaFunc /package\.cpath/ - syn match luaFunc /package\.loaded/ - syn match luaFunc /package\.loadlib/ - syn match luaFunc /package\.path/ - syn match luaFunc /package\.preload/ - syn match luaFunc /package\.seeall/ - syn match luaFunc /coroutine\.running/ - endif - syn match luaFunc /coroutine\.create/ - syn match luaFunc /coroutine\.resume/ - syn match luaFunc /coroutine\.status/ - syn match luaFunc /coroutine\.wrap/ - syn match luaFunc /coroutine\.yield/ - syn match luaFunc /string\.byte/ - syn match luaFunc /string\.char/ - syn match luaFunc /string\.dump/ - syn match luaFunc /string\.find/ - syn match luaFunc /string\.len/ - syn match luaFunc /string\.lower/ - syn match luaFunc /string\.rep/ - syn match luaFunc /string\.sub/ - syn match luaFunc /string\.upper/ - syn match luaFunc /string\.format/ - syn match luaFunc /string\.gsub/ - if lua_subversion == 0 - syn match luaFunc /string\.gfind/ - elseif lua_subversion == 1 - syn match luaFunc /string\.gmatch/ - syn match luaFunc /string\.match/ - syn match luaFunc /string\.reverse/ - syn match luaFunc /table\.maxn/ - endif - syn match luaFunc /table\.concat/ - syn match luaFunc /table\.foreach/ - syn match luaFunc /table\.foreachi/ - syn match luaFunc /table\.getn/ - syn match luaFunc /table\.sort/ - syn match luaFunc /table\.insert/ - syn match luaFunc /table\.remove/ - syn match luaFunc /table\.setn/ - syn match luaFunc /math\.abs/ - syn match luaFunc /math\.acos/ - syn match luaFunc /math\.asin/ - syn match luaFunc /math\.atan/ - syn match luaFunc /math\.atan2/ - syn match luaFunc /math\.ceil/ - syn match luaFunc /math\.sin/ - syn match luaFunc /math\.cos/ - syn match luaFunc /math\.tan/ - syn match luaFunc /math\.deg/ - syn match luaFunc /math\.exp/ - syn match luaFunc /math\.floor/ - syn match luaFunc /math\.log/ - syn match luaFunc /math\.log10/ - syn match luaFunc /math\.max/ - syn match luaFunc /math\.min/ - if lua_subversion == 0 - syn match luaFunc /math\.mod/ - elseif lua_subversion == 1 - syn match luaFunc /math\.fmod/ - syn match luaFunc /math\.modf/ - syn match luaFunc /math\.cosh/ - syn match luaFunc /math\.sinh/ - syn match luaFunc /math\.tanh/ - endif - syn match luaFunc /math\.pow/ - syn match luaFunc /math\.rad/ - syn match luaFunc /math\.sqrt/ - syn match luaFunc /math\.frexp/ - syn match luaFunc /math\.ldexp/ - syn match luaFunc /math\.random/ - syn match luaFunc /math\.randomseed/ - syn match luaFunc /math\.pi/ - syn match luaFunc /io\.stdin/ - syn match luaFunc /io\.stdout/ - syn match luaFunc /io\.stderr/ - syn match luaFunc /io\.close/ - syn match luaFunc /io\.flush/ - syn match luaFunc /io\.input/ - syn match luaFunc /io\.lines/ - syn match luaFunc /io\.open/ - syn match luaFunc /io\.output/ - syn match luaFunc /io\.popen/ - syn match luaFunc /io\.read/ - syn match luaFunc /io\.tmpfile/ - syn match luaFunc /io\.type/ - syn match luaFunc /io\.write/ - syn match luaFunc /os\.clock/ - syn match luaFunc /os\.date/ - syn match luaFunc /os\.difftime/ - syn match luaFunc /os\.execute/ - syn match luaFunc /os\.exit/ - syn match luaFunc /os\.getenv/ - syn match luaFunc /os\.remove/ - syn match luaFunc /os\.rename/ - syn match luaFunc /os\.setlocale/ - syn match luaFunc /os\.time/ - syn match luaFunc /os\.tmpname/ - syn match luaFunc /debug\.debug/ - syn match luaFunc /debug\.gethook/ - syn match luaFunc /debug\.getinfo/ - syn match luaFunc /debug\.getlocal/ - syn match luaFunc /debug\.getupvalue/ - syn match luaFunc /debug\.setlocal/ - syn match luaFunc /debug\.setupvalue/ - syn match luaFunc /debug\.sethook/ - syn match luaFunc /debug\.traceback/ - if lua_subversion == 1 - syn match luaFunc /debug\.getfenv/ - syn match luaFunc /debug\.getmetatable/ - syn match luaFunc /debug\.getregistry/ - syn match luaFunc /debug\.setfenv/ - syn match luaFunc /debug\.setmetatable/ - endif -endif - -" Define the default highlighting. -" For version 5.7 and earlier: only when not done already -" For version 5.8 and later: only when an item doesn't have highlighting yet -if version >= 508 || !exists("did_lua_syntax_inits") - if version < 508 - let did_lua_syntax_inits = 1 - command -nargs=+ HiLink hi link - else - command -nargs=+ HiLink hi def link - endif - - HiLink luaStatement Statement - HiLink luaRepeat Repeat - HiLink luaString String - HiLink luaString2 String - HiLink luaNumber Number - HiLink luaFloat Float - HiLink luaOperator Operator - HiLink luaConstant Constant - HiLink luaCond Conditional - HiLink luaFunction Function - HiLink luaComment Comment - HiLink luaTodo Todo - HiLink luaTable Structure - HiLink luaError Error - HiLink luaSpecial SpecialChar - HiLink luaFunc Identifier - - delcommand HiLink -endif - -let b:current_syntax = "lua" - -" vim: et ts=8 +" Vim syntax file +" Language: Lua 4.0, Lua 5.0 and Lua 5.1 +" Maintainer: Marcus Aurelius Farias +" First Author: Carlos Augusto Teixeira Mendes +" Last Change: 2006 Apr 21 +" Options: lua_version = 4 or 5 +" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) +" default 5.1 + +" For version 5.x: Clear all syntax items +" For version 6.x: Quit when a syntax file was already loaded +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +if !exists("lua_version") + " Default is lua 5.1 + let lua_version = 5 + let lua_subversion = 1 +elseif !exists("lua_subversion") + " lua_version exists, but lua_subversion doesn't. So, set it to 0 + let lua_subversion = 0 +endif + +syn case match + +" syncing method +syn sync minlines=100 + +" Comments +syn keyword luaTodo contained TODO FIXME XXX +syn match luaComment "--.*$" contains=luaTodo +if lua_version == 5 && lua_subversion == 0 + syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment + syn region luaInnerComment contained transparent start="\[\[" end="\]\]" +elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) + " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. + syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" +endif + +" First line may start with #! +syn match luaComment "\%^#!.*" + +" catch errors caused by wrong parenthesis and wrong curly brackets or +" keywords placed outside their respective blocks + +syn region luaParen transparent start='(' end=')' contains=ALLBUT,luaError,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement +syn match luaError ")" +syn match luaError "}" +syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" + +" Function declaration +syn region luaFunctionBlock transparent matchgroup=luaFunction start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat + +" if then else elseif end +syn keyword luaCond contained else + +" then ... end +syn region luaCondEnd contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat + +" elseif ... then +syn region luaCondElseif contained transparent matchgroup=luaCond start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat + +" if ... then +syn region luaCondStart transparent matchgroup=luaCond start="\" end="\"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty + +" do ... end +syn region luaBlock transparent matchgroup=luaStatement start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat + +" repeat ... until +syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat + +" while ... do +syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty + +" for ... do and for ... in ... do +syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\" end="\"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty + +" Following 'else' example. This is another item to those +" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it. +syn keyword luaRepeat contained in + +" other keywords +syn keyword luaStatement return local break +syn keyword luaOperator and or not +syn keyword luaConstant nil +if lua_version > 4 + syn keyword luaConstant true false +endif + +" Strings +if lua_version < 5 + syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" +elseif lua_version == 5 && lua_subversion == 0 + syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}" + syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2 +elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) + syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}" + syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]" +endif +syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial +syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial + +" integer number +syn match luaNumber "\<[0-9]\+\>" +" floating point number, with dot, optional exponent +syn match luaFloat "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>" +" floating point number, starting with a dot, optional exponent +syn match luaFloat "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>" +" floating point number, without dot, with exponent +syn match luaFloat "\<[0-9]\+e[-+]\=[0-9]\+\>" + +" tables +syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement + +syn keyword luaFunc assert collectgarbage dofile error next +syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION + +if lua_version == 4 + syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo + syn keyword luaFunc call copytagmethods dostring + syn keyword luaFunc foreach foreachi getglobal getn + syn keyword luaFunc gettagmethod globals newtag + syn keyword luaFunc setglobal settag settagmethod sort + syn keyword luaFunc tag tinsert tremove + syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR + syn keyword luaFunc openfile closefile flush seek + syn keyword luaFunc setlocale execute remove rename tmpname + syn keyword luaFunc getenv date clock exit + syn keyword luaFunc readfrom writeto appendto read write + syn keyword luaFunc PI abs sin cos tan asin + syn keyword luaFunc acos atan atan2 ceil floor + syn keyword luaFunc mod frexp ldexp sqrt min max log + syn keyword luaFunc log10 exp deg rad random + syn keyword luaFunc randomseed strlen strsub strlower strupper + syn keyword luaFunc strchar strrep ascii strbyte + syn keyword luaFunc format strfind gsub + syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook +elseif lua_version == 5 + " Not sure if all these functions need to be highlighted... + syn keyword luaFunc _G getfenv getmetatable ipairs loadfile + syn keyword luaFunc loadstring pairs pcall rawequal + syn keyword luaFunc require setfenv setmetatable unpack xpcall + if lua_subversion == 0 + syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME + elseif lua_subversion == 1 + syn keyword luaFunc load module select + syn match luaFunc /package\.cpath/ + syn match luaFunc /package\.loaded/ + syn match luaFunc /package\.loadlib/ + syn match luaFunc /package\.path/ + syn match luaFunc /package\.preload/ + syn match luaFunc /package\.seeall/ + syn match luaFunc /coroutine\.running/ + endif + syn match luaFunc /coroutine\.create/ + syn match luaFunc /coroutine\.resume/ + syn match luaFunc /coroutine\.status/ + syn match luaFunc /coroutine\.wrap/ + syn match luaFunc /coroutine\.yield/ + syn match luaFunc /string\.byte/ + syn match luaFunc /string\.char/ + syn match luaFunc /string\.dump/ + syn match luaFunc /string\.find/ + syn match luaFunc /string\.len/ + syn match luaFunc /string\.lower/ + syn match luaFunc /string\.rep/ + syn match luaFunc /string\.sub/ + syn match luaFunc /string\.upper/ + syn match luaFunc /string\.format/ + syn match luaFunc /string\.gsub/ + if lua_subversion == 0 + syn match luaFunc /string\.gfind/ + syn match luaFunc /table\.getn/ + syn match luaFunc /table\.setn/ + syn match luaFunc /table\.foreach/ + syn match luaFunc /table\.foreachi/ + elseif lua_subversion == 1 + syn match luaFunc /string\.gmatch/ + syn match luaFunc /string\.match/ + syn match luaFunc /string\.reverse/ + syn match luaFunc /table\.maxn/ + endif + syn match luaFunc /table\.concat/ + syn match luaFunc /table\.sort/ + syn match luaFunc /table\.insert/ + syn match luaFunc /table\.remove/ + syn match luaFunc /math\.abs/ + syn match luaFunc /math\.acos/ + syn match luaFunc /math\.asin/ + syn match luaFunc /math\.atan/ + syn match luaFunc /math\.atan2/ + syn match luaFunc /math\.ceil/ + syn match luaFunc /math\.sin/ + syn match luaFunc /math\.cos/ + syn match luaFunc /math\.tan/ + syn match luaFunc /math\.deg/ + syn match luaFunc /math\.exp/ + syn match luaFunc /math\.floor/ + syn match luaFunc /math\.log/ + syn match luaFunc /math\.log10/ + syn match luaFunc /math\.max/ + syn match luaFunc /math\.min/ + if lua_subversion == 0 + syn match luaFunc /math\.mod/ + elseif lua_subversion == 1 + syn match luaFunc /math\.fmod/ + syn match luaFunc /math\.modf/ + syn match luaFunc /math\.cosh/ + syn match luaFunc /math\.sinh/ + syn match luaFunc /math\.tanh/ + endif + syn match luaFunc /math\.pow/ + syn match luaFunc /math\.rad/ + syn match luaFunc /math\.sqrt/ + syn match luaFunc /math\.frexp/ + syn match luaFunc /math\.ldexp/ + syn match luaFunc /math\.random/ + syn match luaFunc /math\.randomseed/ + syn match luaFunc /math\.pi/ + syn match luaFunc /io\.stdin/ + syn match luaFunc /io\.stdout/ + syn match luaFunc /io\.stderr/ + syn match luaFunc /io\.close/ + syn match luaFunc /io\.flush/ + syn match luaFunc /io\.input/ + syn match luaFunc /io\.lines/ + syn match luaFunc /io\.open/ + syn match luaFunc /io\.output/ + syn match luaFunc /io\.popen/ + syn match luaFunc /io\.read/ + syn match luaFunc /io\.tmpfile/ + syn match luaFunc /io\.type/ + syn match luaFunc /io\.write/ + syn match luaFunc /os\.clock/ + syn match luaFunc /os\.date/ + syn match luaFunc /os\.difftime/ + syn match luaFunc /os\.execute/ + syn match luaFunc /os\.exit/ + syn match luaFunc /os\.getenv/ + syn match luaFunc /os\.remove/ + syn match luaFunc /os\.rename/ + syn match luaFunc /os\.setlocale/ + syn match luaFunc /os\.time/ + syn match luaFunc /os\.tmpname/ + syn match luaFunc /debug\.debug/ + syn match luaFunc /debug\.gethook/ + syn match luaFunc /debug\.getinfo/ + syn match luaFunc /debug\.getlocal/ + syn match luaFunc /debug\.getupvalue/ + syn match luaFunc /debug\.setlocal/ + syn match luaFunc /debug\.setupvalue/ + syn match luaFunc /debug\.sethook/ + syn match luaFunc /debug\.traceback/ + if lua_subversion == 1 + syn match luaFunc /debug\.getfenv/ + syn match luaFunc /debug\.getmetatable/ + syn match luaFunc /debug\.getregistry/ + syn match luaFunc /debug\.setfenv/ + syn match luaFunc /debug\.setmetatable/ + endif +endif + +" Define the default highlighting. +" For version 5.7 and earlier: only when not done already +" For version 5.8 and later: only when an item doesn't have highlighting yet +if version >= 508 || !exists("did_lua_syntax_inits") + if version < 508 + let did_lua_syntax_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink luaStatement Statement + HiLink luaRepeat Repeat + HiLink luaString String + HiLink luaString2 String + HiLink luaNumber Number + HiLink luaFloat Float + HiLink luaOperator Operator + HiLink luaConstant Constant + HiLink luaCond Conditional + HiLink luaFunction Function + HiLink luaComment Comment + HiLink luaTodo Todo + HiLink luaTable Structure + HiLink luaError Error + HiLink luaSpecial SpecialChar + HiLink luaFunc Identifier + + delcommand HiLink +endif + +let b:current_syntax = "lua" + +" vim: et ts=8 diff --git a/src/INSTALLpc.txt b/src/INSTALLpc.txt --- a/src/INSTALLpc.txt +++ b/src/INSTALLpc.txt @@ -143,8 +143,7 @@ is also available through the Platform S Visual C++ 2005 Express Edition ------------------------------- -Visual C++ 2005 Express Edition can be downloaded for free -before November 2006 from +Visual C++ 2005 Express Edition can be downloaded for free from: http://msdn.microsoft.com/vstudio/express/visualC/default.aspx This includes the IDE and the debugger. You will also need |ms-platform-sdk|. You can build Vim with Make_mvc.mak. diff --git a/src/auto/configure b/src/auto/configure --- a/src/auto/configure +++ b/src/auto/configure @@ -8986,8 +8986,9 @@ if test -z "$SKIP_MOTIF"; then + for ac_header in Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ - Xm/UnhighlightT.h + Xm/UnhighlightT.h Xm/Notebook.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` if eval "test \"\${$as_ac_Header+set}\" = set"; then diff --git a/src/config.h.in b/src/config.h.in --- a/src/config.h.in +++ b/src/config.h.in @@ -239,6 +239,7 @@ #undef HAVE_XM_MANAGER_H #undef HAVE_XM_UNHIGHLIGHTT_H #undef HAVE_XM_JOINSIDET_H +#undef HAVE_XM_NOTEBOOK_H #undef HAVE_X11_XPM_H #undef HAVE_X11_XMU_EDITRES_H #undef HAVE_X11_SM_SMLIB_H diff --git a/src/configure.in b/src/configure.in --- a/src/configure.in +++ b/src/configure.in @@ -1901,7 +1901,7 @@ if test -z "$SKIP_MOTIF"; then cppflags_save=$CPPFLAGS CPPFLAGS="$CPPFLAGS $X_CFLAGS" AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ - Xm/UnhighlightT.h) + Xm/UnhighlightT.h Xm/Notebook.h) if test $ac_cv_header_Xm_XpmP_h = yes; then dnl Solaris uses XpmAttributes_21, very annoying. diff --git a/src/eval.c b/src/eval.c --- a/src/eval.c +++ b/src/eval.c @@ -8863,7 +8863,6 @@ f_expand(argvars, rettv) ExpandInit(&xpc); xpc.xp_context = EXPAND_FILES; rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL); - ExpandCleanup(&xpc); } else rettv->vval.v_string = NULL; @@ -10397,7 +10396,6 @@ f_glob(argvars, rettv) rettv->v_type = VAR_STRING; rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL); - ExpandCleanup(&xpc); } /* diff --git a/src/ex_docmd.c b/src/ex_docmd.c --- a/src/ex_docmd.c +++ b/src/ex_docmd.c @@ -4371,7 +4371,6 @@ expand_filename(eap, cmdlinep, errormsgp p = ExpandOne(&xpc, eap->arg, NULL, WILD_LIST_NOTFOUND|WILD_ADD_SLASH, WILD_EXPAND_FREE); - ExpandCleanup(&xpc); if (p == NULL) return FAIL; } diff --git a/src/ex_getln.c b/src/ex_getln.c --- a/src/ex_getln.c +++ b/src/ex_getln.c @@ -3260,7 +3260,8 @@ nextwild(xp, type, options) * Return a pointer to alloced memory containing the new string. * Return NULL for failure. * - * Results are cached in xp->xp_files and xp->xp_numfiles. + * Results are cached in xp->xp_files and xp->xp_numfiles, except when "mode" + * is WILD_EXPAND_FREE or WILD_ALL. * * mode = WILD_FREE: just free previously expanded matches * mode = WILD_EXPAND_FREE: normal expansion, do not keep matches diff --git a/src/feature.h b/src/feature.h --- a/src/feature.h +++ b/src/feature.h @@ -753,7 +753,8 @@ /* * GUI tabline */ -#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) || defined(FEAT_GUI_MOTIF)\ +#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) \ + || (defined(FEAT_GUI_MOTIF) && defined(HAVE_XM_NOTEBOOK_H)) \ || (defined(FEAT_GUI_MSWIN) && (!defined(_MSC_VER) || _MSC_VER > 1020))) # define FEAT_GUI_TABLINE #endif diff --git a/src/gui.c b/src/gui.c --- a/src/gui.c +++ b/src/gui.c @@ -3491,7 +3491,7 @@ get_tabline_label(tp) /* * Send the event for clicking to select tab page "nr". * Returns TRUE if it was done, FALSE when skipped because we are already at - * that tab page. + * that tab page or the cmdline window is open. */ int send_tabline_event(nr) @@ -3501,6 +3501,14 @@ send_tabline_event(nr) if (nr == tabpage_index(curtab)) return FALSE; +# ifdef FEAT_CMDWIN + if (cmdwin_type != 0) + { + /* Set it back to the current tab page. */ + gui_mch_set_curtab(tabpage_index(curtab)); + return FALSE; + } +# endif string[0] = CSI; string[1] = KS_TABLINE; string[2] = KE_FILLER; diff --git a/src/gui_mac.c b/src/gui_mac.c --- a/src/gui_mac.c +++ b/src/gui_mac.c @@ -48,6 +48,11 @@ /* Vim's Scrap flavor. */ #define VIMSCRAPFLAVOR 'VIM!' +#ifdef FEAT_MBYTE +# define SCRAPTEXTFLAVOR kScrapFlavorTypeUnicode +#else +# define SCRAPTEXTFLAVOR kScrapFlavorTypeText +#endif static EventHandlerUPP mouseWheelHandlerUPP = NULL; SInt32 gMacSystemVersion; @@ -4427,69 +4432,65 @@ clip_mch_request_selection(VimClipboard if (flavor == 0) { - error = GetScrapFlavorFlags(scrap, kScrapFlavorTypeUnicode, &scrapFlags); + error = GetScrapFlavorFlags(scrap, SCRAPTEXTFLAVOR, &scrapFlags); if (error != noErr) return; - error = GetScrapFlavorSize(scrap, kScrapFlavorTypeUnicode, &scrapSize); + error = GetScrapFlavorSize(scrap, SCRAPTEXTFLAVOR, &scrapSize); if (error != noErr) return; } ReserveMem(scrapSize); - { - /* In CARBON we don't need a Handle, a pointer is good */ - textOfClip = NewHandle(scrapSize); - /* tempclip = lalloc(scrapSize+1, TRUE); */ - HLock(textOfClip); - error = GetScrapFlavorData(scrap, - flavor ? VIMSCRAPFLAVOR : kScrapFlavorTypeUnicode, - &scrapSize, *textOfClip); - scrapSize -= flavor; - - if (flavor) - type = **textOfClip; - else - type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR; - - tempclip = lalloc(scrapSize + 1, TRUE); -#if defined(FEAT_MBYTE) - mch_memmove(tempclip, *textOfClip + flavor, scrapSize); -#else - STRNCPY(tempclip, *textOfClip + flavor, scrapSize); -#endif - tempclip[scrapSize] = 0; + /* In CARBON we don't need a Handle, a pointer is good */ + textOfClip = NewHandle(scrapSize); + + /* tempclip = lalloc(scrapSize+1, TRUE); */ + HLock(textOfClip); + error = GetScrapFlavorData(scrap, + flavor ? VIMSCRAPFLAVOR : SCRAPTEXTFLAVOR, + &scrapSize, *textOfClip); + scrapSize -= flavor; + + if (flavor) + type = **textOfClip; + else + type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR; + + tempclip = lalloc(scrapSize + 1, TRUE); + mch_memmove(tempclip, *textOfClip + flavor, scrapSize); + tempclip[scrapSize] = 0; #ifdef MACOS_CONVERT + { /* Convert from utf-16 (clipboard) */ size_t encLen = 0; char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen); - if (to) + + if (to != NULL) { scrapSize = encLen; vim_free(tempclip); tempclip = to; } + } #endif - searchCR = (char *)tempclip; - while (searchCR != NULL) - { - searchCR = strchr(searchCR, '\r'); - - if (searchCR != NULL) - searchCR[0] = '\n'; - - } - - clip_yank_selection(type, tempclip, scrapSize, cbd); - - vim_free(tempclip); - HUnlock(textOfClip); - - DisposeHandle(textOfClip); + searchCR = (char *)tempclip; + while (searchCR != NULL) + { + searchCR = strchr(searchCR, '\r'); + if (searchCR != NULL) + *searchCR = '\n'; } + + clip_yank_selection(type, tempclip, scrapSize, cbd); + + vim_free(tempclip); + HUnlock(textOfClip); + + DisposeHandle(textOfClip); } void @@ -4527,12 +4528,10 @@ clip_mch_set_selection(VimClipboard *cbd /* * Once we set the clipboard, lose ownership. If another application sets * the clipboard, we don't want to think that we still own it. - * */ - cbd->owned = FALSE; - type = clip_convert_selection(&str, (long_u *) &scrapSize, cbd); + type = clip_convert_selection(&str, (long_u *)&scrapSize, cbd); #ifdef MACOS_CONVERT size_t utf16_len = 0; @@ -4555,7 +4554,7 @@ clip_mch_set_selection(VimClipboard *cbd **textOfClip = type; mch_memmove(*textOfClip + 1, str, scrapSize); GetCurrentScrap(&scrap); - PutScrapFlavor(scrap, kScrapFlavorTypeUnicode, kScrapFlavorMaskNone, + PutScrapFlavor(scrap, SCRAPTEXTFLAVOR, kScrapFlavorMaskNone, scrapSize, *textOfClip + 1); PutScrapFlavor(scrap, VIMSCRAPFLAVOR, kScrapFlavorMaskNone, scrapSize + 1, *textOfClip); diff --git a/src/gui_motif.c b/src/gui_motif.c --- a/src/gui_motif.c +++ b/src/gui_motif.c @@ -26,7 +26,6 @@ #include #include #include -#include #include #include @@ -43,6 +42,9 @@ # include # endif #endif +#ifdef HAVE_XM_NOTEBOOK_H +# include +#endif #include "gui_xmebw.h" /* for our Enhanced Button Widget */ diff --git a/src/gui_w48.c b/src/gui_w48.c --- a/src/gui_w48.c +++ b/src/gui_w48.c @@ -2296,18 +2296,26 @@ gui_mch_update_tabline(void) int curtabidx = 0; RECT rc; #ifdef FEAT_MBYTE + static int use_unicode = FALSE; + int uu; WCHAR *wstr = NULL; #endif if (s_tabhwnd == NULL) return; -#if defined(FEAT_MBYTE) && defined(CCM_SETUNICODEFORMAT) - if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) - /* - * Enable unicode support - */ - SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)TRUE, (LPARAM)0); +#if defined(FEAT_MBYTE) +# ifndef CCM_SETUNICODEFORMAT + /* For older compilers. We assume this never changes. */ +# define CCM_SETUNICODEFORMAT 0x2005 +# endif + uu = (enc_codepage >= 0 && (int)GetACP() != enc_codepage); + if (uu != use_unicode) + { + /* Enable/disable unicode support */ + SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)uu, (LPARAM)0); + use_unicode = uu; + } #endif tie.mask = TCIF_TEXT; @@ -2330,7 +2338,7 @@ gui_mch_update_tabline(void) tie.pszText = NameBuff; #ifdef FEAT_MBYTE wstr = NULL; - if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + if (use_unicode) { /* Need to go through Unicode. */ wstr = enc_to_ucs2(NameBuff, NULL); diff --git a/src/memline.c b/src/memline.c --- a/src/memline.c +++ b/src/memline.c @@ -1532,7 +1532,7 @@ recover_names(fname, list, nr) files[i] = files[i + 1]; } } - if (nr) + if (nr > 0) { file_count += num_files; if (nr <= file_count) @@ -1578,7 +1578,8 @@ recover_names(fname, list, nr) for (i = 0; i < num_names; ++i) vim_free(names[i]); - FreeWild(num_files, files); + if (num_files > 0) + FreeWild(num_files, files); } vim_free(dir_name); return file_count; diff --git a/src/menu.c b/src/menu.c --- a/src/menu.c +++ b/src/menu.c @@ -2336,20 +2336,23 @@ ex_menutranslate(eap) { tp = (menutrans_T *)menutrans_ga.ga_data; from = vim_strsave(from); - from_noamp = menu_text(from, NULL, NULL); - to = vim_strnsave(to, (int)(arg - to)); - if (from != NULL && from_noamp != NULL && to != NULL) + if (from != NULL) { - tp[menutrans_ga.ga_len].from = from; - tp[menutrans_ga.ga_len].from_noamp = from_noamp; - tp[menutrans_ga.ga_len].to = to; - ++menutrans_ga.ga_len; - } - else - { - vim_free(from); - vim_free(from_noamp); - vim_free(to); + from_noamp = menu_text(from, NULL, NULL); + to = vim_strnsave(to, (int)(arg - to)); + if (from_noamp != NULL && to != NULL) + { + tp[menutrans_ga.ga_len].from = from; + tp[menutrans_ga.ga_len].from_noamp = from_noamp; + tp[menutrans_ga.ga_len].to = to; + ++menutrans_ga.ga_len; + } + else + { + vim_free(from); + vim_free(from_noamp); + vim_free(to); + } } } } diff --git a/src/misc1.c b/src/misc1.c --- a/src/misc1.c +++ b/src/misc1.c @@ -3625,7 +3625,6 @@ expand_env_esc(srcp, dst, dstlen, esc, s xpc.xp_context = EXPAND_FILES; var = ExpandOne(&xpc, dst, NULL, WILD_ADD_SLASH|WILD_SILENT, WILD_EXPAND_FREE); - ExpandCleanup(&xpc); mustfree = TRUE; } @@ -9363,7 +9362,7 @@ FreeWild(count, files) int count; char_u **files; { - if (files == NULL || count <= 0) + if (count <= 0 || files == NULL) return; #if defined(__EMX__) && defined(__ALWAYS_HAS_TRAILING_NULL_POINTER) /* XXX */ /* diff --git a/src/option.c b/src/option.c --- a/src/option.c +++ b/src/option.c @@ -2996,35 +2996,44 @@ set_init_1() * 'maxmemtot' and 'maxmem' may have to be adjusted for available memory */ opt_idx = findoption((char_u *)"maxmemtot"); + if (opt_idx >= 0) + { #if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM) - if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L) -#endif - { + if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L) +#endif + { #ifdef HAVE_AVAIL_MEM - /* Use amount of memory available at this moment. */ - n = (mch_avail_mem(FALSE) >> 11); + /* Use amount of memory available at this moment. */ + n = (mch_avail_mem(FALSE) >> 11); #else # ifdef HAVE_TOTAL_MEM - /* Use amount of memory available to Vim. */ - n = (mch_total_mem(FALSE) >> 11); + /* Use amount of memory available to Vim. */ + n = (mch_total_mem(FALSE) >> 11); # else - n = (0x7fffffff >> 11); + n = (0x7fffffff >> 11); # endif #endif - options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n; - opt_idx = findoption((char_u *)"maxmem"); -#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM) - if ((long)options[opt_idx].def_val[VI_DEFAULT] > n - || (long)options[opt_idx].def_val[VI_DEFAULT] == 0L) -#endif options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n; + opt_idx = findoption((char_u *)"maxmem"); + if (opt_idx >= 0) + { +#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM) + if ((long)options[opt_idx].def_val[VI_DEFAULT] > n + || (long)options[opt_idx].def_val[VI_DEFAULT] == 0L) +#endif + options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n; + } + } } #ifdef FEAT_GUI_W32 /* force 'shortname' for Win32s */ if (gui_is_win32s()) - options[findoption((char_u *)"shortname")].def_val[VI_DEFAULT] = - (char_u *)TRUE; + { + opt_idx = findoption((char_u *)"shortname"); + if (opt_idx >= 0) + options[opt_idx].def_val[VI_DEFAULT] = (char_u *)TRUE; + } #endif #ifdef FEAT_SEARCHPATH @@ -3057,8 +3066,11 @@ set_init_1() } buf[j] = NUL; opt_idx = findoption((char_u *)"cdpath"); - options[opt_idx].def_val[VI_DEFAULT] = buf; - options[opt_idx].flags |= P_DEF_ALLOCED; + if (opt_idx >= 0) + { + options[opt_idx].def_val[VI_DEFAULT] = buf; + options[opt_idx].flags |= P_DEF_ALLOCED; + } } if (mustfree) vim_free(cdpath); @@ -3259,8 +3271,11 @@ set_init_1() if (mb_init() == NULL) { opt_idx = findoption((char_u *)"encoding"); - options[opt_idx].def_val[VI_DEFAULT] = p_enc; - options[opt_idx].flags |= P_DEF_ALLOCED; + if (opt_idx >= 0) + { + options[opt_idx].def_val[VI_DEFAULT] = p_enc; + options[opt_idx].flags |= P_DEF_ALLOCED; + } #if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS) \ || defined(VMS) @@ -3278,9 +3293,11 @@ set_init_1() set_string_option_direct((char_u *)"isk", -1, ISK_LATIN1, OPT_FREE, SID_NONE); opt_idx = findoption((char_u *)"isp"); - options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1; + if (opt_idx >= 0) + options[opt_idx].def_val[VIM_DEFAULT] = ISP_LATIN1; opt_idx = findoption((char_u *)"isk"); - options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1; + if (opt_idx >= 0) + options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1; (void)init_chartab(); } #endif @@ -3297,8 +3314,11 @@ set_init_1() if (p_tenc != NULL) { opt_idx = findoption((char_u *)"termencoding"); - options[opt_idx].def_val[VI_DEFAULT] = p_tenc; - options[opt_idx].flags |= P_DEF_ALLOCED; + if (opt_idx >= 0) + { + options[opt_idx].def_val[VI_DEFAULT] = p_tenc; + options[opt_idx].flags |= P_DEF_ALLOCED; + } convert_setup(&input_conv, p_tenc, p_enc); convert_setup(&output_conv, p_enc, p_tenc); } @@ -3436,10 +3456,13 @@ set_string_default(name, val) if (p != NULL) /* we don't want a NULL */ { opt_idx = findoption((char_u *)name); - if (options[opt_idx].flags & P_DEF_ALLOCED) - vim_free(options[opt_idx].def_val[VI_DEFAULT]); - options[opt_idx].def_val[VI_DEFAULT] = p; - options[opt_idx].flags |= P_DEF_ALLOCED; + if (opt_idx >= 0) + { + if (options[opt_idx].flags & P_DEF_ALLOCED) + vim_free(options[opt_idx].def_val[VI_DEFAULT]); + options[opt_idx].def_val[VI_DEFAULT] = p; + options[opt_idx].flags |= P_DEF_ALLOCED; + } } } @@ -3452,7 +3475,11 @@ set_number_default(name, val) char *name; long val; { - options[findoption((char_u *)name)].def_val[VI_DEFAULT] = (char_u *)val; + int opt_idx; + + opt_idx = findoption((char_u *)name); + if (opt_idx >= 0) + options[opt_idx].def_val[VI_DEFAULT] = (char_u *)val; } #if defined(EXITFREE) || defined(PROTO) @@ -3498,7 +3525,7 @@ set_init_2() */ set_number_default("scroll", (long)((long_u)Rows >> 1)); idx = findoption((char_u *)"scroll"); - if (!(options[idx].flags & P_WAS_SET)) + if (idx >= 0 && !(options[idx].flags & P_WAS_SET)) set_option_default(idx, OPT_LOCAL, p_cp); comp_col(); @@ -3507,7 +3534,7 @@ set_init_2() * Default is Rows - 1. */ idx = findoption((char_u *)"wi"); - if (!(options[idx].flags & P_WAS_SET)) + if (idx >= 0 && !(options[idx].flags & P_WAS_SET)) p_window = Rows - 1; set_number_default("window", Rows - 1); @@ -3519,7 +3546,8 @@ set_init_2() * with a dark background, that can handle color. */ idx = findoption((char_u *)"bg"); - if (!(options[idx].flags & P_WAS_SET) && *term_bg_default() == 'd') + if (idx >= 0 && !(options[idx].flags & P_WAS_SET) + && *term_bg_default() == 'd') { set_string_option_direct(NULL, idx, (char_u *)"dark", OPT_FREE, 0); /* don't mark it as set, when starting the GUI it may be @@ -3594,10 +3622,16 @@ set_init_3() #endif idx_srr = findoption((char_u *)"srr"); - do_srr = !(options[idx_srr].flags & P_WAS_SET); + if (idx_srr < 0) + do_srr = FALSE; + else + do_srr = !(options[idx_srr].flags & P_WAS_SET); #ifdef FEAT_QUICKFIX idx_sp = findoption((char_u *)"sp"); - do_sp = !(options[idx_sp].flags & P_WAS_SET); + if (idx_sp < 0) + do_sp = FALSE; + else + do_sp = !(options[idx_sp].flags & P_WAS_SET); #endif /* @@ -3692,7 +3726,7 @@ set_init_3() int idx3; idx3 = findoption((char_u *)"shcf"); - if (!(options[idx3].flags & P_WAS_SET)) + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) { p_shcf = (char_u *)"-c"; options[idx3].def_val[VI_DEFAULT] = p_shcf; @@ -3702,14 +3736,14 @@ set_init_3() # ifdef WIN3264 /* Somehow Win32 requires the quotes around the redirection too */ idx3 = findoption((char_u *)"sxq"); - if (!(options[idx3].flags & P_WAS_SET)) + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) { p_sxq = (char_u *)"\""; options[idx3].def_val[VI_DEFAULT] = p_sxq; } # else idx3 = findoption((char_u *)"shq"); - if (!(options[idx3].flags & P_WAS_SET)) + if (idx3 >= 0 && !(options[idx3].flags & P_WAS_SET)) { p_shq = (char_u *)"\""; options[idx3].def_val[VI_DEFAULT] = p_shq; @@ -3738,7 +3772,7 @@ set_helplang_default(lang) if (lang == NULL || STRLEN(lang) < 2) /* safety check */ return; idx = findoption((char_u *)"hlg"); - if (!(options[idx].flags & P_WAS_SET)) + if (idx >= 0 && !(options[idx].flags & P_WAS_SET)) { if (options[idx].flags & P_ALLOCED) free_string_option(p_hlg); @@ -3807,7 +3841,7 @@ set_title_defaults() * not need to be contacted. */ idx1 = findoption((char_u *)"title"); - if (!(options[idx1].flags & P_WAS_SET)) + if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET)) { #ifdef FEAT_GUI if (gui.starting || gui.in_use) @@ -3819,7 +3853,7 @@ set_title_defaults() p_title = val; } idx1 = findoption((char_u *)"icon"); - if (!(options[idx1].flags & P_WAS_SET)) + if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET)) { #ifdef FEAT_GUI if (gui.starting || gui.in_use) @@ -5224,7 +5258,7 @@ set_string_option_direct(name, opt_idx, if (opt_idx == -1) /* use name */ { opt_idx = findoption(name); - if (opt_idx == -1) /* not found (should not happen) */ + if (opt_idx < 0) /* not found (should not happen) */ { EMSG2(_(e_intern2), "set_string_option_direct()"); return; @@ -8127,7 +8161,7 @@ set_option_value(name, number, string, o long_u flags; opt_idx = findoption(name); - if (opt_idx == -1) + if (opt_idx < 0) EMSG2(_("E355: Unknown option: %s"), name); else { @@ -9464,7 +9498,8 @@ reset_modifiable() curbuf->b_p_ma = FALSE; p_ma = FALSE; opt_idx = findoption((char_u *)"ma"); - options[opt_idx].def_val[VI_DEFAULT] = FALSE; + if (opt_idx >= 0) + options[opt_idx].def_val[VI_DEFAULT] = FALSE; } /* @@ -10297,12 +10332,16 @@ vimrc_found(fname, envname) change_compatible(on) int on; { + int opt_idx; + if (p_cp != on) { p_cp = on; compatible_set(); } - options[findoption((char_u *)"cp")].flags |= P_WAS_SET; + opt_idx = findoption((char_u *)"cp"); + if (opt_idx >= 0) + options[opt_idx].flags |= P_WAS_SET; } /* diff --git a/src/po/de.po b/src/po/de.po --- a/src/po/de.po +++ b/src/po/de.po @@ -4999,8 +4999,8 @@ msgid "E397: Filename required" msgstr "E397: Dateiname wird benötigt" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Fehlende ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Fehlende ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/fr.po b/src/po/fr.po --- a/src/po/fr.po +++ b/src/po/fr.po @@ -71,8 +71,15 @@ # - Hundreds of error messages numbers added (wow) # 2006-04-15 DB Vim 7.0 first draft, based on fr.po 7.0c03 # - 285 new messages. +# 2006-05-17 DB VIM 7.0 second draft, still 7.0c03 +# - (check.vim) Fixed 2 wrong translated messages. +# 2006-05-19 DB VIM 7.0 second draft, 7.0e02 +# - 15 new messages. +# 2006-05-19 DB VIM 7.0, based on 7.0e03 +# - (check.vim) Fixed wrong messages. +# - header comment of this file should be updated. # -# Translated: 1677/1677 (100.00%) +# Translated: 1692/1692 (100.00%) # # Polishing done on: # buffer.c @@ -94,7 +101,7 @@ msgstr "" "Project-Id-Version: Vim(Français)\n" "Report-Msgid-Bugs-To: Adrien Beau \n" "POT-Creation-Date: 2006-04-01 17:09+0200\n" -"PO-Revision-Date: 2006-04-15 22:53+0200\n" +"PO-Revision-Date: 2006-04-21 00:31+0200\n" "Last-Translator: David Blanchet \n" "Language-Team: Adrien Beau \n" "MIME-Version: 1.0\n" @@ -110,7 +117,7 @@ msgstr "E82: Aucun tampon ne peut être alloué, Vim doit s'arrêter" # explicite. msgid "E83: Cannot allocate buffer, using other one..." msgstr "" -"E83: L'allocation du tampon a échoué: arrêtez Vim, libérez de la mémoire" +"E83: L'allocation du tampon a échoué : arrêtez Vim, libérez de la mémoire" msgid "E515: No buffers were unloaded" msgstr "E515: Aucun tampon n'a été déchargé" @@ -327,6 +334,9 @@ msgstr "E102: Le tampon %s est introuvab msgid "E103: Buffer \"%s\" is not in diff mode" msgstr "E103: Le tampon %s n'est pas en mode diff" +msgid "E787: Buffer changed unexpectedly" +msgstr "E787: Le tampon a été modifié inopinément" + # AB - Je cherche une traduction plus concise pour "escape". msgid "E104: Escape not allowed in digraph" msgstr "E104: Un digraphe ne peut contenir le caractère d'échappement" @@ -346,8 +356,8 @@ msgstr " Complètement de mot-clé (^N^P)" # DB - todo : Faut-il une majuscule à "mode" ? #. ctrl_x_mode == 0, ^P/^N compl. -msgid " ^X mode (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)" -msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^P^S^U^V^Y)" +msgid " ^X mode (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" +msgstr " mode ^X (^]^D^E^F^I^K^L^N^O^Ps^U^V^Y)" msgid " Whole line completion (^L^N^P)" msgstr " Complètement de ligne entière (^L^N^P)" @@ -388,8 +398,8 @@ msgstr " Complètement défini par l'utilisateur (^U^N^P)" msgid " Omni completion (^O^N^P)" msgstr " Complètement selon le type de fichier (Omni) (^O^N^P)" -msgid " Spelling suggestion (^S^N^P)" -msgstr " Suggestion d'orthographe (^S^N^P)" +msgid " Spelling suggestion (s^N^P)" +msgstr " Suggestion d'orthographe (s^N^P)" msgid " Keyword Local completion (^N^P)" msgstr " Complètement local de mot-clé (^N/^P)" @@ -656,6 +666,22 @@ msgstr "E723: Il manque '}' à la fin du Dictionnaire %s" msgid "E724: variable nested too deep for displaying" msgstr "E724: variable trop imbriquée pour être afficher" +#, c-format +msgid "E117: Unknown function: %s" +msgstr "E117: Fonction inconnue : %s" + +#, c-format +msgid "E119: Not enough arguments for function: %s" +msgstr "E119: La fonction %s n'a pas reçu assez d'arguments" + +#, c-format +msgid "E120: Using not in a script context: %s" +msgstr "E120: utilisé en dehors d'un script : %s" + +#, c-format +msgid "E725: Calling dict function without Dictionary: %s" +msgstr "E725: Appel d'une fonction « dict » sans Dictionnaire : %s" + msgid "E699: Too many arguments" msgstr "E699: Trop d'arguments" @@ -696,8 +722,8 @@ msgstr "" msgid "called inputrestore() more often than inputsave()" msgstr "inputrestore() a été appelé plus de fois qu'inputsave()" -msgid "E745: Range not allowed" -msgstr "E745: Les plages ne sont pas autorisés" +msgid "E786: Range not allowed" +msgstr "E786: Les plages ne sont pas autorisés" msgid "E701: Invalid type for len()" msgstr "E701: Type invalide avec len()" @@ -1200,7 +1226,8 @@ msgstr "E145: Les commandes externes son msgid "E146: Regular expressions can't be delimited by letters" msgstr "" -"E146: Les expressions régulières ne peuvent pas être délimitées par des lettres" +"E146: Les expressions régulières ne peuvent pas être délimitées par des " +"lettres" #, c-format msgid "replace with %s (y/n/a/q/l/^E/^Y)?" @@ -1266,7 +1293,6 @@ msgstr "" msgid "E478: Don't panic!" msgstr "E478: Pas de panique !" -# DB - c-format : langue de l'aide puis sujet de l'aide. #, c-format msgid "E661: Sorry, no '%s' help for %s" msgstr "E661: Désolé, aucune aide en langue '%s' pour %s" @@ -1304,7 +1330,7 @@ msgstr "E670: Encodages différents dans les fichiers d'aide en langue %s" # DB - Suggestion. #, c-format msgid "E154: Duplicate tag \"%s\" in file %s/%s" -msgstr "E154: Marqueur \"%s\" dupliqué fichier %s/%s" +msgstr "E154: Marqueur \"%s\" dupliqué dans le fichier %s/%s" # AB - Il faut respecter l'esprit plus que la lettre. #, c-format @@ -1375,9 +1401,8 @@ msgstr "Fin de la fonction" msgid "E464: Ambiguous use of user-defined command" msgstr "E464: Utilisation ambigüe d'une commande définie par l'utilisateur" -# DB - Espace final car Vim peut ajouter ": " à la suite msgid "E492: Not an editor command" -msgstr "E492: Commande inconnue " +msgstr "E492: Commande inconnue" msgid "E493: Backwards range given" msgstr "E493: La plage spécifiée est inversée" @@ -1444,8 +1469,7 @@ msgid "E182: Invalid command name" msgstr "E182: Nom de commande invalide" msgid "E183: User defined commands must start with an uppercase letter" -msgstr "" -"E183: Les commandes utilisateur doivent commencer par une majuscule" +msgstr "E183: Les commandes utilisateur doivent commencer par une majuscule" #, c-format msgid "E184: No such user-defined command: %s" @@ -1487,11 +1511,10 @@ msgstr "Pas de fichier d'échange" msgid "Append File" msgstr "Ajouter fichier" -# DB - todo : le messages d'aide (":h E747") n'a rien à voir... msgid "E747: Cannot change directory, buffer is modifed (add ! to override)" msgstr "" -"E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! " -"pour passer outre)" +"E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! pour " +"passer outre)" msgid "E186: No previous directory" msgstr "E186: Pas de répertoire précédent" @@ -1555,8 +1578,7 @@ msgid "E496: no autocommand buffer numbe msgstr "E496: Aucun numéro de tampon d'autocommande à substituer à \"\"" msgid "E497: no autocommand match name to substitute for \"\"" -msgstr "" -"E497: Aucune correspondance d'autocommande à substituer à \"\"" +msgstr "E497: Aucune correspondance d'autocommande à substituer à \"\"" msgid "E498: no :source file name to substitute for \"\"" msgstr "E498: Aucun nom de fichier :source à substituer à \"\"" @@ -1664,12 +1686,15 @@ msgstr "E601: Imbrication de :try trop i msgid "E603: :catch without :try" msgstr "E603: :catch sans :try" +#. Give up for a ":catch" after ":finally" and ignore it. +#. * Just parse. msgid "E604: :catch after :finally" msgstr "E604: :catch après :finally" msgid "E606: :finally without :try" msgstr "E606: :finally sans :try" +#. Give up for a multiple ":finally" and ignore it. msgid "E607: multiple :finally" msgstr "E607: Il ne peut y avoir qu'un seul :finally" @@ -1679,6 +1704,9 @@ msgstr "E602: :endtry sans :try" msgid "E193: :endfunction not inside a function" msgstr "E193: :endfunction en dehors d'une fonction" +msgid "E788: Not allowed to edit another buffer now" +msgstr "E788: L'édition d'un autre tampon n'est plus permise" + # DB - TODO : Pas compris le message ni comment le déclencher malgré une visite # dans le code. msgid "tagname" @@ -1754,6 +1782,7 @@ msgstr "Vim: Lecture de stdin...\n" msgid "Reading from stdin..." msgstr "Lecture de stdin..." +#. Re-opening the original file failed! msgid "E202: Conversion made file unreadable!" msgstr "E202: La conversion a rendu le fichier illisible !" @@ -1831,17 +1860,15 @@ msgid "is read-only (add ! to override)" msgstr "est en lecture seule (ajoutez ! pour passer outre)" msgid "E506: Can't write to backup file (add ! to override)" -msgstr "" -"E506: Impossible d'écrire la copie de secours (! pour passer outre)" +msgstr "E506: Impossible d'écrire la copie de secours (! pour passer outre)" msgid "E507: Close error for backup file (add ! to override)" -msgstr "" -"E507: Erreur de fermeture de la copie de secours (! pour passer outre)" +msgstr "E507: Erreur de fermeture de la copie de secours (! pour passer outre)" msgid "E508: Can't read file for backup (add ! to override)" msgstr "" -"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! " -"pour passer outre)" +"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! pour " +"passer outre)" msgid "E509: Cannot create backup file (add ! to override)" msgstr "" @@ -1963,6 +1990,9 @@ msgstr "[noeol]" msgid "[Incomplete last line]" msgstr "[Dernière ligne incomplète]" +#. don't overwrite messages here +#. must give this prompt +#. don't use emsg() here, don't want to flush the buffers msgid "WARNING: The file has been changed since reading it!!!" msgstr "ALERTE: Le fichier a été modifié depuis que Vim l'a lu !" @@ -2044,6 +2074,7 @@ msgstr "--Effacé--" msgid "auto-removing autocommand: %s " msgstr "Autocommandes marquées pour auto-suppression : %s " +#. the group doesn't exist #, c-format msgid "E367: No such group: \"%s\"" msgstr "E367: Aucun groupe \"%s\"" @@ -2356,11 +2387,11 @@ msgstr "Chercher une chaîne (utilisez '\\\\' pour chercher un '\\')" msgid "Find & Replace (use '\\\\' to find a '\\')" msgstr "Chercher et remplacer (utilisez '\\\\' pour trouver un '\\')" -#. We fake this: Use a filter that doesn't select anything and a default -#. * file name that won't be used. # DB - Traduction non indispensable puisque le code indique qu'il s'agit d'un # paramétrage bidon afin de sélectionner un répertoire plutôt qu'un # fichier. +#. We fake this: Use a filter that doesn't select anything and a default +#. * file name that won't be used. msgid "Not Used" msgstr "Non utilisé" @@ -2434,6 +2465,7 @@ msgstr "Choisir une police - Vim" msgid "Name:" msgstr "Nom :" +#. create toggle button msgid "Show size in Points" msgstr "Afficher la taille en Points" @@ -2516,8 +2548,7 @@ msgstr "" "E674: 'printmbcharset' ne peut pas être vide avec un encodage multi-octets" msgid "E675: No default font specified for multi-byte printing." -msgstr "" -"E675: Aucune police par défaut pour l'impression multi-octets" +msgstr "E675: Aucune police par défaut pour l'impression multi-octets" msgid "E324: Can't open PostScript output file" msgstr "E324: Impossible d'ouvrir le fichier PostScript de sortie" @@ -2627,8 +2658,7 @@ msgstr "E567: Aucune connexion cscope" # DB - todo #, c-format msgid "E259: no matches found for cscope query %s of %s" -msgstr "" -"E259: aucune correspondance trouvée pour la requête cscope %s de %s" +msgstr "E259: aucune correspondance trouvée pour la requête cscope %s de %s" #, c-format msgid "E469: invalid cscopequickfix flag %c for %c" @@ -2663,6 +2693,7 @@ msgstr "E261: Connexion cscope %s introu msgid "cscope connection %s closed" msgstr "connexion cscope %s fermée" +#. should not reach here msgid "E570: fatal error in cs_manage_matches" msgstr "E570: erreur fatale dans cs_manage_matches" @@ -2817,12 +2848,33 @@ msgstr "" msgid "no such window" msgstr "Cette fenêtre n'existe pas" +msgid "E265: $_ must be an instance of String" +msgstr "E265: $_ doit être une instance de chaîne (String)" + msgid "" "E266: Sorry, this command is disabled, the Ruby library could not be loaded." msgstr "" "E266: Désolé, commande désactivée : la bibliothèque Ruby n'a pas pu être " "chargée." +msgid "E267: unexpected return" +msgstr "E267: « return » inattendu" + +msgid "E268: unexpected next" +msgstr "E268: « next » inattendu" + +msgid "E269: unexpected break" +msgstr "E269: « break » inattendu" + +msgid "E270: unexpected redo" +msgstr "E270: « redo » inattendu" + +msgid "E271: retry outside of rescue clause" +msgstr "E271: « retry » hors d'une clause « rescue »" + +msgid "E272: unhandled exception" +msgstr "E272: Exception non prise en charge" + # DB - todo #, c-format msgid "E273: unknown longjmp status %d" @@ -3047,6 +3099,7 @@ msgstr "Vim: Alerte: La sortie ne s'effe msgid "Vim: Warning: Input is not from a terminal\n" msgstr "Vim: Alerte: L'entrée ne se fait pas sur un terminal\n" +#. just in case.. msgid "pre-vimrc command line" msgstr "ligne de commande pre-vimrc" @@ -3095,7 +3148,8 @@ msgstr "" # DB - todo (VMS uniquement). msgid "where case is ignored prepend / to make flag upper case" msgstr "" -"pour lesquels la casse est indifférente (/ pour que le drapeau soit majuscule)" +"pour lesquels la casse est indifférente (/ pour que le drapeau soit " +"majuscule)" msgid "" "\n" @@ -3123,7 +3177,8 @@ msgstr "-g\t\tLancer l'interface graphiq msgid "-f or --nofork\tForeground: Don't fork when starting GUI" msgstr "" -"-f, --nofork\tPremier-plan : ne pas détacher l'interface graphique du terminal" +"-f, --nofork\tPremier-plan : ne pas détacher l'interface graphique du " +"terminal" msgid "-v\t\t\tVi mode (like \"vi\")" msgstr "-v\t\tMode Vi (comme \"vi\")" @@ -3278,7 +3333,8 @@ msgstr "--remote-send \tEnvoyer à un serveur Vim puis quitter" msgid "--remote-expr \tEvaluate in a Vim server and print result" msgstr "" -"--remote-expr \tÉvaluer dans un serveur Vim, afficher le résultat" +"--remote-expr \tÉvaluer dans un serveur Vim, afficher le " +"résultat" msgid "--serverlist\t\tList available Vim server names and exit" msgstr "" @@ -3312,7 +3368,7 @@ msgstr "" msgid "" "\n" -"Arguments recognised by gvim (Athena version) :\n" +"Arguments recognised by gvim (Athena version):\n" msgstr "" "\n" "Arguments reconnus par gvim (version Athena) :\n" @@ -3394,8 +3450,7 @@ msgstr "" "-display \tLancer Vim sur ce \t(également : --display)" msgid "--role \tSet a unique role to identify the main window" -msgstr "" -"--role \tDonner un rôle pour identifier la fenêtre principale" +msgstr "--role \tDonner un rôle pour identifier la fenêtre principale" msgid "--socketid \tOpen Vim inside another GTK widget" msgstr "--socketid \tOuvrir Vim dans un autre widget GTK" @@ -3504,7 +3559,8 @@ msgstr "E288: la méthode de saisie ne supporte aucun style" msgid "E289: input method doesn't support my preedit type" msgstr "" -"E289: le type de préédition de Vim n'est pas supporté par la méthode de saisie" +"E289: le type de préédition de Vim n'est pas supporté par la méthode de " +"saisie" # DB - todo msgid "E290: over-the-spot style requires fontset" @@ -3576,8 +3632,8 @@ msgid "" "Maybe no changes were made or Vim did not update the swap file." msgstr "" "\n" -"Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à jour " -" le fichier d'échange." +"Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à " +"jour le fichier d'échange." msgid " cannot be used with this version of Vim.\n" msgstr " ne peut pas être utilisé avec cette version de Vim.\n" @@ -3651,7 +3707,8 @@ msgstr "E311: Récupération interrompue" msgid "" "E312: Errors detected while recovering; look for lines starting with ???" msgstr "" -"E312: Erreurs lors de la récupération ; examinez les lignes commençant par ???" +"E312: Erreurs lors de la récupération ; examinez les lignes commençant " +"par ???" msgid "See \":help E312\" for more information." msgstr "Consultez \":help E312\" pour plus d'information." @@ -3954,6 +4011,8 @@ msgstr "E331: Ajout d'éléments de menu directement dans barre de menu interdit" msgid "E332: Separator cannot be part of a menu path" msgstr "E332: Un séparateur ne peut faire partie d'un chemin de menu" +#. Now we have found the matching menu, and we list the mappings +#. Highlight title msgid "" "\n" "--- Menus ---" @@ -4048,6 +4107,7 @@ msgstr "Enregistrer un fichier" msgid "Open File dialog" msgstr "Ouvrir un fichier" +#. TODO: non-GUI file selector here msgid "E338: Sorry, no file browser in console mode" msgstr "E338: Désolé, pas de sélecteur de fichiers en mode console" @@ -4089,6 +4149,7 @@ msgstr "Bip !" msgid "Vim: preserving files...\n" msgstr "Vim: préservation des fichiers...\n" +#. close all memfiles, without deleting msgid "Vim: Finished.\n" msgstr "Vim: Fini.\n" @@ -4175,6 +4236,7 @@ msgstr "E346: Plus de répertoire \"%s\" dans 'cdpath'" msgid "E347: No more file \"%s\" found in path" msgstr "E347: Plus de fichier \"%s\" dans 'path'" +#. Get here when the server can't be found. msgid "Cannot connect to Netbeans #2" msgstr "Impossible de se connecter à Netbeans n°2" @@ -4184,7 +4246,8 @@ msgstr "Impossible de se connecter à Netbeans" #, c-format msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" msgstr "" -"E668: Mode d'accès incorrect au fichier d'infos de connexion NetBeans : \"%s\"" +"E668: Mode d'accès incorrect au fichier d'infos de connexion NetBeans : \"%s" +"\"" # DB : message d'un appel à perror(). msgid "read from Netbeans socket" @@ -4259,6 +4322,7 @@ msgid "E748: No previously used register msgstr "E748: Aucun registre n'a été précédemment utilisé" # DB - Question O/N. +#. must display the prompt msgid "cannot yank; delete anyway" msgstr "impossible de réaliser une copie ; effacer tout de même" @@ -4291,6 +4355,7 @@ msgstr "%ld lignes copiées" msgid "E353: Nothing in register %s" msgstr "E353: Le registre %s est vide" +#. Highlight title msgid "" "\n" "--- Registers ---" @@ -4327,8 +4392,8 @@ msgid "" "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld " "Bytes" msgstr "" -"%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; " -"%ld sur %ld octets sélectionnés" +"%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; %ld sur " +"%ld octets sélectionnés" #, c-format msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" @@ -4339,8 +4404,9 @@ msgstr "" msgid "" "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of " "%ld" -msgstr "Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; " -"Caractère %ld sur %ld ; Octet %ld sur %ld" +msgstr "" +"Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; Caractère %ld sur " +"%ld ; Octet %ld sur %ld" #, c-format msgid "(+%ld for BOM)" @@ -4352,9 +4418,8 @@ msgstr "%<%f%h%m%=Page %N" msgid "Thanks for flying Vim" msgstr "Merci d'avoir choisi Vim" -# DB - Espace final car Vim peut ajouter ": " à la suite msgid "E518: Unknown option" -msgstr "E518: Option inconnue " +msgstr "E518: Option inconnue" msgid "E519: Option not supported" msgstr "E519: Option non supportée" @@ -4376,8 +4441,7 @@ msgid "E529: Cannot set 'term' to empty msgstr "E529: 'term' ne doit pas être une chaîne vide" msgid "E530: Cannot change term in GUI" -msgstr "" -"E530: Impossible de modifier term dans l'interface graphique" +msgstr "E530: Impossible de modifier term dans l'interface graphique" msgid "E531: Use \":gui\" to start the GUI" msgstr "E531: Utilisez \":gui\" pour démarrer l'interface graphique" @@ -4553,15 +4617,11 @@ msgstr "ANCHOR_BUF_SIZE trop petit." msgid "I/O ERROR" msgstr "ERREUR d'E/S" -msgid "...(truncated)" -msgstr "...(tronqué)" - msgid "Message" msgstr "Message" msgid "'columns' is not 80, cannot execute external commands" -msgstr "" -"'columns' ne vaut pas 80, impossible d'exécuter des commandes externes" +msgstr "'columns' ne vaut pas 80, impossible d'exécuter des commandes externes" msgid "E237: Printer selection failed" msgstr "E237: La sélection de l'imprimante a échoué" @@ -5000,6 +5060,16 @@ msgstr "E388: Impossible de trouver la définition" msgid "E389: Couldn't find pattern" msgstr "E389: Impossible de trouver le motif" +#, c-format +msgid "" +"\n" +"# Last %sSearch Pattern:\n" +"~" +msgstr "" +"\n" +"# Dernier motif de recherche %s :\n" +"~" + msgid "E759: Format error in spell file" msgstr "E759: Erreur de format du fichier orthographique" @@ -5064,7 +5134,7 @@ msgstr "La conversion dans %s non supportée : de %s vers %s" #, c-format msgid "Conversion in %s not supported" -msgstr "La conversion dans %s non supportée" +msgstr "La conversion dans %s non supportée" #, c-format msgid "Invalid value for FLAG in %s line %d: %s" @@ -5075,6 +5145,22 @@ msgid "FLAG after using flags in %s line msgstr "FLAG trouvé après des drapeaux dans %s ligne %d : %s" #, c-format +msgid "" +"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line " +"%d" +msgstr "" +"Définir COMPOUNDFORBIDFLAG après des PFX peut donner des résultats erronés " +"dans %s ligne %d" + +#, c-format +msgid "" +"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line " +"%d" +msgstr "" +"Définir COMPOUNDPERMITFLAG après des PFX peut donner des résultats erronés " +" dans %s ligne %d" + +#, c-format msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" msgstr "Valeur de COMPOUNDWORDMAX erronée dans %s ligne %d : %s" @@ -5106,8 +5192,8 @@ msgid "" "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s " "line %d: %s" msgstr "" -"Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST " -"dans %s ligne %d : %s" +"Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/" +"NOSUGGEST dans %s ligne %d : %s" #, c-format msgid "Expected Y or N in %s line %d: %s" @@ -5118,13 +5204,6 @@ msgstr "Y ou N attendu dans %s ligne %d msgid "Broken condition in %s line %d: %s" msgstr "Condition non valide dans %s ligne %d : %s" -# DB - todo -#, c-format -msgid "Affix flags ignored when PFXPOSTPONE used in %s line %d: %s" -msgstr "" -"Drapeaux de l'affixe ignorés quand PFXPOSTPONE est utilisé dans %s ligne %d " -": %s" - #, c-format msgid "Expected REP(SAL) count in %s line %d" msgstr "Nombre de REP(SAL) attendu dans %s ligne %d" @@ -5248,8 +5327,10 @@ msgstr "%d noeuds compressés sur %d ; %d (%d%%) restants " msgid "Reading back spell file..." msgstr "Relecture du fichier orthographique" +#. #. * Go through the trie of good words, soundfold each word and add it to #. * the soundfold trie. +#. msgid "Performing soundfolding..." msgstr "Analyse phonétique en cours..." @@ -5313,6 +5394,7 @@ msgstr "Désolé, aucune suggestion" msgid "Sorry, only %ld suggestions" msgstr "Désolé, seulement %ld suggestions" +#. avoid more prompt #, c-format msgid "Change \"%.*s\" to:" msgstr "Remplacer \"%.*s\" par :" @@ -5594,6 +5676,7 @@ msgstr " Utilisation d'un marqueur avec une casse différente !" msgid "E429: File \"%s\" does not exist" msgstr "E429: Le fichier \"%s\" n'existe pas" +#. Highlight title msgid "" "\n" " # TO tag FROM line in file/text" @@ -5654,6 +5737,7 @@ msgstr "E436: Aucune entrée \"%s\" dans termcap" msgid "E437: terminal capability \"cm\" required" msgstr "E437: capacité de terminal \"cm\" requise" +#. Highlight title msgid "" "\n" "--- Terminal keys ---" @@ -5668,6 +5752,7 @@ msgid "Vim: Error reading input, exiting msgstr "Vim: Erreur lors de la lecture de l'entrée, sortie...\n" # DB - Question O/N. +#. must display the prompt msgid "No undo possible; continue anyway" msgstr "Annulation impossible ; continuer" @@ -5719,6 +5804,10 @@ msgstr "Rien à annuler" msgid "number changes time" msgstr "numéro modif. instant" +#, c-format +msgid "%ld seconds ago" +msgstr "il y a %ld secondes" + msgid "E439: undo list corrupt" msgstr "E439: la liste d'annulation est corrompue" @@ -6031,6 +6120,9 @@ msgstr "ALERTE: Windows 95/98/ME détecté" msgid "type :help windows95 for info on this" msgstr "tapez :help windows95 pour plus d'information" +msgid "Already only one window" +msgstr "Il n'y a déjà plus qu'une fenêtre" + msgid "E441: There is no preview window" msgstr "E441: Il n'y a pas de fenêtre de prévisualisation" @@ -6043,9 +6135,6 @@ msgstr "E443: Rotation impossible quand une autre fenêtre est partagée" msgid "E444: Cannot close last window" msgstr "E444: Impossible de fermer la dernière fenêtre" -msgid "Already only one window" -msgstr "Il n'y a déjà plus qu'une fenêtre" - msgid "E445: Other window contains changes" msgstr "E445: Les modifications de l'autre fenêtre n'ont pas été enregistrées" @@ -6079,6 +6168,7 @@ msgstr "&Comparer avec Vim" msgid "Edit with &Vim" msgstr "Éditer dans &Vim" +#. Now concatenate msgid "Edit with existing Vim - " msgstr "Éditer dans le Vim existant - " @@ -6088,8 +6178,8 @@ msgstr "Édites le(s) fichier(s) sélectionné(s) avec Vim" # DB - MessageBox win32, la longueur n'est pas un problème ! msgid "Error creating process: Check if gvim is in your path!" msgstr "" -"Erreur de création du processus : " -"vérifiez que gvim est bien dans votre chemin !" +"Erreur de création du processus : vérifiez que gvim est bien dans votre " +"chemin !" msgid "gvimext.dll error" msgstr "Erreur de gvimext.dll" @@ -6102,6 +6192,10 @@ msgstr "Le chemin est trop long !" msgid "--No lines in buffer--" msgstr "--Le tampon est vide--" +#. +#. * The error messages that can be shared are included here. +#. * Excluded are errors that are only used once and debugging messages. +#. msgid "E470: Command aborted" msgstr "E470: Commande annulée" @@ -6338,7 +6432,8 @@ msgstr "E46: La variable \"%s\" est en l #, c-format msgid "E46: Cannot set variable in the sandbox: \"%s\"" -msgstr "E46: Impossible de modifier une variable depuis le bac à sable : \"%s\"" +msgstr "" +"E46: Impossible de modifier une variable depuis le bac à sable : \"%s\"" msgid "E47: Error while reading errorfile" msgstr "E47: Erreur lors de la lecture du fichier d'erreurs" @@ -6429,7 +6524,7 @@ msgstr "E682: Délimiteur ou motif de recherche invalide" msgid "E139: File is loaded in another buffer" msgstr "E139: Le fichier est chargé dans un autre tampon" -#,c-format +#, c-format msgid "E764: Option '%s' is not set" msgstr "E764: L'option '%s' n'est pas activée" diff --git a/src/po/it.po b/src/po/it.po --- a/src/po/it.po +++ b/src/po/it.po @@ -5096,8 +5096,8 @@ msgid "E397: Filename required" msgstr "E397: Nome file necessario" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Manca ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Manca ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/ja.po b/src/po/ja.po --- a/src/po/ja.po +++ b/src/po/ja.po @@ -5109,8 +5109,8 @@ msgid "E397: Filename required" msgstr "E397: ¥Õ¥¡¥¤¥ë̾¤¬É¬ÍפǤ¹" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: ']' ¤¬¤¢¤ê¤Þ¤»¤ó: %s" +msgid "E789: Missing ']': %s" +msgstr "E789: ']' ¤¬¤¢¤ê¤Þ¤»¤ó: %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/ja.sjis.po b/src/po/ja.sjis.po --- a/src/po/ja.sjis.po +++ b/src/po/ja.sjis.po @@ -5109,8 +5109,8 @@ msgid "E397: Filename required" msgstr "E397: ƒtƒ@ƒCƒ‹–¼‚ª•K—v‚Å‚·" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: ']' ‚ª‚ ‚è‚Ü‚¹‚ñ: %s" +msgid "E789: Missing ']': %s" +msgstr "E789: ']' ‚ª‚ ‚è‚Ü‚¹‚ñ: %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/pl.UTF-8.po b/src/po/pl.UTF-8.po --- a/src/po/pl.UTF-8.po +++ b/src/po/pl.UTF-8.po @@ -5101,8 +5101,8 @@ msgid "E397: Filename required" msgstr "E397: Wymagana nazwa pliku" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Brak ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Brak ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/pl.cp1250.po b/src/po/pl.cp1250.po --- a/src/po/pl.cp1250.po +++ b/src/po/pl.cp1250.po @@ -5101,8 +5101,8 @@ msgid "E397: Filename required" msgstr "E397: Wymagana nazwa pliku" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Brak ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Brak ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/pl.po b/src/po/pl.po --- a/src/po/pl.po +++ b/src/po/pl.po @@ -5101,8 +5101,8 @@ msgid "E397: Filename required" msgstr "E397: Wymagana nazwa pliku" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Brak ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Brak ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/sk.cp1250.po b/src/po/sk.cp1250.po --- a/src/po/sk.cp1250.po +++ b/src/po/sk.cp1250.po @@ -4871,8 +4871,8 @@ msgid "E397: Filename required" msgstr "E397: Vyžadovaný názov súboru" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Chýba ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Chýba ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/sk.po b/src/po/sk.po --- a/src/po/sk.po +++ b/src/po/sk.po @@ -4871,8 +4871,8 @@ msgid "E397: Filename required" msgstr "E397: Vy¾adovaný názov súboru" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Chýba ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Chýba ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/sv.po b/src/po/sv.po --- a/src/po/sv.po +++ b/src/po/sv.po @@ -5066,8 +5066,8 @@ msgid "E397: Filename required" msgstr "E397: Filnamn krävs" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: Saknar ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: Saknar ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/zh_CN.UTF-8.po b/src/po/zh_CN.UTF-8.po --- a/src/po/zh_CN.UTF-8.po +++ b/src/po/zh_CN.UTF-8.po @@ -5056,8 +5056,8 @@ msgid "E397: Filename required" msgstr "E397: 需è¦æ–‡ä»¶å称" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: 缺少 ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: 缺少 ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/zh_CN.cp936.po b/src/po/zh_CN.cp936.po --- a/src/po/zh_CN.cp936.po +++ b/src/po/zh_CN.cp936.po @@ -5056,8 +5056,8 @@ msgid "E397: Filename required" msgstr "E397: ÐèÒªÎļþÃû³Æ" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: ȱÉÙ ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: ȱÉÙ ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/po/zh_CN.po b/src/po/zh_CN.po --- a/src/po/zh_CN.po +++ b/src/po/zh_CN.po @@ -5056,8 +5056,8 @@ msgid "E397: Filename required" msgstr "E397: ÐèÒªÎļþÃû³Æ" #, c-format -msgid "E747: Missing ']': %s" -msgstr "E747: ȱÉÙ ']': %s" +msgid "E789: Missing ']': %s" +msgstr "E789: ȱÉÙ ']': %s" #, c-format msgid "E398: Missing '=': %s" diff --git a/src/popupmnu.c b/src/popupmnu.c --- a/src/popupmnu.c +++ b/src/popupmnu.c @@ -30,7 +30,7 @@ static int pum_col; /* left column of static int pum_do_redraw = FALSE; /* do redraw anyway */ -static int pum_set_selected __ARGS((int n)); +static int pum_set_selected __ARGS((int n, int repeat)); #define PUM_DEF_HEIGHT 10 #define PUM_DEF_WIDTH 15 @@ -59,6 +59,7 @@ pum_display(array, size, selected) int height; int col; int above_row = cmdline_row; + int redo_count = 0; redo: def_width = PUM_DEF_WIDTH; @@ -209,8 +210,9 @@ redo: pum_size = size; /* Set selected item and redraw. If the window size changed need to redo - * the positioning. */ - if (pum_set_selected(selected)) + * the positioning. Limit this to two times, when there is not much + * room the window size will keep changing. */ + if (pum_set_selected(selected, redo_count) && ++redo_count <= 2) goto redo; } @@ -338,12 +340,17 @@ pum_get_selected() /* * Set the index of the currently selected item. The menu will scroll when * necessary. When "n" is out of range don't scroll. + * This may be repeated when the preview window is used: + * "repeat" == 0: open preview window normally + * "repeat" == 1: open preview window but don't set the size + * "repeat" == 2: don't open preview window * Returns TRUE when the window was resized and the location of the popup menu * must be recomputed. */ static int -pum_set_selected(n) +pum_set_selected(n, repeat) int n; + int repeat; { int resized = FALSE; int context = pum_height / 2; @@ -404,10 +411,14 @@ pum_set_selected(n) /* * Show extra info in the preview window if there is something and * 'completeopt' contains "preview". + * Skip this when tried twice already. + * Skip this also when there is not much room. * NOTE: Be very careful not to sync undo! */ if (pum_array[pum_selected].pum_info != NULL - && vim_strchr(p_cot, 'p') != NULL) + && Rows > 10 + && repeat <= 1 + && vim_strchr(p_cot, 'p') != NULL) { win_T *curwin_save = curwin; int res = OK; @@ -470,12 +481,15 @@ pum_set_selected(n) /* Increase the height of the preview window to show the * text, but no more than 'previewheight' lines. */ - if (lnum > p_pvh) - lnum = p_pvh; - if (curwin->w_height < lnum) + if (repeat == 0) { - win_setheight((int)lnum); - resized = TRUE; + if (lnum > p_pvh) + lnum = p_pvh; + if (curwin->w_height < lnum) + { + win_setheight((int)lnum); + resized = TRUE; + } } curbuf->b_changed = 0; diff --git a/src/syntax.c b/src/syntax.c --- a/src/syntax.c +++ b/src/syntax.c @@ -4528,7 +4528,7 @@ syn_cmd_keyword(eap, syncing) break; if (p[1] == NUL) { - EMSG2(_("E747: Missing ']': %s"), kw); + EMSG2(_("E789: Missing ']': %s"), kw); kw = p + 2; /* skip over the NUL */ break; } @@ -6329,9 +6329,9 @@ init_highlight(both, reset) * depend on the number of colors available. */ if (t_colors > 8) do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey" - : "Visual ctermbg=DarkGrey"), reset, TRUE); + : "Visual ctermbg=DarkGrey"), FALSE, TRUE); else - do_highlight((char_u *)"Visual cterm=reverse", reset, TRUE); + do_highlight((char_u *)"Visual cterm=reverse", FALSE, TRUE); #ifdef FEAT_SYN_HL /* diff --git a/src/tag.c b/src/tag.c --- a/src/tag.c +++ b/src/tag.c @@ -3356,7 +3356,6 @@ expand_tag_fname(fname, tag_fname, expan xpc.xp_context = EXPAND_FILES; expanded_fname = ExpandOne(&xpc, (char_u *)fname, NULL, WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE); - ExpandCleanup(&xpc); if (expanded_fname != NULL) fname = expanded_fname; } diff --git a/src/version.h b/src/version.h --- a/src/version.h +++ b/src/version.h @@ -35,6 +35,6 @@ */ #define VIM_VERSION_NODOT "vim70e" #define VIM_VERSION_SHORT "7.0e" -#define VIM_VERSION_MEDIUM "7.0e03 BETA" -#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19)" -#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19, compiled " +#define VIM_VERSION_MEDIUM "7.0e04 BETA" +#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20)" +#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20, compiled "