0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

updated for version 7.0e04

This commit is contained in:
Bram Moolenaar 2006-04-20 22:17:20 +00:00
parent 8424a624ce
commit fc1421eb53
54 changed files with 2579 additions and 5124 deletions

View File

@ -1,7 +1,7 @@
" Vim completion script " Vim completion script
" Language: HTML (XHTML 1.0 Strict by default) " Language: HTML and XHTML
" Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl ) " Maintainer: Mikolaj Machowski ( mikmach AT wp DOT pl )
" Last Change: 2006 Apr 17 " Last Change: 2006 Apr 20
function! htmlcomplete#CompleteTags(findstart, base) function! htmlcomplete#CompleteTags(findstart, base)
if a:findstart if a:findstart
@ -159,12 +159,12 @@ function! htmlcomplete#CompleteTags(findstart, base)
if exists("b:entitiescompl") if exists("b:entitiescompl")
unlet! b:entitiescompl unlet! b:entitiescompl
if !exists("g:html_omni") if !exists("b:html_omni")
"runtime! autoload/xml/xhtml10s.vim "runtime! autoload/xml/xhtml10s.vim
call htmlcomplete#LoadData() call htmlcomplete#LoadData()
endif endif
let entities = g:html_omni['vimxmlentities'] let entities = b:html_omni['vimxmlentities']
if len(a:base) == 1 if len(a:base) == 1
for m in entities for m in entities
@ -462,8 +462,8 @@ function! htmlcomplete#CompleteTags(findstart, base)
endfor endfor
endif endif
else else
if has_key(g:html_omni, tag) && has_key(g:html_omni[tag][1], attrname) if has_key(b:html_omni, tag) && has_key(b:html_omni[tag][1], attrname)
let values = g:html_omni[tag][1][attrname] let values = b:html_omni[tag][1][attrname]
else else
return [] return []
endif endif
@ -503,13 +503,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
let sbase = matchstr(context, '.*\ze\s.*') let sbase = matchstr(context, '.*\ze\s.*')
" Load data {{{ " Load data {{{
if !exists("g:html_omni_gen") if !exists("b:html_omni_gen")
call htmlcomplete#LoadData() call htmlcomplete#LoadData()
endif endif
" }}} " }}}
if has_key(g:html_omni, tag) if has_key(b:html_omni, tag)
let attrs = keys(g:html_omni[tag][1]) let attrs = keys(b:html_omni[tag][1])
else else
return [] return []
endif endif
@ -522,13 +522,13 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif endif
endfor endfor
let menu = res + res2 let menu = res + res2
if has_key(g:html_omni, 'vimxmlattrinfo') if has_key(b:html_omni, 'vimxmlattrinfo')
let final_menu = [] let final_menu = []
for i in range(len(menu)) for i in range(len(menu))
let item = menu[i] let item = menu[i]
if has_key(g:html_omni['vimxmlattrinfo'], item) if has_key(b:html_omni['vimxmlattrinfo'], item)
let m_menu = g:html_omni['vimxmlattrinfo'][item][0] let m_menu = b:html_omni['vimxmlattrinfo'][item][0]
let m_info = g:html_omni['vimxmlattrinfo'][item][1] let m_info = b:html_omni['vimxmlattrinfo'][item][1]
if m_menu !~ 'Bool' if m_menu !~ 'Bool'
let item .= '="' let item .= '="'
endif endif
@ -558,7 +558,7 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif endif
" }}} " }}}
" Load data {{{ " Load data {{{
if !exists("g:html_omni") if !exists("b:html_omni")
"runtime! autoload/xml/xhtml10s.vim "runtime! autoload/xml/xhtml10s.vim
call htmlcomplete#LoadData() call htmlcomplete#LoadData()
endif endif
@ -568,16 +568,16 @@ function! htmlcomplete#CompleteTags(findstart, base)
let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack")) let opentag = tolower(xmlcomplete#GetLastOpenTag("b:unaryTagsStack"))
" MM: TODO: GLOT works always the same but with some weird situation it " MM: TODO: GLOT works always the same but with some weird situation it
" behaves as intended in HTML but screws in PHP " 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. " Hack for sometimes failing GetLastOpenTag.
" As far as I tested fail isn't GLOT fault but problem " As far as I tested fail isn't GLOT fault but problem
" of invalid document - not properly closed tags and other mish-mash. " of invalid document - not properly closed tags and other mish-mash.
" Also when document is empty. Return list of *all* tags. " 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"') call filter(tags, 'v:val !~ "^vimxml"')
else else
if has_key(g:html_omni, opentag) if has_key(b:html_omni, opentag)
let tags = g:html_omni[opentag][0] let tags = b:html_omni[opentag][0]
else else
return [] return []
endif endif
@ -596,17 +596,20 @@ function! htmlcomplete#CompleteTags(findstart, base)
endif endif
endfor endfor
let menu = res + res2 let menu = res + res2
if has_key(g:html_omni, 'vimxmltaginfo') if has_key(b:html_omni, 'vimxmltaginfo')
let final_menu = [] let final_menu = []
for i in range(len(menu)) for i in range(len(menu))
let item = menu[i] let item = menu[i]
if has_key(g:html_omni['vimxmltaginfo'], item) if has_key(b:html_omni['vimxmltaginfo'], item)
let m_menu = g:html_omni['vimxmltaginfo'][item][0] let m_menu = b:html_omni['vimxmltaginfo'][item][0]
let m_info = g:html_omni['vimxmltaginfo'][item][1] let m_info = b:html_omni['vimxmltaginfo'][item][1]
else else
let m_menu = '' let m_menu = ''
let m_info = '' let m_info = ''
endif 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}] let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
endfor endfor
else else
@ -619,25 +622,39 @@ function! htmlcomplete#CompleteTags(findstart, base)
endfunction endfunction
function! htmlcomplete#LoadData() " {{{ function! htmlcomplete#LoadData() " {{{
if !exists("g:html_omni_flavor") if !exists("b:html_omni_flavor")
let g:html_omni_flavor = 'xhtml10s' if &ft == 'html'
let b:html_omni_flavor = 'html401t'
else
let b:html_omni_flavor = 'xhtml10s'
endif
endif endif
exe 'runtime! autoload/xml/'.g:html_omni_flavor.'.vim' " With that if we still have bloated memory but create new buffer
" This one is necessary because we don't know if " variables only by linking to existing g:variable, not sourcing whole
" g:html_omni_flavor file exists and was sourced " 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' " Proper checking for files would require iterating through 'rtp'
" and could introduce OS dependent mess. " and could introduce OS dependent mess.
if !exists("g:xmldata_".g:html_omni_flavor) if !exists("g:xmldata_".b:html_omni_flavor)
let g:html_omni_flavor = 'xhtml10s' if &ft == 'html'
runtime! autoload/xml/xhtml10s.vim let b:html_omni_flavor = 'html401t'
else
let b:html_omni_flavor = 'xhtml10s'
endif
endif
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 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()
endfunction endfunction
" }}} " }}}
" vim:set foldmethod=marker: " vim:set foldmethod=marker:

View File

@ -1,20 +1,16 @@
"pythoncomplete.vim - Omni Completion for python "pythoncomplete.vim - Omni Completion for python
" Maintainer: Aaron Griffin " Maintainer: Aaron Griffin <aaronmgriffin@gmail.com>
" Version: 0.3 " Version: 0.5
" Last Updated: 23 January 2006 " Last Updated: 19 April 2006
" "
" v0.3 Changes: " Yeah, I skipped a version number - 0.4 was never public.
" added top level def parsing " It was a bugfix version on top of 0.3. This is a complete
" for safety, call returns are not evaluated " rewrite.
" handful of parsing changes
" trailing ( and . characters
" argument completion on open parens
" stop parsing at current line - ++performance, local var resolution
" "
" TODO " TODO:
" RExec subclass " User defined docstrings aren't handled right...
" Code cleanup + make class " 'info' item output can use some formatting work
" use internal dict, not globals() " Add an "unsafe eval" mode, to allow for return type evaluation
if !has('python') if !has('python')
echo "Error: Required vim compiled with +python" echo "Error: Required vim compiled with +python"
@ -23,12 +19,12 @@ endif
function! pythoncomplete#Complete(findstart, base) function! pythoncomplete#Complete(findstart, base)
"findstart = 1 when we need to get the text length "findstart = 1 when we need to get the text length
if a:findstart if a:findstart == 1
let line = getline('.') let line = getline('.')
let idx = col('.') let idx = col('.')
while idx > 0 while idx > 0
let idx -= 1 let idx -= 1
let c = line[idx-1] let c = line[idx]
if c =~ '\w' if c =~ '\w'
continue continue
elseif ! c =~ '\.' elseif ! c =~ '\.'
@ -42,310 +38,530 @@ function! pythoncomplete#Complete(findstart, base)
return idx return idx
"findstart = 0 when we need to return the list of completions "findstart = 0 when we need to return the list of completions
else 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 return g:pythoncomplete_completions
endif endif
endfunction endfunction
function! s:DefPython() function! s:DefPython()
python << PYTHONEOF python << PYTHONEOF
import vim, sys, types import sys, tokenize, cStringIO, types
import __builtin__ from token import NAME, DEDENT, NEWLINE, STRING
import tokenize, keyword, cStringIO
LOCALDEFS = \ debugstmts=[]
['LOCALDEFS', 'clean_up','eval_source_code', \ def dbg(s): debugstmts.append(s)
'get_completions', '__builtin__', '__builtins__', \ def showdbg():
'dbg', '__name__', 'vim', 'sys', 'parse_to_end', \ for d in debugstmts: print "DBG: %s " % d
'parse_statement', 'tokenize', 'keyword', 'cStringIO', \
'debug_level', 'safe_eval', '_ctor', 'get_arguments', \
'strip_calls', 'types', 'parse_block']
def dbg(level,msg): def vimcomplete(context,match):
debug_level = 1 global debugstmts
debugstmts = []
try: try:
debug_level = vim.eval("g:pythoncomplete_debug_level") import vim
except: def complsort(x,y):
pass return x['abbr'] > y['abbr']
if level <= debug_level: print(msg) 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)
def strip_calls(stmt): class Completer(object):
parsed='' def __init__(self):
level = 0 self.compldict = {}
for c in stmt: self.parser = PyParser()
if c in ['[','(']:
level += 1
elif c in [')',']']:
level -= 1
elif level == 0:
parsed += c
##dbg(10,"stripped: %s" % parsed)
return parsed
def get_completions(base): def evalsource(self,text,line=0):
stmt = vim.eval('expand("<cWORD>")') sc = self.parser.parse(text,line)
#dbg(1,"statement: %s - %s" % (stmt, base)) src = sc.get_code()
stmt = stmt+base dbg("source: %s" % src)
eval_source_code() 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))
try: def _cleanstr(self,doc):
ridx = stmt.rfind('.') return doc.replace('"',' ')\
if stmt[-1] == '(': .replace("'",' ')\
match = "" .replace('\n',' ')\
stmt = strip_calls(stmt[:len(stmt)-1]) .replace('\r',' ')\
all = get_arguments(eval(stmt)) .replace(' ',' ')
elif ridx == -1:
match = stmt
all = globals() + __builtin__.__dict__
else:
match = stmt[ridx+1:]
stmt = strip_calls(stmt[:ridx])
all = eval(stmt).__dict__
#dbg(15,"completions for: %s, match=%s" % (stmt,match)) def get_arguments(self,func_obj):
completions = [] def _ctor(obj):
if type(all) == types.DictType: try: return class_ob.__init__.im_func
for m in all: except AttributeError:
if m.find('_') != 0 and m.find(match) == 0 and \ for base in class_ob.__bases__:
m not in LOCALDEFS: rc = _find_constructor(base)
#dbg(25,"matched... %s, %s" % (m, m.find(match))) if rc is not None: return rc
typestr = str(all[m]) return None
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()
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()
def get_arguments(func_obj): arg_offset = 1
def _ctor(obj): if type(func_obj) == types.ClassType: func_obj = _ctor(func_obj)
try: elif type(func_obj) == types.MethodType: func_obj = func_obj.im_func
return class_ob.__init__.im_func else: arg_offset = 0
except AttributeError:
for base in class_ob.__bases__: arg_text = ')'
rc = _find_constructor(base) if type(func_obj) in [types.FunctionType, types.LambdaType]:
if rc is not None: return rc
return None
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))
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 = 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) + ')'
except:
#dbg(1,"exception: %s" % 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 = 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
def parse_to_end(gen):
stmt=''
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 ['[','(']:
level += 1
elif str 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: try:
#dbg(15,"evaluating: %s\n" % s) cd = func_obj.func_code
exec(s) in globals() 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: except:
#dbg(1,"exception: %s" % sys.exc_info()[1]) dbg("completion: %s: %s" % (sys.exc_info()[0],sys.exc_info()[1]))
pass pass
except: if len(arg_text) == 0:
#dbg(1,"exception: %s" % sys.exc_info()[1]) # The doc string sometimes contains the function signature
pass # 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 clean_up(): def get_completions(self,context,match):
for o in globals().keys(): dbg("get_completions('%s','%s')" % (context,match))
if o not in LOCALDEFS: stmt = ''
try: if context: stmt += str(context)
exec('del %s' % o) in globals() if match: stmt += str(match)
except: pass 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)
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
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
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:
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 _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)
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
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:
freshscope=True
while True:
tokentype, token, indent = self.next()
#print 'main: token=[%s] indent=[%s]' % (token,indent)
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
except:
dbg("parse error: %s, %s @ %s" %
(sys.exc_info()[0], sys.exc_info()[1], self.parserline))
return self._adjustvisibility()
def _sanitize(str):
val = ''
level = 0
for c in str:
if c in ('(','{','['):
level += 1
elif c in (']','}',')'):
level -= 1
elif level == 0:
val += c
return val
sys.path.extend(['.','..']) sys.path.extend(['.','..'])
PYTHONEOF PYTHONEOF
endfunction endfunction
let g:pythoncomplete_debug_level = 0
call s:DefPython() call s:DefPython()
" vim: set et ts=4: " vim: set et ts=4:

View File

@ -1,6 +1,6 @@
" Vim completion script " Vim completion script
" Language: Ruby " Language: Ruby
" Maintainer: Mark Guzman ( segfault AT hasno DOT info ) " Maintainer: Mark Guzman <segfault@hasno.info>
" Info: $Id$ " Info: $Id$
" URL: http://vim-ruby.rubyforge.org " URL: http://vim-ruby.rubyforge.org
" Anon CVS: See above site " Anon CVS: See above site
@ -11,16 +11,64 @@
" ---------------------------------------------------------------------------- " ----------------------------------------------------------------------------
if !has('ruby') if !has('ruby')
echohl ErrorMsg
echo "Error: Required vim compiled with +ruby" echo "Error: Required vim compiled with +ruby"
echohl None
finish finish
endif endif
if version < 700 if version < 700
echohl ErrorMsg
echo "Error: Required vim >= 7.0" echo "Error: Required vim >= 7.0"
echohl None
finish finish
endif 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 stopline = 1
let vtp = '' let vtp = ''
let pos = getpos('.') let pos = getpos('.')
@ -32,9 +80,9 @@ func! GetRubyVarType(v)
return vtp return vtp
endif endif
call setpos('.',pos) 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 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*','','') let str = substitute(str,'^=\s*','','')
call setpos('.',pos) call setpos('.',pos)
if str == '"' || str == '''' if str == '"' || str == ''''
@ -43,6 +91,8 @@ func! GetRubyVarType(v)
return 'Array' return 'Array'
elseif str == '{' elseif str == '{'
return 'Hash' return 'Hash'
elseif str == '/' || str == '%r{'
return 'Regexp'
elseif strlen(str) > 4 elseif strlen(str) > 4
let l = stridx(str,'.') let l = stridx(str,'.')
return str[0:l-1] return str[0:l-1]
@ -51,7 +101,7 @@ func! GetRubyVarType(v)
endif endif
call setpos('.',pos) call setpos('.',pos)
return '' return ''
endf endfunction
function! rubycomplete#Complete(findstart, base) function! rubycomplete#Complete(findstart, base)
"findstart = 1 when we need to get the text length "findstart = 1 when we need to get the text length
@ -74,14 +124,20 @@ function! rubycomplete#Complete(findstart, base)
return idx return idx
"findstart = 0 when we need to return the list of completions "findstart = 0 when we need to return the list of completions
else else
let g:rubycomplete_completions = []
execute "ruby get_completions('" . a:base . "')" execute "ruby get_completions('" . a:base . "')"
return g:rbcomplete_completions return g:rubycomplete_completions
endif endif
endfunction endfunction
function! s:DefRuby() function! s:DefRuby()
ruby << RUBYEOF ruby << RUBYEOF
RailsWords = [
"has_many", "has_one",
"belongs_to",
]
ReservedWords = [ ReservedWords = [
"BEGIN", "END", "BEGIN", "END",
"alias", "and", "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 )
end
end
def load_requires def load_requires
@buf = VIM::Buffer.current @buf = VIM::Buffer.current
enum = @buf.line_number enum = @buf.line_number
nums = Range.new( 1, enum ) nums = Range.new( 1, enum )
nums.each do |x| nums.each do |x|
ln = @buf[x] ln = @buf[x]
begin begin
eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln ) eval( "require %s" % $1 ) if /.*require\s*(.*)$/.match( ln )
rescue Exception rescue Exception
#ignore? #ignore?
end
end 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 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 end
def get_completions(base) def get_completions(base)
load_requires load_requires
input = VIM::evaluate('expand("<cWORD>")') load_rails
input += base
message = nil input = VIM::evaluate('expand("<cWORD>")')
input += base
input.lstrip!
if input.length == 0
input = VIM::Buffer.current.line
input.strip!
end
message = nil
case input case input
when /^(\/[^\/]*\/)\.([^.]*)$/ when /^(\/[^\/]*\/)\.([^.]*)$/
# Regexp # Regexp
receiver = $1 receiver = $1
message = Regexp.quote($2) message = Regexp.quote($2)
candidates = Regexp.instance_methods(true) candidates = Regexp.instance_methods(true)
select_message(receiver, message, candidates) select_message(receiver, message, candidates)
when /^([^\]]*\])\.([^.]*)$/ when /^([^\]]*\])\.([^.]*)$/
# Array # Array
receiver = $1 receiver = $1
message = Regexp.quote($2) message = Regexp.quote($2)
candidates = Array.instance_methods(true) candidates = Array.instance_methods(true)
select_message(receiver, message, candidates) select_message(receiver, message, candidates)
when /^([^\}]*\})\.([^.]*)$/ when /^([^\}]*\})\.([^.]*)$/
# Proc or Hash # Proc or Hash
receiver = $1 receiver = $1
message = Regexp.quote($2) message = Regexp.quote($2)
candidates = Proc.instance_methods(true) | Hash.instance_methods(true) candidates = Proc.instance_methods(true) | Hash.instance_methods(true)
select_message(receiver, message, candidates) select_message(receiver, message, candidates)
when /^(:[^:.]*)$/ when /^(:[^:.]*)$/
# Symbol # Symbol
if Symbol.respond_to?(:all_symbols) if Symbol.respond_to?(:all_symbols)
sym = $1 sym = $1
candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name} candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}
candidates.grep(/^#{sym}/) candidates.grep(/^#{sym}/)
else candidates.delete_if do |c|
[] c.match( /'/ )
end end
candidates.uniq!
candidates.sort!
else
[]
end
when /^::([A-Z][^:\.\(]*)$/ when /^::([A-Z][^:\.\(]*)$/
# Absolute Constant or class methods # Absolute Constant or class methods
receiver = $1 receiver = $1
candidates = Object.constants candidates = Object.constants
candidates.grep(/^#{receiver}/).collect{|e| "::" + e} candidates.grep(/^#{receiver}/).collect{|e| "::" + e}
when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/
# Constant or class methods # Constant or class methods
receiver = $1 receiver = $1
message = Regexp.quote($4) message = Regexp.quote($4)
begin begin
candidates = eval("#{receiver}.constants | #{receiver}.methods") candidates = eval("#{receiver}.constants | #{receiver}.methods")
rescue Exception rescue Exception
candidates = [] candidates = []
end end
candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e} candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e}
when /^(:[^:.]+)\.([^.]*)$/ when /^(:[^:.]+)\.([^.]*)$/
# Symbol # Symbol
receiver = $1 receiver = $1
message = Regexp.quote($2) message = Regexp.quote($2)
candidates = Symbol.instance_methods(true) candidates = Symbol.instance_methods(true)
select_message(receiver, message, candidates) select_message(receiver, message, candidates)
when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/ when /^([0-9_]+(\.[0-9_]+)?(e[0-9]+)?)\.([^.]*)$/
# Numeric # Numeric
receiver = $1 receiver = $1
message = Regexp.quote($4) message = Regexp.quote($4)
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 /^(\$?(\.?[^.]+)+)\.([^.]*)$/
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 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 /^(\$?(\.?[^.]+)+)\.([^.]*)$/
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") candidates = eval("#{vartype}.instance_methods")
elsif (cv).include?(receiver) rescue Exception
# 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 = [] 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 end
#identify_type( receiver ) elsif (cv).include?(receiver)
select_message(receiver, message, candidates) # 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)
#when /^((\.?[^.]+)+)\.([^.]*)\(\s*\)*$/ #when /^((\.?[^.]+)+)\.([^.]*)\(\s*\)*$/
#function call #function call
#obj = $1 #obj = $1
#func = $3 #func = $3
when /^\.([^.]*)$/ when /^\.([^.]*)$/
# unknown(maybe String) # unknown(maybe String)
receiver = "" receiver = ""
message = Regexp.quote($1) message = Regexp.quote($1)
candidates = String.instance_methods(true) candidates = String.instance_methods(true)
select_message(receiver, message, candidates)
else
inclass = eval( VIM::evaluate("IsInClassDef()") )
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) select_message(receiver, message, candidates)
end
else end
if inclass == nil || found == nil
candidates = eval("self.class.constants") candidates = eval("self.class.constants")
(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/) (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)
end end
end
#print candidates #print candidates
if message != nil && message.length > 0 if message != nil && message.length > 0
rexp = '^%s' % message.downcase rexp = '^%s' % message.downcase
candidates.delete_if do |c| candidates.delete_if do |c|
c.downcase.match( rexp ) c.downcase.match( rexp )
$~ == nil $~ == nil
end
end end
end
outp = "" outp = ""
# tags = VIM::evaluate("taglist('^%s$')" %
(candidates-Object.instance_methods).each { |c| outp += "{'word':'%s','item':'%s'}," % [ c, c ] } # 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!(/,$/, '') outp.sub!(/,$/, '')
VIM::command("let g:rbcomplete_completions = [%s]" % outp)
VIM::command("call extend(g:rubycomplete_completions, [%s])" % outp)
outp = ""
end
end end
def select_message(receiver, message, candidates) def select_message(receiver, message, candidates)
#tags = VIM::evaluate("taglist('%s')" % receiver)
#print tags
candidates.grep(/^#{message}/).collect do |e| candidates.grep(/^#{message}/).collect do |e|
case e case e
when /^[a-zA-Z_]/ when /^[a-zA-Z_]/
@ -304,5 +462,7 @@ end
RUBYEOF RUBYEOF
endfunction endfunction
let g:rubycomplete_rails = 0
call s:DefRuby() call s:DefRuby()
" vim: set et ts=4: " vim: set et ts=4:

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -1026,7 +1026,8 @@ The "menu" item is used in the popup menu and may be truncated, thus it should
be relatively short. The "info" item can be longer, it will be displayed in 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 the preview window when "preview" appears in 'completeopt'. The "info" item
will also remain displayed after the popup menu has been removed. This is 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 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). may be used to show the completion differently (different color or icon).
@ -1266,22 +1267,32 @@ run |:make| command to detect formatting problems.
HTML flavor *html-flavor* HTML flavor *html-flavor*
By default HTML completion provides completion for XHTML 1.0 Strict. This is Default HTML completion depends on filetype. For HTML files it is HTML
not the only HTML version. To use another data file and still have benefits of 4.01 Transitional (&ft=='html'), for XHTML it is XHTML 1.0 Strict
custom completion for class, style, etc. attributes set g:html_omni_flavor (&ft=='xhtml').
variable. Example (in .vimrc or filetype plugin file): >
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): >
Data for HTML completion will be read from 'autoload/xml/xhtml10t.vim' file let g:html_omni_flavor = 'xhtml10s'
located somewhere in 'runtimepath' (not in default distribution).
More about format of data file in |xml-omni-datafile|. Some of data files may (Completion data file for HTML 4.01 Strict is also provided by Vim
in future be found on vim-online site (|www|). distribution.)
Note that g:html_omni_flavor may point to file with any XML data. This makes Data for HTML completion will be read from 'autoload/xml/html10s.vim' file
possible to mix PHP (|ft-php-omni|) completion with whatever XML dialect located somewhere in 'runtimepath'.
(assuming you have data file for it).
Note: HTML completion files are also located in 'autoload/xml'
directory.
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* JAVASCRIPT *ft-javascript-omni*
@ -1359,6 +1370,39 @@ automatically switch to HTML/CSS/JavaScript completion. Note: contrary to
original HTML files completion of tags (and only tags) isn't context aware. 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* SYNTAX *ft-syntax-omni*
This uses the current syntax highlighting for completion. It can be used for This uses the current syntax highlighting for completion. It can be used for

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -75,7 +75,7 @@ Published by O'Reilly. ISBN: 1-56592-426-6.
============================================================================== ==============================================================================
2. Vim on the internet *internet* 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 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 contain links to the most recent version of Vim. The FAQ is a list of
Frequently Asked Questions. Read this if you have problems. Frequently Asked Questions. Read this if you have problems.

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -882,10 +882,11 @@ See |:verbose-cmd| for more information.
avoid that a typed {lhs} is expanded, since avoid that a typed {lhs} is expanded, since
command-line abbreviations apply here. command-line abbreviations apply here.
:ab[breviate] {lhs} {rhs} :ab[breviate] [<expr>] {lhs} {rhs}
add abbreviation for {lhs} to {rhs}. If {lhs} already add abbreviation for {lhs} to {rhs}. If {lhs} already
existed it is replaced with the new {rhs}. {rhs} may existed it is replaced with the new {rhs}. {rhs} may
contain spaces. contain spaces.
See |:map-<expr>| for the optional <expr> argument.
*:una* *:unabbreviate* *:una* *:unabbreviate*
:una[bbreviate] {lhs} Remove abbreviation for {lhs} from the list. If none :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). expansion insert a CTRL-V (type it twice).
*:norea* *:noreabbrev* *:norea* *:noreabbrev*
:norea[bbrev] [lhs] [rhs] :norea[bbrev] [<expr>] [lhs] [rhs]
same as ":ab", but no remapping for this {rhs} {not same as ":ab", but no remapping for this {rhs} {not
in Vi} in Vi}
*:ca* *:cabbrev* *:ca* *:cabbrev*
:ca[bbrev] [lhs] [rhs] same as ":ab", but for Command-line mode only. {not :ca[bbrev] [<expr>] [lhs] [rhs]
same as ":ab", but for Command-line mode only. {not
in Vi} in Vi}
*:cuna* *:cunabbrev* *:cuna* *:cunabbrev*
@ -908,19 +910,20 @@ See |:verbose-cmd| for more information.
in Vi} in Vi}
*:cnorea* *:cnoreabbrev* *:cnorea* *:cnoreabbrev*
:cnorea[bbrev] [lhs] [rhs] :cnorea[bbrev] [<expr>] [lhs] [rhs]
same as ":ab", but for Command-line mode only and no same as ":ab", but for Command-line mode only and no
remapping for this {rhs} {not in Vi} remapping for this {rhs} {not in Vi}
*:ia* *:iabbrev* *:ia* *:iabbrev*
:ia[bbrev] [lhs] [rhs] same as ":ab", but for Insert mode only. {not in Vi} :ia[bbrev] [<expr>] [lhs] [rhs]
same as ":ab", but for Insert mode only. {not in Vi}
*:iuna* *:iunabbrev* *:iuna* *:iunabbrev*
:iuna[bbrev] {lhs} same as ":una", but for insert mode only. {not in :iuna[bbrev] {lhs} same as ":una", but for insert mode only. {not in
Vi} Vi}
*:inorea* *:inoreabbrev* *:inorea* *:inoreabbrev*
:inorea[bbrev] [lhs] [rhs] :inorea[bbrev] [<expr>] [lhs] [rhs]
same as ":ab", but for Insert mode only and no same as ":ab", but for Insert mode only and no
remapping for this {rhs} {not in Vi} remapping for this {rhs} {not in Vi}

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -6684,6 +6684,7 @@ A jump table for the options with a short description can be found at |Q_op|.
this. 'textwidth' is set to 0 when the 'paste' option is set. When this. 'textwidth' is set to 0 when the 'paste' option is set. When
'textwidth' is zero, 'wrapmargin' may be used. See also 'textwidth' is zero, 'wrapmargin' may be used. See also
'formatoptions' and |ins-textwidth|. '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. NOTE: This option is set to 0 when 'compatible' is set.
*'thesaurus'* *'tsr'* *'thesaurus'* *'tsr'*

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -161,6 +161,10 @@ z= For the word under/after the cursor suggest correctly
mode and when there are no line wraps). Click on the mode and when there are no line wraps). Click on the
first line (the header) to cancel. 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 If a count is used that suggestion is used, without
prompting. For example, "1z=" always takes the first prompting. For example, "1z=" always takes the first
suggestion. suggestion.

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -1606,12 +1606,22 @@ instead, and the name of your source file should be *.pike
LUA *lua.vim* *ft-lua-syntax* LUA *lua.vim* *ft-lua-syntax*
This syntax file may be used for Lua 4.0 and Lua 5.0 (default). If you are This syntax file may be used for Lua 4.0, Lua 5.0 or Lua 5.1 (the latter is
programming in Lua 4.0, use this: > 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 :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* MAIL *mail.vim* *ft-mail.vim*
@ -2765,7 +2775,7 @@ DEFINING KEYWORDS *:syn-keyword*
:syntax keyword Type contained int long char :syntax keyword Type contained int long char
:syntax keyword Type int long contained char :syntax keyword Type int long contained char
:syntax keyword Type int long char contained :syntax keyword Type int long char contained
< *E747* < *E789*
When you have a keyword with an optional tail, like Ex commands in 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 Vim, you can put the optional characters inside [], to define all the
variations at once: > variations at once: >

View File

@ -3959,7 +3959,6 @@ E744 netbeans.txt /*E744*
E745 eval.txt /*E745* E745 eval.txt /*E745*
E746 eval.txt /*E746* E746 eval.txt /*E746*
E747 editing.txt /*E747* E747 editing.txt /*E747*
E747 syntax.txt /*E747*
E748 repeat.txt /*E748* E748 repeat.txt /*E748*
E749 eval.txt /*E749* E749 eval.txt /*E749*
E75 vi_diff.txt /*E75* E75 vi_diff.txt /*E75*
@ -4005,6 +4004,7 @@ E785 eval.txt /*E785*
E786 eval.txt /*E786* E786 eval.txt /*E786*
E787 diff.txt /*E787* E787 diff.txt /*E787*
E788 autocmd.txt /*E788* E788 autocmd.txt /*E788*
E789 syntax.txt /*E789*
E79 message.txt /*E79* E79 message.txt /*E79*
E80 message.txt /*E80* E80 message.txt /*E80*
E800 arabic.txt /*E800* E800 arabic.txt /*E800*
@ -4264,6 +4264,7 @@ W16 message.txt /*W16*
W17 arabic.txt /*W17* W17 arabic.txt /*W17*
W18 syntax.txt /*W18* W18 syntax.txt /*W18*
WORD motion.txt /*WORD* WORD motion.txt /*WORD*
WWW intro.txt /*WWW*
Win32 os_win32.txt /*Win32* Win32 os_win32.txt /*Win32*
WinEnter autocmd.txt /*WinEnter* WinEnter autocmd.txt /*WinEnter*
WinLeave autocmd.txt /*WinLeave* WinLeave autocmd.txt /*WinLeave*
@ -5314,6 +5315,7 @@ ft-python-syntax syntax.txt /*ft-python-syntax*
ft-quake-syntax syntax.txt /*ft-quake-syntax* ft-quake-syntax syntax.txt /*ft-quake-syntax*
ft-readline-syntax syntax.txt /*ft-readline-syntax* ft-readline-syntax syntax.txt /*ft-readline-syntax*
ft-rexx-syntax syntax.txt /*ft-rexx-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-ruby-syntax syntax.txt /*ft-ruby-syntax*
ft-scheme-syntax syntax.txt /*ft-scheme-syntax* ft-scheme-syntax syntax.txt /*ft-scheme-syntax*
ft-sdl-syntax syntax.txt /*ft-sdl-syntax* ft-sdl-syntax syntax.txt /*ft-sdl-syntax*

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -30,14 +30,13 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs* *known-bugs*
-------------------- Known bugs and current work ----------------------- -------------------- 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 Crash in "z=" when the change triggers checking out the file, FileChangedRO
event. Problem in move_lines()? FileChangedShell also involved? (Neil Bird) event. Problem in move_lines()? FileChangedShell also involved? (Neil Bird)
Added a few checks for valid buffer, did that help? Added a few checks for valid buffer, did that help?
Check findoption() return value. Fix coverity false positives?
Other coverity false positives?
Add more tests for all new functionality in Vim 7. Especially new functions. Add more tests for all new functionality in Vim 7. Especially new functions.
@ -1086,6 +1085,7 @@ User Friendlier:
Tab pages: Tab pages:
9 GUI implementation for the tab pages line for other systems. 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 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 forward
8 :tabmove -N move tab page N pages backward 8 :tabmove -N move tab page N pages backward
7 :tabdup duplicate the tab with all its windows. 7 :tabdup duplicate the tab with all its windows.
@ -2009,7 +2009,8 @@ Autocommands:
Error - When an error happens Error - When an error happens
NormalEnter - Entering Normal mode NormalEnter - Entering Normal mode
ReplaceEnter - Entering Replace 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 VisualEnter - Entering Visual mode
*Leave - Leaving a mode (in pair with the above *Enter) *Leave - Leaving a mode (in pair with the above *Enter)
VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled

View File

@ -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 VIM REFERENCE MANUAL by Bram Moolenaar
@ -243,6 +243,7 @@ Currently supported languages:
(X)HTML with CSS |ft-html-omni| (X)HTML with CSS |ft-html-omni|
JavaScript |ft-javascript-omni| JavaScript |ft-javascript-omni|
Python Python
Ruby |ft-ruby-omni|
XML |ft-xml-omni| XML |ft-xml-omni|
any language wih syntax highligting |ft-syntax-omni| any language wih syntax highligting |ft-syntax-omni|
@ -2559,4 +2560,14 @@ The taglist() function could hang on a tags line with a non-ASCII character.
Win32: When 'encoding' differs from the system encoding tab page labels with Win32: When 'encoding' differs from the system encoding tab page labels with
non-ASCII characters looked wrong. (Yegappan Lakshmanan) 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: vim:tw=78:ts=8:ft=help:norl:

View File

@ -31,7 +31,7 @@
! REP l·l l ! REP l·l l
*** ca_ES.orig.dic Sat Aug 13 18:33:44 2005 *** 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 **** *** 1,2 ****
! 149661 ! 149661

View File

@ -24,7 +24,7 @@
+ +
SFX J Y 12 SFX J Y 12
*** es_ES.orig.dic Thu Aug 25 19:19:44 2005 *** 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 **** *** 485,487 ****
acercóse acercóse
@ -74,8 +74,14 @@
inadecuación/S inadecuación/S
--- 25126,25127 ---- --- 25126,25127 ----
*************** ***************
*** 28007,28009 **** *** 28008,28010 ****
librancista/S
- líbranos
líbranos líbranos
--- 27999,28000 ---- - líbranos
libranza/S
--- 28000,28001 ----
***************
*** 48480,48481 ****
--- 48471,48473 ----
xilotila/S
+ y
ya

View File

@ -1,9 +1,12 @@
" Vim syntax file " Vim syntax file
" Language: BIND 8.x zone files (RFC1035) " Language: BIND zone files (RFC1035)
" Maintainer: glory hump <rnd@web-drive.ru> " Maintainer: Julian Mehnle <julian@mehnle.net>
" Last change: Thu Apr 26 02:16:18 SAMST 2001 " URL: http://www.mehnle.net/source/odds+ends/vim/syntax/
" Filenames: /var/named/* " Last Change: Thu 2006-04-20 12:30:45 UTC
" URL: http://rnd.web-drive.ru/vim/syntax/bindzone.vim "
" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with
" heavy modifications.
"
" $Id$ " $Id$
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
@ -16,54 +19,55 @@ endif
syn case match syn case match
if version >= 600 " Directives
setlocal iskeyword=.,-,48-58,A-Z,a-z,_ syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
else
set iskeyword=.,-,48-58,A-Z,a-z,_
endif
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 match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite
syn region zoneRRecord start=+^+ end=+$+ contains=zoneLHSDomain,zoneLHSIP,zoneIllegalDom,zoneWhitespace,zoneComment,zoneParen,zoneSpecial syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
syn match zoneDirective /\$ORIGIN\s\+/ nextgroup=zoneDomain,zoneIllegalDom syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
syn match zoneDirective /\$TTL\s\+/ nextgroup=zoneTTL
syn match zoneDirective /\$INCLUDE\s\+/
syn match zoneDirective /\$GENERATE\s/
syn match zoneWhitespace contained /^\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType syn match zoneSpecial contained /^[@*.]\s/
syn match zoneError "\s\+$" syn match zoneTTL contained /\<\d[0-9HhWwDd]*\>/ nextgroup=zoneClass,zoneRRType skipwhite
syn match zoneSpecial contained /^[@.]\s\+/ nextgroup=zoneTTL,zoneClass,zoneRRType syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
syn match zoneSpecial contained /@$/ 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
" domains and IPs syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
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*\>/ " Plain IPv6 address IPv6-embedded-IPv4 address
"syn match zoneIllegalDom contained /[0-9]\S*[-A-Za-z]\S*/ " 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\|;\|$\)\@=/
" keywords syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
syn keyword zoneClass IN CHAOS nextgroup=zoneRRType syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/
syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
syn match zoneTTL contained /\<[0-9HhWwDd]\+\s\+/ nextgroup=zoneClass,zoneRRType syn match zoneErrParen /)/
syn match zoneRRType contained /\s*\<\(NS\|HINFO\)\s\+/ nextgroup=zoneSpecial,zoneDomain syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneNumber,zoneComment
syn match zoneRRType contained /\s*\<CNAME\s\+/ nextgroup=zoneDomain,zoneSpecial syn match zoneComment /;.*/
syn match zoneRRType contained /\s*\<SOA\s\+/ nextgroup=zoneDomain,zoneIllegalDom
syn match zoneRRType contained /\s*\<PTR\s\+/ nextgroup=zoneDomain,zoneIllegalDom
syn match zoneRRType contained /\s*\<MX\s\+/ nextgroup=zoneMailPrio
syn match zoneRRType contained /\s*\<A\s\+/ nextgroup=zoneIPaddr,zoneIllegalDom
" FIXME: catchup serial number
syn match zoneSerial contained /\<[0-9]\{9}\>/
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 ";.*"
" Define the default highlighting. " Define the default highlighting.
" For version 5.7 and earlier: only when not done already " For version 5.7 and earlier: only when not done already
@ -76,23 +80,31 @@ if version >= 508 || !exists("did_bind_zone_syn_inits")
command -nargs=+ HiLink hi def link <args> command -nargs=+ HiLink hi def link <args>
endif endif
HiLink zoneComment Comment HiLink zoneDirective Macro
HiLink zoneDirective Macro
HiLink zoneLHSDomain Statement HiLink zoneUnknown Error
HiLink zoneLHSIP Statement
HiLink zoneClass Include HiLink zoneOrigin Statement
HiLink zoneSpecial Special HiLink zoneOwnerName Statement
HiLink zoneRRType Type HiLink zoneDomain Identifier
HiLink zoneError Error
HiLink zoneErrParen Error HiLink zoneSpecial Special
HiLink zoneIllegalDom Error HiLink zoneTTL Constant
HiLink zoneSerial Todo HiLink zoneClass Include
HiLink zoneIPaddr Number HiLink zoneRRType Type
HiLink zoneDomain Identifier
HiLink zoneIPAddr Number
HiLink zoneIP6Addr Number
HiLink zoneText String
HiLink zoneNumber Number
HiLink zoneSerial Special
HiLink zoneErrParen Error
HiLink zoneComment Comment
delcommand HiLink delcommand HiLink
endif endif
let b:current_syntax = "bindzone" let b:current_syntax = "bindzone"
" vim: ts=17 " vim:sts=2 sw=2

View File

@ -1,10 +1,12 @@
" Vim syntax file " Vim syntax file
" Language: crontab " Language: crontab
" Maintainer: John Hoelzel johnh51@users.sourceforge.net " Maintainer: David Necas (Yeti) <yeti@physics.muni.cz>
" Maintainer: David Necas (Yeti) <yeti@physics.muni.cz> " Original Maintainer: John Hoelzel johnh51@users.sourceforge.net
" Last Change: 2005-04-26 " License: This file can be redistribued and/or modified under the same terms
" Filenames: /tmp/crontab.* used by "crontab -e" " as Vim itself.
" URL: http://trific.ath.cx/Ftp/vim/syntax/crontab.vim " 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: " crontab line format:
" Minutes Hours Days Months Days_of_Week Commands # comments " Minutes Hours Days Months Days_of_Week Commands # comments
@ -17,24 +19,23 @@ elseif exists("b:current_syntax")
finish finish
endif endif
syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite syntax match crontabMin "^\s*[-0-9/,.*]\+" nextgroup=crontabHr skipwhite
syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained syntax match crontabHr "\s[-0-9/,.*]\+" nextgroup=crontabDay skipwhite contained
syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained syntax match crontabDay "\s[-0-9/,.*]\+" nextgroup=crontabMnth skipwhite contained
syntax match crontabMnth "\s[-a-z0-9/,.*]\+" nextgroup=crontabDow 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 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 match crontabDow "\s[-a-z0-9/,.*]\+" nextgroup=crontabCmd skipwhite contained
syntax keyword crontabDow7 contained sun mon tue wed thu fri sat 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 region crontabCmd start="\S" end="$" skipwhite contained keepend contains=crontabPercent
syntax match crontabCmnt "^\s*#.*"
syntax match crontabPercent "[^\\]%.*"lc=1 contained
syntax region crontabCmd start="\S" end="$" nextgroup=crontabCmnt skipwhite contained keepend syntax match crontabNick "^\s*@\(reboot\|yearly\|annually\|monthly\|weekly\|daily\|midnight\|hourly\)\>" nextgroup=crontabCmd skipwhite
syntax match crontabCmnt "^\s*#.*"
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. " Define the default highlighting.
" For version 5.7 and earlier: only when not done already " For version 5.7 and earlier: only when not done already
@ -63,9 +64,10 @@ if version >= 508 || !exists("did_crontab_syn_inits")
HiLink crontabNick Special HiLink crontabNick Special
HiLink crontabVar Identifier HiLink crontabVar Identifier
HiLink crontabPercent Special
" comment out next line for to suppress unix commands coloring. " comment out next line for to suppress unix commands coloring.
HiLink crontabCmd Type HiLink crontabCmd Statement
HiLink crontabCmnt Comment HiLink crontabCmnt Comment

View File

@ -1,8 +1,8 @@
" Vim syntax file " Vim syntax file
" Language: Inform " Language: Inform
" Maintainer: Stephen Thomas (informvim@stephenthomas.uklinux.net) " Maintainer: Stephen Thomas (stephen@gowarthomas.com)
" URL: http://www.stephenthomas.uklinux.net/informvim " URL: http://www.gowarthomas.com/informvim
" Last Change: 2004 May 16 " Last Change: 2006 April 20
" Quit when a syntax file was already loaded " Quit when a syntax file was already loaded
if version < 600 if version < 600

View File

@ -1,297 +1,299 @@
" Vim syntax file " Vim syntax file
" Language: Lua 4.0, Lua 5.0 and Lua 5.1 " Language: Lua 4.0, Lua 5.0 and Lua 5.1
" Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol.com.br> " Maintainer: Marcus Aurelius Farias <marcus.cf 'at' bol com br>
" First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br> " First Author: Carlos Augusto Teixeira Mendes <cmendes 'at' inf puc-rio br>
" Last Change: 2006 Apr. 19 " Last Change: 2006 Apr 21
" Options: lua_version = 4 or 5 " Options: lua_version = 4 or 5
" lua_subversion = 0 (4.0, 5.0) or 1 (5.1) " lua_subversion = 0 (4.0, 5.0) or 1 (5.1)
" default 5.1 " default 5.1
" For version 5.x: Clear all syntax items " For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded " For version 6.x: Quit when a syntax file was already loaded
if version < 600 if version < 600
syntax clear syntax clear
elseif exists("b:current_syntax") elseif exists("b:current_syntax")
finish finish
endif endif
if !exists("lua_version") if !exists("lua_version")
" Default is lua 5.1 " Default is lua 5.1
let lua_version = 5 let lua_version = 5
let lua_subversion = 1 let lua_subversion = 1
elseif !exists("lua_subversion") elseif !exists("lua_subversion")
" lua_version exists, but lua_subversion doesn't. So, set it to 0 " lua_version exists, but lua_subversion doesn't. So, set it to 0
let lua_subversion = 0 let lua_subversion = 0
endif endif
syn case match syn case match
" syncing method " syncing method
syn sync minlines=100 syn sync minlines=100
" Comments " Comments
syn keyword luaTodo contained TODO FIXME XXX syn keyword luaTodo contained TODO FIXME XXX
syn match luaComment "--.*$" contains=luaTodo syn match luaComment "--.*$" contains=luaTodo
if lua_version == 5 && lua_subversion == 0 if lua_version == 5 && lua_subversion == 0
syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment syn region luaComment matchgroup=luaComment start="--\[\[" end="\]\]" contains=luaTodo,luaInnerComment
syn region luaInnerComment contained transparent start="\[\[" end="\]\]" syn region luaInnerComment contained transparent start="\[\[" end="\]\]"
elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1) elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
" Comments in Lua 5.1: [[ ... ]], [=[ ... ]=], [===[ ... ]===], etc. " Comments in Lua 5.1: --[[ ... ]], [=[ ... ]=], [===[ ... ]===], etc.
syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]" syn region luaComment matchgroup=luaComment start="--\[\z(=*\)\[" end="\]\z1\]"
endif endif
" First line may start with #! " First line may start with #!
syn match luaComment "\%^#!.*" syn match luaComment "\%^#!.*"
" catch errors caused by wrong parenthesis and wrong curly brackets or " catch errors caused by wrong parenthesis and wrong curly brackets or
" keywords placed outside their respective blocks " 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 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 "}" syn match luaError "}"
syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>" syn match luaError "\<\%(end\|else\|elseif\|then\|until\|in\)\>"
" Function declaration " Function declaration
syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat syn region luaFunctionBlock transparent matchgroup=luaFunction start="\<function\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
" if then else elseif end " if then else elseif end
syn keyword luaCond contained else syn keyword luaCond contained else
" then ... end " then ... end
syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat syn region luaCondEnd contained transparent matchgroup=luaCond start="\<then\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaRepeat
" elseif ... then " elseif ... then
syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat syn region luaCondElseif contained transparent matchgroup=luaCond start="\<elseif\>" end="\<then\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
" if ... then " if ... then
syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty syn region luaCondStart transparent matchgroup=luaCond start="\<if\>" end="\<then\>"me=e-4 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaCondEnd skipwhite skipempty
" do ... end " do ... end
syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat syn region luaBlock transparent matchgroup=luaStatement start="\<do\>" end="\<end\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
" repeat ... until " repeat ... until
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<repeat\>" end="\<until\>" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat
" while ... do " while ... do
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<while\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaRepeat nextgroup=luaBlock skipwhite skipempty
" for ... do and for ... in ... do " for ... do and for ... in ... do
syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty syn region luaRepeatBlock transparent matchgroup=luaRepeat start="\<for\>" end="\<do\>"me=e-2 contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd nextgroup=luaBlock skipwhite skipempty
" Following 'else' example. This is another item to those " Following 'else' example. This is another item to those
" contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it. " contains=ALLBUT,... because only the 'for' luaRepeatBlock contains it.
syn keyword luaRepeat contained in syn keyword luaRepeat contained in
" other keywords " other keywords
syn keyword luaStatement return local break syn keyword luaStatement return local break
syn keyword luaOperator and or not syn keyword luaOperator and or not
syn keyword luaConstant nil syn keyword luaConstant nil
if lua_version > 4 if lua_version > 4
syn keyword luaConstant true false syn keyword luaConstant true false
endif endif
" Strings " Strings
syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}" if lua_version < 5
syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial syn match luaSpecial contained "\\[\\abfnrtv\'\"]\|\\\d\{,3}"
syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial elseif lua_version == 5 && lua_subversion == 0
" Nested strings syn match luaSpecial contained "\\[\\abfnrtv\'\"[\]]\|\\\d\{,3}"
if (lua_version == 5 && lua_subversion == 0) || lua_version < 5 syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2
syn region luaString2 matchgroup=luaString start=+\[\[+ end=+\]\]+ contains=luaString2 elseif lua_version > 5 || (lua_version == 5 && lua_subversion >= 1)
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\]" syn region luaString2 matchgroup=luaString start="\[\z(=*\)\[" end="\]\z1\]"
endif endif
syn region luaString start=+'+ end=+'+ skip=+\\\\\|\\'+ contains=luaSpecial
" integer number syn region luaString start=+"+ end=+"+ skip=+\\\\\|\\"+ contains=luaSpecial
syn match luaNumber "\<[0-9]\+\>"
" floating point number, with dot, optional exponent " integer number
syn match luaFloat "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>" syn match luaNumber "\<[0-9]\+\>"
" floating point number, starting with a dot, optional exponent " floating point number, with dot, optional exponent
syn match luaFloat "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>" syn match luaFloat "\<[0-9]\+\.[0-9]*\%(e[-+]\=[0-9]\+\)\=\>"
" floating point number, without dot, with exponent " floating point number, starting with a dot, optional exponent
syn match luaFloat "\<[0-9]\+e[-+]\=[0-9]\+\>" syn match luaFloat "\.[0-9]\+\%(e[-+]\=[0-9]\+\)\=\>"
" floating point number, without dot, with exponent
" tables syn match luaFloat "\<[0-9]\+e[-+]\=[0-9]\+\>"
syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
" tables
syn keyword luaFunc assert collectgarbage dofile error gcinfo next syn region luaTableBlock transparent matchgroup=luaTable start="{" end="}" contains=ALLBUT,luaTodo,luaSpecial,luaCond,luaCondElseif,luaCondEnd,luaCondStart,luaBlock,luaRepeatBlock,luaRepeat,luaStatement
syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
syn keyword luaFunc assert collectgarbage dofile error next
if lua_version == 4 syn keyword luaFunc print rawget rawset tonumber tostring type _VERSION
syn keyword luaFunc _ALERT _ERRORMESSAGE
syn keyword luaFunc call copytagmethods dostring if lua_version == 4
syn keyword luaFunc foreach foreachi getglobal getn syn keyword luaFunc _ALERT _ERRORMESSAGE gcinfo
syn keyword luaFunc gettagmethod globals newtag syn keyword luaFunc call copytagmethods dostring
syn keyword luaFunc setglobal settag settagmethod sort syn keyword luaFunc foreach foreachi getglobal getn
syn keyword luaFunc tag tinsert tremove syn keyword luaFunc gettagmethod globals newtag
syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR syn keyword luaFunc setglobal settag settagmethod sort
syn keyword luaFunc openfile closefile flush seek syn keyword luaFunc tag tinsert tremove
syn keyword luaFunc setlocale execute remove rename tmpname syn keyword luaFunc _INPUT _OUTPUT _STDIN _STDOUT _STDERR
syn keyword luaFunc getenv date clock exit syn keyword luaFunc openfile closefile flush seek
syn keyword luaFunc readfrom writeto appendto read write syn keyword luaFunc setlocale execute remove rename tmpname
syn keyword luaFunc PI abs sin cos tan asin syn keyword luaFunc getenv date clock exit
syn keyword luaFunc acos atan atan2 ceil floor syn keyword luaFunc readfrom writeto appendto read write
syn keyword luaFunc mod frexp ldexp sqrt min max log syn keyword luaFunc PI abs sin cos tan asin
syn keyword luaFunc log10 exp deg rad random syn keyword luaFunc acos atan atan2 ceil floor
syn keyword luaFunc randomseed strlen strsub strlower strupper syn keyword luaFunc mod frexp ldexp sqrt min max log
syn keyword luaFunc strchar strrep ascii strbyte syn keyword luaFunc log10 exp deg rad random
syn keyword luaFunc format strfind gsub syn keyword luaFunc randomseed strlen strsub strlower strupper
syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook syn keyword luaFunc strchar strrep ascii strbyte
elseif lua_version == 5 syn keyword luaFunc format strfind gsub
" Not sure if all these functions need to be highlighted... syn keyword luaFunc getinfo getlocal setlocal setcallhook setlinehook
syn keyword luaFunc _G getfenv getmetatable ipairs loadfile elseif lua_version == 5
syn keyword luaFunc loadstring pairs pcall rawequal " Not sure if all these functions need to be highlighted...
syn keyword luaFunc require setfenv setmetatable unpack xpcall syn keyword luaFunc _G getfenv getmetatable ipairs loadfile
if lua_subversion == 0 syn keyword luaFunc loadstring pairs pcall rawequal
syn keyword luaFunc loadlib LUA_PATH _LOADED _REQUIREDNAME syn keyword luaFunc require setfenv setmetatable unpack xpcall
elseif lua_subversion == 1 if lua_subversion == 0
syn keyword luaFunc load module select syn keyword luaFunc gcinfo loadlib LUA_PATH _LOADED _REQUIREDNAME
syn match luaFunc /package\.cpath/ elseif lua_subversion == 1
syn match luaFunc /package\.loaded/ syn keyword luaFunc load module select
syn match luaFunc /package\.loadlib/ syn match luaFunc /package\.cpath/
syn match luaFunc /package\.path/ syn match luaFunc /package\.loaded/
syn match luaFunc /package\.preload/ syn match luaFunc /package\.loadlib/
syn match luaFunc /package\.seeall/ syn match luaFunc /package\.path/
syn match luaFunc /coroutine\.running/ syn match luaFunc /package\.preload/
endif syn match luaFunc /package\.seeall/
syn match luaFunc /coroutine\.create/ syn match luaFunc /coroutine\.running/
syn match luaFunc /coroutine\.resume/ endif
syn match luaFunc /coroutine\.status/ syn match luaFunc /coroutine\.create/
syn match luaFunc /coroutine\.wrap/ syn match luaFunc /coroutine\.resume/
syn match luaFunc /coroutine\.yield/ syn match luaFunc /coroutine\.status/
syn match luaFunc /string\.byte/ syn match luaFunc /coroutine\.wrap/
syn match luaFunc /string\.char/ syn match luaFunc /coroutine\.yield/
syn match luaFunc /string\.dump/ syn match luaFunc /string\.byte/
syn match luaFunc /string\.find/ syn match luaFunc /string\.char/
syn match luaFunc /string\.len/ syn match luaFunc /string\.dump/
syn match luaFunc /string\.lower/ syn match luaFunc /string\.find/
syn match luaFunc /string\.rep/ syn match luaFunc /string\.len/
syn match luaFunc /string\.sub/ syn match luaFunc /string\.lower/
syn match luaFunc /string\.upper/ syn match luaFunc /string\.rep/
syn match luaFunc /string\.format/ syn match luaFunc /string\.sub/
syn match luaFunc /string\.gsub/ syn match luaFunc /string\.upper/
if lua_subversion == 0 syn match luaFunc /string\.format/
syn match luaFunc /string\.gfind/ syn match luaFunc /string\.gsub/
elseif lua_subversion == 1 if lua_subversion == 0
syn match luaFunc /string\.gmatch/ syn match luaFunc /string\.gfind/
syn match luaFunc /string\.match/ syn match luaFunc /table\.getn/
syn match luaFunc /string\.reverse/ syn match luaFunc /table\.setn/
syn match luaFunc /table\.maxn/ syn match luaFunc /table\.foreach/
endif syn match luaFunc /table\.foreachi/
syn match luaFunc /table\.concat/ elseif lua_subversion == 1
syn match luaFunc /table\.foreach/ syn match luaFunc /string\.gmatch/
syn match luaFunc /table\.foreachi/ syn match luaFunc /string\.match/
syn match luaFunc /table\.getn/ syn match luaFunc /string\.reverse/
syn match luaFunc /table\.sort/ syn match luaFunc /table\.maxn/
syn match luaFunc /table\.insert/ endif
syn match luaFunc /table\.remove/ syn match luaFunc /table\.concat/
syn match luaFunc /table\.setn/ syn match luaFunc /table\.sort/
syn match luaFunc /math\.abs/ syn match luaFunc /table\.insert/
syn match luaFunc /math\.acos/ syn match luaFunc /table\.remove/
syn match luaFunc /math\.asin/ syn match luaFunc /math\.abs/
syn match luaFunc /math\.atan/ syn match luaFunc /math\.acos/
syn match luaFunc /math\.atan2/ syn match luaFunc /math\.asin/
syn match luaFunc /math\.ceil/ syn match luaFunc /math\.atan/
syn match luaFunc /math\.sin/ syn match luaFunc /math\.atan2/
syn match luaFunc /math\.cos/ syn match luaFunc /math\.ceil/
syn match luaFunc /math\.tan/ syn match luaFunc /math\.sin/
syn match luaFunc /math\.deg/ syn match luaFunc /math\.cos/
syn match luaFunc /math\.exp/ syn match luaFunc /math\.tan/
syn match luaFunc /math\.floor/ syn match luaFunc /math\.deg/
syn match luaFunc /math\.log/ syn match luaFunc /math\.exp/
syn match luaFunc /math\.log10/ syn match luaFunc /math\.floor/
syn match luaFunc /math\.max/ syn match luaFunc /math\.log/
syn match luaFunc /math\.min/ syn match luaFunc /math\.log10/
if lua_subversion == 0 syn match luaFunc /math\.max/
syn match luaFunc /math\.mod/ syn match luaFunc /math\.min/
elseif lua_subversion == 1 if lua_subversion == 0
syn match luaFunc /math\.fmod/ syn match luaFunc /math\.mod/
syn match luaFunc /math\.modf/ elseif lua_subversion == 1
syn match luaFunc /math\.cosh/ syn match luaFunc /math\.fmod/
syn match luaFunc /math\.sinh/ syn match luaFunc /math\.modf/
syn match luaFunc /math\.tanh/ syn match luaFunc /math\.cosh/
endif syn match luaFunc /math\.sinh/
syn match luaFunc /math\.pow/ syn match luaFunc /math\.tanh/
syn match luaFunc /math\.rad/ endif
syn match luaFunc /math\.sqrt/ syn match luaFunc /math\.pow/
syn match luaFunc /math\.frexp/ syn match luaFunc /math\.rad/
syn match luaFunc /math\.ldexp/ syn match luaFunc /math\.sqrt/
syn match luaFunc /math\.random/ syn match luaFunc /math\.frexp/
syn match luaFunc /math\.randomseed/ syn match luaFunc /math\.ldexp/
syn match luaFunc /math\.pi/ syn match luaFunc /math\.random/
syn match luaFunc /io\.stdin/ syn match luaFunc /math\.randomseed/
syn match luaFunc /io\.stdout/ syn match luaFunc /math\.pi/
syn match luaFunc /io\.stderr/ syn match luaFunc /io\.stdin/
syn match luaFunc /io\.close/ syn match luaFunc /io\.stdout/
syn match luaFunc /io\.flush/ syn match luaFunc /io\.stderr/
syn match luaFunc /io\.input/ syn match luaFunc /io\.close/
syn match luaFunc /io\.lines/ syn match luaFunc /io\.flush/
syn match luaFunc /io\.open/ syn match luaFunc /io\.input/
syn match luaFunc /io\.output/ syn match luaFunc /io\.lines/
syn match luaFunc /io\.popen/ syn match luaFunc /io\.open/
syn match luaFunc /io\.read/ syn match luaFunc /io\.output/
syn match luaFunc /io\.tmpfile/ syn match luaFunc /io\.popen/
syn match luaFunc /io\.type/ syn match luaFunc /io\.read/
syn match luaFunc /io\.write/ syn match luaFunc /io\.tmpfile/
syn match luaFunc /os\.clock/ syn match luaFunc /io\.type/
syn match luaFunc /os\.date/ syn match luaFunc /io\.write/
syn match luaFunc /os\.difftime/ syn match luaFunc /os\.clock/
syn match luaFunc /os\.execute/ syn match luaFunc /os\.date/
syn match luaFunc /os\.exit/ syn match luaFunc /os\.difftime/
syn match luaFunc /os\.getenv/ syn match luaFunc /os\.execute/
syn match luaFunc /os\.remove/ syn match luaFunc /os\.exit/
syn match luaFunc /os\.rename/ syn match luaFunc /os\.getenv/
syn match luaFunc /os\.setlocale/ syn match luaFunc /os\.remove/
syn match luaFunc /os\.time/ syn match luaFunc /os\.rename/
syn match luaFunc /os\.tmpname/ syn match luaFunc /os\.setlocale/
syn match luaFunc /debug\.debug/ syn match luaFunc /os\.time/
syn match luaFunc /debug\.gethook/ syn match luaFunc /os\.tmpname/
syn match luaFunc /debug\.getinfo/ syn match luaFunc /debug\.debug/
syn match luaFunc /debug\.getlocal/ syn match luaFunc /debug\.gethook/
syn match luaFunc /debug\.getupvalue/ syn match luaFunc /debug\.getinfo/
syn match luaFunc /debug\.setlocal/ syn match luaFunc /debug\.getlocal/
syn match luaFunc /debug\.setupvalue/ syn match luaFunc /debug\.getupvalue/
syn match luaFunc /debug\.sethook/ syn match luaFunc /debug\.setlocal/
syn match luaFunc /debug\.traceback/ syn match luaFunc /debug\.setupvalue/
if lua_subversion == 1 syn match luaFunc /debug\.sethook/
syn match luaFunc /debug\.getfenv/ syn match luaFunc /debug\.traceback/
syn match luaFunc /debug\.getmetatable/ if lua_subversion == 1
syn match luaFunc /debug\.getregistry/ syn match luaFunc /debug\.getfenv/
syn match luaFunc /debug\.setfenv/ syn match luaFunc /debug\.getmetatable/
syn match luaFunc /debug\.setmetatable/ syn match luaFunc /debug\.getregistry/
endif syn match luaFunc /debug\.setfenv/
endif syn match luaFunc /debug\.setmetatable/
endif
" Define the default highlighting. endif
" 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 " Define the default highlighting.
if version >= 508 || !exists("did_lua_syntax_inits") " For version 5.7 and earlier: only when not done already
if version < 508 " For version 5.8 and later: only when an item doesn't have highlighting yet
let did_lua_syntax_inits = 1 if version >= 508 || !exists("did_lua_syntax_inits")
command -nargs=+ HiLink hi link <args> if version < 508
else let did_lua_syntax_inits = 1
command -nargs=+ HiLink hi def link <args> command -nargs=+ HiLink hi link <args>
endif else
command -nargs=+ HiLink hi def link <args>
HiLink luaStatement Statement endif
HiLink luaRepeat Repeat
HiLink luaString String HiLink luaStatement Statement
HiLink luaString2 String HiLink luaRepeat Repeat
HiLink luaNumber Number HiLink luaString String
HiLink luaFloat Float HiLink luaString2 String
HiLink luaOperator Operator HiLink luaNumber Number
HiLink luaConstant Constant HiLink luaFloat Float
HiLink luaCond Conditional HiLink luaOperator Operator
HiLink luaFunction Function HiLink luaConstant Constant
HiLink luaComment Comment HiLink luaCond Conditional
HiLink luaTodo Todo HiLink luaFunction Function
HiLink luaTable Structure HiLink luaComment Comment
HiLink luaError Error HiLink luaTodo Todo
HiLink luaSpecial SpecialChar HiLink luaTable Structure
HiLink luaFunc Identifier HiLink luaError Error
HiLink luaSpecial SpecialChar
delcommand HiLink HiLink luaFunc Identifier
endif
delcommand HiLink
let b:current_syntax = "lua" endif
" vim: et ts=8 let b:current_syntax = "lua"
" vim: et ts=8

View File

@ -143,8 +143,7 @@ is also available through the Platform SDK, |ms-platform-sdk|.
Visual C++ 2005 Express Edition Visual C++ 2005 Express Edition
------------------------------- -------------------------------
Visual C++ 2005 Express Edition can be downloaded for free Visual C++ 2005 Express Edition can be downloaded for free from:
before November 2006 from
http://msdn.microsoft.com/vstudio/express/visualC/default.aspx http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
This includes the IDE and the debugger. You will also need This includes the IDE and the debugger. You will also need
|ms-platform-sdk|. You can build Vim with Make_mvc.mak. |ms-platform-sdk|. You can build Vim with Make_mvc.mak.

3
src/auto/configure vendored
View File

@ -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 \ 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 do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then if eval "test \"\${$as_ac_Header+set}\" = set"; then

View File

@ -239,6 +239,7 @@
#undef HAVE_XM_MANAGER_H #undef HAVE_XM_MANAGER_H
#undef HAVE_XM_UNHIGHLIGHTT_H #undef HAVE_XM_UNHIGHLIGHTT_H
#undef HAVE_XM_JOINSIDET_H #undef HAVE_XM_JOINSIDET_H
#undef HAVE_XM_NOTEBOOK_H
#undef HAVE_X11_XPM_H #undef HAVE_X11_XPM_H
#undef HAVE_X11_XMU_EDITRES_H #undef HAVE_X11_XMU_EDITRES_H
#undef HAVE_X11_SM_SMLIB_H #undef HAVE_X11_SM_SMLIB_H

View File

@ -1901,7 +1901,7 @@ if test -z "$SKIP_MOTIF"; then
cppflags_save=$CPPFLAGS cppflags_save=$CPPFLAGS
CPPFLAGS="$CPPFLAGS $X_CFLAGS" CPPFLAGS="$CPPFLAGS $X_CFLAGS"
AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \ 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 if test $ac_cv_header_Xm_XpmP_h = yes; then
dnl Solaris uses XpmAttributes_21, very annoying. dnl Solaris uses XpmAttributes_21, very annoying.

View File

@ -8863,7 +8863,6 @@ f_expand(argvars, rettv)
ExpandInit(&xpc); ExpandInit(&xpc);
xpc.xp_context = EXPAND_FILES; xpc.xp_context = EXPAND_FILES;
rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL); rettv->vval.v_string = ExpandOne(&xpc, s, NULL, flags, WILD_ALL);
ExpandCleanup(&xpc);
} }
else else
rettv->vval.v_string = NULL; rettv->vval.v_string = NULL;
@ -10397,7 +10396,6 @@ f_glob(argvars, rettv)
rettv->v_type = VAR_STRING; rettv->v_type = VAR_STRING;
rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]), rettv->vval.v_string = ExpandOne(&xpc, get_tv_string(&argvars[0]),
NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL); NULL, WILD_USE_NL|WILD_SILENT, WILD_ALL);
ExpandCleanup(&xpc);
} }
/* /*

View File

@ -4371,7 +4371,6 @@ expand_filename(eap, cmdlinep, errormsgp)
p = ExpandOne(&xpc, eap->arg, NULL, p = ExpandOne(&xpc, eap->arg, NULL,
WILD_LIST_NOTFOUND|WILD_ADD_SLASH, WILD_LIST_NOTFOUND|WILD_ADD_SLASH,
WILD_EXPAND_FREE); WILD_EXPAND_FREE);
ExpandCleanup(&xpc);
if (p == NULL) if (p == NULL)
return FAIL; return FAIL;
} }

View File

@ -3260,7 +3260,8 @@ nextwild(xp, type, options)
* Return a pointer to alloced memory containing the new string. * Return a pointer to alloced memory containing the new string.
* Return NULL for failure. * 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_FREE: just free previously expanded matches
* mode = WILD_EXPAND_FREE: normal expansion, do not keep matches * mode = WILD_EXPAND_FREE: normal expansion, do not keep matches

View File

@ -753,7 +753,8 @@
/* /*
* GUI tabline * 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))) || (defined(FEAT_GUI_MSWIN) && (!defined(_MSC_VER) || _MSC_VER > 1020)))
# define FEAT_GUI_TABLINE # define FEAT_GUI_TABLINE
#endif #endif

View File

@ -3491,7 +3491,7 @@ get_tabline_label(tp)
/* /*
* Send the event for clicking to select tab page "nr". * Send the event for clicking to select tab page "nr".
* Returns TRUE if it was done, FALSE when skipped because we are already at * 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 int
send_tabline_event(nr) send_tabline_event(nr)
@ -3501,6 +3501,14 @@ send_tabline_event(nr)
if (nr == tabpage_index(curtab)) if (nr == tabpage_index(curtab))
return FALSE; 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[0] = CSI;
string[1] = KS_TABLINE; string[1] = KS_TABLINE;
string[2] = KE_FILLER; string[2] = KE_FILLER;

View File

@ -48,6 +48,11 @@
/* Vim's Scrap flavor. */ /* Vim's Scrap flavor. */
#define VIMSCRAPFLAVOR 'VIM!' #define VIMSCRAPFLAVOR 'VIM!'
#ifdef FEAT_MBYTE
# define SCRAPTEXTFLAVOR kScrapFlavorTypeUnicode
#else
# define SCRAPTEXTFLAVOR kScrapFlavorTypeText
#endif
static EventHandlerUPP mouseWheelHandlerUPP = NULL; static EventHandlerUPP mouseWheelHandlerUPP = NULL;
SInt32 gMacSystemVersion; SInt32 gMacSystemVersion;
@ -4427,69 +4432,65 @@ clip_mch_request_selection(VimClipboard *cbd)
if (flavor == 0) if (flavor == 0)
{ {
error = GetScrapFlavorFlags(scrap, kScrapFlavorTypeUnicode, &scrapFlags); error = GetScrapFlavorFlags(scrap, SCRAPTEXTFLAVOR, &scrapFlags);
if (error != noErr) if (error != noErr)
return; return;
error = GetScrapFlavorSize(scrap, kScrapFlavorTypeUnicode, &scrapSize); error = GetScrapFlavorSize(scrap, SCRAPTEXTFLAVOR, &scrapSize);
if (error != noErr) if (error != noErr)
return; return;
} }
ReserveMem(scrapSize); ReserveMem(scrapSize);
{ /* In CARBON we don't need a Handle, a pointer is good */
/* In CARBON we don't need a Handle, a pointer is good */ textOfClip = NewHandle(scrapSize);
textOfClip = NewHandle(scrapSize);
/* tempclip = lalloc(scrapSize+1, TRUE); */
HLock(textOfClip);
error = GetScrapFlavorData(scrap,
flavor ? VIMSCRAPFLAVOR : kScrapFlavorTypeUnicode,
&scrapSize, *textOfClip);
scrapSize -= flavor;
if (flavor) /* tempclip = lalloc(scrapSize+1, TRUE); */
type = **textOfClip; HLock(textOfClip);
else error = GetScrapFlavorData(scrap,
type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR; flavor ? VIMSCRAPFLAVOR : SCRAPTEXTFLAVOR,
&scrapSize, *textOfClip);
scrapSize -= flavor;
tempclip = lalloc(scrapSize + 1, TRUE); if (flavor)
#if defined(FEAT_MBYTE) type = **textOfClip;
mch_memmove(tempclip, *textOfClip + flavor, scrapSize); else
#else type = (strchr(*textOfClip, '\r') != NULL) ? MLINE : MCHAR;
STRNCPY(tempclip, *textOfClip + flavor, scrapSize);
#endif tempclip = lalloc(scrapSize + 1, TRUE);
tempclip[scrapSize] = 0; mch_memmove(tempclip, *textOfClip + flavor, scrapSize);
tempclip[scrapSize] = 0;
#ifdef MACOS_CONVERT #ifdef MACOS_CONVERT
{
/* Convert from utf-16 (clipboard) */ /* Convert from utf-16 (clipboard) */
size_t encLen = 0; size_t encLen = 0;
char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen); char_u *to = mac_utf16_to_enc((UniChar *)tempclip, scrapSize, &encLen);
if (to)
if (to != NULL)
{ {
scrapSize = encLen; scrapSize = encLen;
vim_free(tempclip); vim_free(tempclip);
tempclip = to; tempclip = to;
} }
}
#endif #endif
searchCR = (char *)tempclip; searchCR = (char *)tempclip;
while (searchCR != NULL) while (searchCR != NULL)
{ {
searchCR = strchr(searchCR, '\r'); searchCR = strchr(searchCR, '\r');
if (searchCR != NULL)
if (searchCR != NULL) *searchCR = '\n';
searchCR[0] = '\n';
}
clip_yank_selection(type, tempclip, scrapSize, cbd);
vim_free(tempclip);
HUnlock(textOfClip);
DisposeHandle(textOfClip);
} }
clip_yank_selection(type, tempclip, scrapSize, cbd);
vim_free(tempclip);
HUnlock(textOfClip);
DisposeHandle(textOfClip);
} }
void void
@ -4527,12 +4528,10 @@ clip_mch_set_selection(VimClipboard *cbd)
/* /*
* Once we set the clipboard, lose ownership. If another application sets * Once we set the clipboard, lose ownership. If another application sets
* the clipboard, we don't want to think that we still own it. * the clipboard, we don't want to think that we still own it.
*
*/ */
cbd->owned = FALSE; cbd->owned = FALSE;
type = clip_convert_selection(&str, (long_u *) &scrapSize, cbd); type = clip_convert_selection(&str, (long_u *)&scrapSize, cbd);
#ifdef MACOS_CONVERT #ifdef MACOS_CONVERT
size_t utf16_len = 0; size_t utf16_len = 0;
@ -4555,7 +4554,7 @@ clip_mch_set_selection(VimClipboard *cbd)
**textOfClip = type; **textOfClip = type;
mch_memmove(*textOfClip + 1, str, scrapSize); mch_memmove(*textOfClip + 1, str, scrapSize);
GetCurrentScrap(&scrap); GetCurrentScrap(&scrap);
PutScrapFlavor(scrap, kScrapFlavorTypeUnicode, kScrapFlavorMaskNone, PutScrapFlavor(scrap, SCRAPTEXTFLAVOR, kScrapFlavorMaskNone,
scrapSize, *textOfClip + 1); scrapSize, *textOfClip + 1);
PutScrapFlavor(scrap, VIMSCRAPFLAVOR, kScrapFlavorMaskNone, PutScrapFlavor(scrap, VIMSCRAPFLAVOR, kScrapFlavorMaskNone,
scrapSize + 1, *textOfClip); scrapSize + 1, *textOfClip);

View File

@ -26,7 +26,6 @@
#include <Xm/LabelG.h> #include <Xm/LabelG.h>
#include <Xm/ToggleBG.h> #include <Xm/ToggleBG.h>
#include <Xm/SeparatoG.h> #include <Xm/SeparatoG.h>
#include <Xm/Notebook.h>
#include <Xm/XmP.h> #include <Xm/XmP.h>
#include <X11/keysym.h> #include <X11/keysym.h>
@ -43,6 +42,9 @@
# include <Xm/XpmP.h> # include <Xm/XpmP.h>
# endif # endif
#endif #endif
#ifdef HAVE_XM_NOTEBOOK_H
# include <Xm/Notebook.h>
#endif
#include "gui_xmebw.h" /* for our Enhanced Button Widget */ #include "gui_xmebw.h" /* for our Enhanced Button Widget */

View File

@ -2296,18 +2296,26 @@ gui_mch_update_tabline(void)
int curtabidx = 0; int curtabidx = 0;
RECT rc; RECT rc;
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
static int use_unicode = FALSE;
int uu;
WCHAR *wstr = NULL; WCHAR *wstr = NULL;
#endif #endif
if (s_tabhwnd == NULL) if (s_tabhwnd == NULL)
return; return;
#if defined(FEAT_MBYTE) && defined(CCM_SETUNICODEFORMAT) #if defined(FEAT_MBYTE)
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) # ifndef CCM_SETUNICODEFORMAT
/* /* For older compilers. We assume this never changes. */
* Enable unicode support # define CCM_SETUNICODEFORMAT 0x2005
*/ # endif
SendMessage(s_tabhwnd, CCM_SETUNICODEFORMAT, (WPARAM)TRUE, (LPARAM)0); 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 #endif
tie.mask = TCIF_TEXT; tie.mask = TCIF_TEXT;
@ -2330,7 +2338,7 @@ gui_mch_update_tabline(void)
tie.pszText = NameBuff; tie.pszText = NameBuff;
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE
wstr = NULL; wstr = NULL;
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) if (use_unicode)
{ {
/* Need to go through Unicode. */ /* Need to go through Unicode. */
wstr = enc_to_ucs2(NameBuff, NULL); wstr = enc_to_ucs2(NameBuff, NULL);

View File

@ -1532,7 +1532,7 @@ recover_names(fname, list, nr)
files[i] = files[i + 1]; files[i] = files[i + 1];
} }
} }
if (nr) if (nr > 0)
{ {
file_count += num_files; file_count += num_files;
if (nr <= file_count) if (nr <= file_count)
@ -1578,7 +1578,8 @@ recover_names(fname, list, nr)
for (i = 0; i < num_names; ++i) for (i = 0; i < num_names; ++i)
vim_free(names[i]); vim_free(names[i]);
FreeWild(num_files, files); if (num_files > 0)
FreeWild(num_files, files);
} }
vim_free(dir_name); vim_free(dir_name);
return file_count; return file_count;

View File

@ -2336,20 +2336,23 @@ ex_menutranslate(eap)
{ {
tp = (menutrans_T *)menutrans_ga.ga_data; tp = (menutrans_T *)menutrans_ga.ga_data;
from = vim_strsave(from); from = vim_strsave(from);
from_noamp = menu_text(from, NULL, NULL); if (from != NULL)
to = vim_strnsave(to, (int)(arg - to));
if (from != NULL && from_noamp != NULL && to != NULL)
{ {
tp[menutrans_ga.ga_len].from = from; from_noamp = menu_text(from, NULL, NULL);
tp[menutrans_ga.ga_len].from_noamp = from_noamp; to = vim_strnsave(to, (int)(arg - to));
tp[menutrans_ga.ga_len].to = to; if (from_noamp != NULL && to != NULL)
++menutrans_ga.ga_len; {
} tp[menutrans_ga.ga_len].from = from;
else tp[menutrans_ga.ga_len].from_noamp = from_noamp;
{ tp[menutrans_ga.ga_len].to = to;
vim_free(from); ++menutrans_ga.ga_len;
vim_free(from_noamp); }
vim_free(to); else
{
vim_free(from);
vim_free(from_noamp);
vim_free(to);
}
} }
} }
} }

View File

@ -3625,7 +3625,6 @@ expand_env_esc(srcp, dst, dstlen, esc, startstr)
xpc.xp_context = EXPAND_FILES; xpc.xp_context = EXPAND_FILES;
var = ExpandOne(&xpc, dst, NULL, var = ExpandOne(&xpc, dst, NULL,
WILD_ADD_SLASH|WILD_SILENT, WILD_EXPAND_FREE); WILD_ADD_SLASH|WILD_SILENT, WILD_EXPAND_FREE);
ExpandCleanup(&xpc);
mustfree = TRUE; mustfree = TRUE;
} }
@ -9363,7 +9362,7 @@ FreeWild(count, files)
int count; int count;
char_u **files; char_u **files;
{ {
if (files == NULL || count <= 0) if (count <= 0 || files == NULL)
return; return;
#if defined(__EMX__) && defined(__ALWAYS_HAS_TRAILING_NULL_POINTER) /* XXX */ #if defined(__EMX__) && defined(__ALWAYS_HAS_TRAILING_NULL_POINTER) /* XXX */
/* /*

View File

@ -2996,35 +2996,44 @@ set_init_1()
* 'maxmemtot' and 'maxmem' may have to be adjusted for available memory * 'maxmemtot' and 'maxmem' may have to be adjusted for available memory
*/ */
opt_idx = findoption((char_u *)"maxmemtot"); opt_idx = findoption((char_u *)"maxmemtot");
#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM) if (opt_idx >= 0)
if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L)
#endif
{ {
#if !defined(HAVE_AVAIL_MEM) && !defined(HAVE_TOTAL_MEM)
if (options[opt_idx].def_val[VI_DEFAULT] == (char_u *)0L)
#endif
{
#ifdef HAVE_AVAIL_MEM #ifdef HAVE_AVAIL_MEM
/* Use amount of memory available at this moment. */ /* Use amount of memory available at this moment. */
n = (mch_avail_mem(FALSE) >> 11); n = (mch_avail_mem(FALSE) >> 11);
#else #else
# ifdef HAVE_TOTAL_MEM # ifdef HAVE_TOTAL_MEM
/* Use amount of memory available to Vim. */ /* Use amount of memory available to Vim. */
n = (mch_total_mem(FALSE) >> 11); n = (mch_total_mem(FALSE) >> 11);
# else # else
n = (0x7fffffff >> 11); n = (0x7fffffff >> 11);
# endif # 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 #endif
options[opt_idx].def_val[VI_DEFAULT] = (char_u *)n; 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 #ifdef FEAT_GUI_W32
/* force 'shortname' for Win32s */ /* force 'shortname' for Win32s */
if (gui_is_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 #endif
#ifdef FEAT_SEARCHPATH #ifdef FEAT_SEARCHPATH
@ -3057,8 +3066,11 @@ set_init_1()
} }
buf[j] = NUL; buf[j] = NUL;
opt_idx = findoption((char_u *)"cdpath"); opt_idx = findoption((char_u *)"cdpath");
options[opt_idx].def_val[VI_DEFAULT] = buf; if (opt_idx >= 0)
options[opt_idx].flags |= P_DEF_ALLOCED; {
options[opt_idx].def_val[VI_DEFAULT] = buf;
options[opt_idx].flags |= P_DEF_ALLOCED;
}
} }
if (mustfree) if (mustfree)
vim_free(cdpath); vim_free(cdpath);
@ -3259,8 +3271,11 @@ set_init_1()
if (mb_init() == NULL) if (mb_init() == NULL)
{ {
opt_idx = findoption((char_u *)"encoding"); opt_idx = findoption((char_u *)"encoding");
options[opt_idx].def_val[VI_DEFAULT] = p_enc; if (opt_idx >= 0)
options[opt_idx].flags |= P_DEF_ALLOCED; {
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) \ #if defined(MSDOS) || defined(MSWIN) || defined(OS2) || defined(MACOS) \
|| defined(VMS) || defined(VMS)
@ -3278,9 +3293,11 @@ set_init_1()
set_string_option_direct((char_u *)"isk", -1, set_string_option_direct((char_u *)"isk", -1,
ISK_LATIN1, OPT_FREE, SID_NONE); ISK_LATIN1, OPT_FREE, SID_NONE);
opt_idx = findoption((char_u *)"isp"); 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"); 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(); (void)init_chartab();
} }
#endif #endif
@ -3297,8 +3314,11 @@ set_init_1()
if (p_tenc != NULL) if (p_tenc != NULL)
{ {
opt_idx = findoption((char_u *)"termencoding"); opt_idx = findoption((char_u *)"termencoding");
options[opt_idx].def_val[VI_DEFAULT] = p_tenc; if (opt_idx >= 0)
options[opt_idx].flags |= P_DEF_ALLOCED; {
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(&input_conv, p_tenc, p_enc);
convert_setup(&output_conv, p_enc, p_tenc); 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 */ if (p != NULL) /* we don't want a NULL */
{ {
opt_idx = findoption((char_u *)name); opt_idx = findoption((char_u *)name);
if (options[opt_idx].flags & P_DEF_ALLOCED) if (opt_idx >= 0)
vim_free(options[opt_idx].def_val[VI_DEFAULT]); {
options[opt_idx].def_val[VI_DEFAULT] = p; if (options[opt_idx].flags & P_DEF_ALLOCED)
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; char *name;
long val; 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) #if defined(EXITFREE) || defined(PROTO)
@ -3498,7 +3525,7 @@ set_init_2()
*/ */
set_number_default("scroll", (long)((long_u)Rows >> 1)); set_number_default("scroll", (long)((long_u)Rows >> 1));
idx = findoption((char_u *)"scroll"); 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); set_option_default(idx, OPT_LOCAL, p_cp);
comp_col(); comp_col();
@ -3507,7 +3534,7 @@ set_init_2()
* Default is Rows - 1. * Default is Rows - 1.
*/ */
idx = findoption((char_u *)"wi"); 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; p_window = Rows - 1;
set_number_default("window", Rows - 1); set_number_default("window", Rows - 1);
@ -3519,7 +3546,8 @@ set_init_2()
* with a dark background, that can handle color. * with a dark background, that can handle color.
*/ */
idx = findoption((char_u *)"bg"); 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); 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 /* don't mark it as set, when starting the GUI it may be
@ -3594,10 +3622,16 @@ set_init_3()
#endif #endif
idx_srr = findoption((char_u *)"srr"); 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 #ifdef FEAT_QUICKFIX
idx_sp = findoption((char_u *)"sp"); 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 #endif
/* /*
@ -3692,7 +3726,7 @@ set_init_3()
int idx3; int idx3;
idx3 = findoption((char_u *)"shcf"); 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"; p_shcf = (char_u *)"-c";
options[idx3].def_val[VI_DEFAULT] = p_shcf; options[idx3].def_val[VI_DEFAULT] = p_shcf;
@ -3702,14 +3736,14 @@ set_init_3()
# ifdef WIN3264 # ifdef WIN3264
/* Somehow Win32 requires the quotes around the redirection too */ /* Somehow Win32 requires the quotes around the redirection too */
idx3 = findoption((char_u *)"sxq"); 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 *)"\""; p_sxq = (char_u *)"\"";
options[idx3].def_val[VI_DEFAULT] = p_sxq; options[idx3].def_val[VI_DEFAULT] = p_sxq;
} }
# else # else
idx3 = findoption((char_u *)"shq"); 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 *)"\""; p_shq = (char_u *)"\"";
options[idx3].def_val[VI_DEFAULT] = p_shq; options[idx3].def_val[VI_DEFAULT] = p_shq;
@ -3738,7 +3772,7 @@ set_helplang_default(lang)
if (lang == NULL || STRLEN(lang) < 2) /* safety check */ if (lang == NULL || STRLEN(lang) < 2) /* safety check */
return; return;
idx = findoption((char_u *)"hlg"); 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) if (options[idx].flags & P_ALLOCED)
free_string_option(p_hlg); free_string_option(p_hlg);
@ -3807,7 +3841,7 @@ set_title_defaults()
* not need to be contacted. * not need to be contacted.
*/ */
idx1 = findoption((char_u *)"title"); idx1 = findoption((char_u *)"title");
if (!(options[idx1].flags & P_WAS_SET)) if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET))
{ {
#ifdef FEAT_GUI #ifdef FEAT_GUI
if (gui.starting || gui.in_use) if (gui.starting || gui.in_use)
@ -3819,7 +3853,7 @@ set_title_defaults()
p_title = val; p_title = val;
} }
idx1 = findoption((char_u *)"icon"); idx1 = findoption((char_u *)"icon");
if (!(options[idx1].flags & P_WAS_SET)) if (idx1 >= 0 && !(options[idx1].flags & P_WAS_SET))
{ {
#ifdef FEAT_GUI #ifdef FEAT_GUI
if (gui.starting || gui.in_use) if (gui.starting || gui.in_use)
@ -5224,7 +5258,7 @@ set_string_option_direct(name, opt_idx, val, opt_flags, set_sid)
if (opt_idx == -1) /* use name */ if (opt_idx == -1) /* use name */
{ {
opt_idx = findoption(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()"); EMSG2(_(e_intern2), "set_string_option_direct()");
return; return;
@ -8127,7 +8161,7 @@ set_option_value(name, number, string, opt_flags)
long_u flags; long_u flags;
opt_idx = findoption(name); opt_idx = findoption(name);
if (opt_idx == -1) if (opt_idx < 0)
EMSG2(_("E355: Unknown option: %s"), name); EMSG2(_("E355: Unknown option: %s"), name);
else else
{ {
@ -9464,7 +9498,8 @@ reset_modifiable()
curbuf->b_p_ma = FALSE; curbuf->b_p_ma = FALSE;
p_ma = FALSE; p_ma = FALSE;
opt_idx = findoption((char_u *)"ma"); 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) change_compatible(on)
int on; int on;
{ {
int opt_idx;
if (p_cp != on) if (p_cp != on)
{ {
p_cp = on; p_cp = on;
compatible_set(); 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;
} }
/* /*

View File

@ -4999,8 +4999,8 @@ msgid "E397: Filename required"
msgstr "E397: Dateiname wird benötigt" msgstr "E397: Dateiname wird benötigt"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Fehlende ']': %s" msgstr "E789: Fehlende ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -71,8 +71,15 @@
# - Hundreds of error messages numbers added (wow) # - Hundreds of error messages numbers added (wow)
# 2006-04-15 DB Vim 7.0 first draft, based on fr.po 7.0c03 # 2006-04-15 DB Vim 7.0 first draft, based on fr.po 7.0c03
# - 285 new messages. # - 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: # Polishing done on:
# buffer.c # buffer.c
@ -94,7 +101,7 @@ msgstr ""
"Project-Id-Version: Vim(Français)\n" "Project-Id-Version: Vim(Français)\n"
"Report-Msgid-Bugs-To: Adrien Beau <version.francaise@free.fr>\n" "Report-Msgid-Bugs-To: Adrien Beau <version.francaise@free.fr>\n"
"POT-Creation-Date: 2006-04-01 17:09+0200\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 <david.blanchet@free.fr>\n" "Last-Translator: David Blanchet <david.blanchet@free.fr>\n"
"Language-Team: Adrien Beau <version.francaise@free.fr>\n" "Language-Team: Adrien Beau <version.francaise@free.fr>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -110,7 +117,7 @@ msgstr "E82: Aucun tampon ne peut
# explicite. # explicite.
msgid "E83: Cannot allocate buffer, using other one..." msgid "E83: Cannot allocate buffer, using other one..."
msgstr "" 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" msgid "E515: No buffers were unloaded"
msgstr "E515: Aucun tampon n'a été déchargé" msgstr "E515: Aucun tampon n'a été déchargé"
@ -327,6 +334,9 @@ msgstr "E102: Le tampon %s est introuvable"
msgid "E103: Buffer \"%s\" is not in diff mode" msgid "E103: Buffer \"%s\" is not in diff mode"
msgstr "E103: Le tampon %s n'est pas en mode diff" 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". # AB - Je cherche une traduction plus concise pour "escape".
msgid "E104: Escape not allowed in digraph" msgid "E104: Escape not allowed in digraph"
msgstr "E104: Un digraphe ne peut contenir le caractère d'échappement" msgstr "E104: Un digraphe ne peut contenir le caractère d'échappement"
@ -346,8 +356,8 @@ msgstr " Compl
# DB - todo : Faut-il une majuscule à "mode" ? # DB - todo : Faut-il une majuscule à "mode" ?
#. ctrl_x_mode == 0, ^P/^N compl. #. ctrl_x_mode == 0, ^P/^N compl.
msgid " ^X mode (^]^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^P^S^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)" msgid " Whole line completion (^L^N^P)"
msgstr " Complètement de ligne entière (^L^N^P)" msgstr " Complètement de ligne entière (^L^N^P)"
@ -388,8 +398,8 @@ msgstr " Compl
msgid " Omni completion (^O^N^P)" msgid " Omni completion (^O^N^P)"
msgstr " Complètement selon le type de fichier (Omni) (^O^N^P)" msgstr " Complètement selon le type de fichier (Omni) (^O^N^P)"
msgid " Spelling suggestion (^S^N^P)" msgid " Spelling suggestion (s^N^P)"
msgstr " Suggestion d'orthographe (^S^N^P)" msgstr " Suggestion d'orthographe (s^N^P)"
msgid " Keyword Local completion (^N^P)" msgid " Keyword Local completion (^N^P)"
msgstr " Complètement local de mot-clé (^N/^P)" msgstr " Complètement local de mot-clé (^N/^P)"
@ -656,6 +666,22 @@ msgstr "E723: Il manque '}'
msgid "E724: variable nested too deep for displaying" msgid "E724: variable nested too deep for displaying"
msgstr "E724: variable trop imbriquée pour être afficher" 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 <SID> not in a script context: %s"
msgstr "E120: <SID> 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" msgid "E699: Too many arguments"
msgstr "E699: Trop d'arguments" msgstr "E699: Trop d'arguments"
@ -696,8 +722,8 @@ msgstr ""
msgid "called inputrestore() more often than inputsave()" msgid "called inputrestore() more often than inputsave()"
msgstr "inputrestore() a été appelé plus de fois qu'inputsave()" msgstr "inputrestore() a été appelé plus de fois qu'inputsave()"
msgid "E745: Range not allowed" msgid "E786: Range not allowed"
msgstr "E745: Les plages ne sont pas autorisés" msgstr "E786: Les plages ne sont pas autorisés"
msgid "E701: Invalid type for len()" msgid "E701: Invalid type for len()"
msgstr "E701: Type invalide avec len()" msgstr "E701: Type invalide avec len()"
@ -1200,7 +1226,8 @@ msgstr "E145: Les commandes externes sont indisponibles dans rvim"
msgid "E146: Regular expressions can't be delimited by letters" msgid "E146: Regular expressions can't be delimited by letters"
msgstr "" 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 #, c-format
msgid "replace with %s (y/n/a/q/l/^E/^Y)?" msgid "replace with %s (y/n/a/q/l/^E/^Y)?"
@ -1266,7 +1293,6 @@ msgstr ""
msgid "E478: Don't panic!" msgid "E478: Don't panic!"
msgstr "E478: Pas de panique !" msgstr "E478: Pas de panique !"
# DB - c-format : langue de l'aide puis sujet de l'aide.
#, c-format #, c-format
msgid "E661: Sorry, no '%s' help for %s" msgid "E661: Sorry, no '%s' help for %s"
msgstr "E661: Désolé, aucune aide en langue '%s' pour %s" msgstr "E661: Désolé, aucune aide en langue '%s' pour %s"
@ -1304,7 +1330,7 @@ msgstr "E670: Encodages diff
# DB - Suggestion. # DB - Suggestion.
#, c-format #, c-format
msgid "E154: Duplicate tag \"%s\" in file %s/%s" 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. # AB - Il faut respecter l'esprit plus que la lettre.
#, c-format #, c-format
@ -1375,9 +1401,8 @@ msgstr "Fin de la fonction"
msgid "E464: Ambiguous use of user-defined command" msgid "E464: Ambiguous use of user-defined command"
msgstr "E464: Utilisation ambigüe d'une commande définie par l'utilisateur" msgstr "E464: Utilisation ambigüe d'une commande définie par l'utilisateur"
# DB - Espace final car Vim peut ajouter ": <informations>" à la suite
msgid "E492: Not an editor command" msgid "E492: Not an editor command"
msgstr "E492: Commande inconnue " msgstr "E492: Commande inconnue"
msgid "E493: Backwards range given" msgid "E493: Backwards range given"
msgstr "E493: La plage spécifiée est inversée" 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" msgstr "E182: Nom de commande invalide"
msgid "E183: User defined commands must start with an uppercase letter" msgid "E183: User defined commands must start with an uppercase letter"
msgstr "" msgstr "E183: Les commandes utilisateur doivent commencer par une majuscule"
"E183: Les commandes utilisateur doivent commencer par une majuscule"
#, c-format #, c-format
msgid "E184: No such user-defined command: %s" msgid "E184: No such user-defined command: %s"
@ -1487,11 +1511,10 @@ msgstr "Pas de fichier d'
msgid "Append File" msgid "Append File"
msgstr "Ajouter fichier" 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)" msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
msgstr "" msgstr ""
"E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! " "E747: Tampon modifié : impossible de changer de répertoire (ajoutez ! pour "
"pour passer outre)" "passer outre)"
msgid "E186: No previous directory" msgid "E186: No previous directory"
msgstr "E186: Pas de répertoire précédent" msgstr "E186: Pas de répertoire précédent"
@ -1555,8 +1578,7 @@ msgid "E496: no autocommand buffer number to substitute for \"<abuf>\""
msgstr "E496: Aucun numéro de tampon d'autocommande à substituer à \"<abuf>\"" msgstr "E496: Aucun numéro de tampon d'autocommande à substituer à \"<abuf>\""
msgid "E497: no autocommand match name to substitute for \"<amatch>\"" msgid "E497: no autocommand match name to substitute for \"<amatch>\""
msgstr "" msgstr "E497: Aucune correspondance d'autocommande à substituer à \"<amatch>\""
"E497: Aucune correspondance d'autocommande à substituer à \"<amatch>\""
msgid "E498: no :source file name to substitute for \"<sfile>\"" msgid "E498: no :source file name to substitute for \"<sfile>\""
msgstr "E498: Aucun nom de fichier :source à substituer à \"<sfile>\"" msgstr "E498: Aucun nom de fichier :source à substituer à \"<sfile>\""
@ -1664,12 +1686,15 @@ msgstr "E601: Imbrication de :try trop importante"
msgid "E603: :catch without :try" msgid "E603: :catch without :try"
msgstr "E603: :catch sans :try" msgstr "E603: :catch sans :try"
#. Give up for a ":catch" after ":finally" and ignore it.
#. * Just parse.
msgid "E604: :catch after :finally" msgid "E604: :catch after :finally"
msgstr "E604: :catch après :finally" msgstr "E604: :catch après :finally"
msgid "E606: :finally without :try" msgid "E606: :finally without :try"
msgstr "E606: :finally sans :try" msgstr "E606: :finally sans :try"
#. Give up for a multiple ":finally" and ignore it.
msgid "E607: multiple :finally" msgid "E607: multiple :finally"
msgstr "E607: Il ne peut y avoir qu'un seul :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" msgid "E193: :endfunction not inside a function"
msgstr "E193: :endfunction en dehors d'une fonction" 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 # DB - TODO : Pas compris le message ni comment le déclencher malgré une visite
# dans le code. # dans le code.
msgid "tagname" msgid "tagname"
@ -1754,6 +1782,7 @@ msgstr "Vim: Lecture de stdin...\n"
msgid "Reading from stdin..." msgid "Reading from stdin..."
msgstr "Lecture de stdin..." msgstr "Lecture de stdin..."
#. Re-opening the original file failed!
msgid "E202: Conversion made file unreadable!" msgid "E202: Conversion made file unreadable!"
msgstr "E202: La conversion a rendu le fichier illisible !" 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)" msgstr "est en lecture seule (ajoutez ! pour passer outre)"
msgid "E506: Can't write to backup file (add ! to override)" msgid "E506: Can't write to backup file (add ! to override)"
msgstr "" msgstr "E506: Impossible d'écrire la copie de secours (! pour passer outre)"
"E506: Impossible d'écrire la copie de secours (! pour passer outre)"
msgid "E507: Close error for backup file (add ! to override)" msgid "E507: Close error for backup file (add ! to override)"
msgstr "" msgstr "E507: Erreur de fermeture de la copie de secours (! pour passer outre)"
"E507: Erreur de fermeture de la copie de secours (! pour passer outre)"
msgid "E508: Can't read file for backup (add ! to override)" msgid "E508: Can't read file for backup (add ! to override)"
msgstr "" msgstr ""
"E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! " "E508: Impossible de lire le fichier pour la copie de secours (ajoutez ! pour "
"pour passer outre)" "passer outre)"
msgid "E509: Cannot create backup file (add ! to override)" msgid "E509: Cannot create backup file (add ! to override)"
msgstr "" msgstr ""
@ -1963,6 +1990,9 @@ msgstr "[noeol]"
msgid "[Incomplete last line]" msgid "[Incomplete last line]"
msgstr "[Dernière ligne incomplète]" 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!!!" msgid "WARNING: The file has been changed since reading it!!!"
msgstr "ALERTE: Le fichier a été modifié depuis que Vim l'a lu !" msgstr "ALERTE: Le fichier a été modifié depuis que Vim l'a lu !"
@ -2044,6 +2074,7 @@ msgstr "--Effac
msgid "auto-removing autocommand: %s <buffer=%d>" msgid "auto-removing autocommand: %s <buffer=%d>"
msgstr "Autocommandes marquées pour auto-suppression : %s <tampon=%d>" msgstr "Autocommandes marquées pour auto-suppression : %s <tampon=%d>"
#. the group doesn't exist
#, c-format #, c-format
msgid "E367: No such group: \"%s\"" msgid "E367: No such group: \"%s\""
msgstr "E367: Aucun groupe \"%s\"" msgstr "E367: Aucun groupe \"%s\""
@ -2356,11 +2387,11 @@ msgstr "Chercher une cha
msgid "Find & Replace (use '\\\\' to find a '\\')" msgid "Find & Replace (use '\\\\' to find a '\\')"
msgstr "Chercher et remplacer (utilisez '\\\\' pour trouver un '\\')" 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 # 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 # paramétrage bidon afin de sélectionner un répertoire plutôt qu'un
# fichier. # 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" msgid "Not Used"
msgstr "Non utilisé" msgstr "Non utilisé"
@ -2434,6 +2465,7 @@ msgstr "Choisir une police - Vim"
msgid "Name:" msgid "Name:"
msgstr "Nom :" msgstr "Nom :"
#. create toggle button
msgid "Show size in Points" msgid "Show size in Points"
msgstr "Afficher la taille en Points" msgstr "Afficher la taille en Points"
@ -2516,8 +2548,7 @@ msgstr ""
"E674: 'printmbcharset' ne peut pas être vide avec un encodage multi-octets" "E674: 'printmbcharset' ne peut pas être vide avec un encodage multi-octets"
msgid "E675: No default font specified for multi-byte printing." msgid "E675: No default font specified for multi-byte printing."
msgstr "" msgstr "E675: Aucune police par défaut pour l'impression multi-octets"
"E675: Aucune police par défaut pour l'impression multi-octets"
msgid "E324: Can't open PostScript output file" msgid "E324: Can't open PostScript output file"
msgstr "E324: Impossible d'ouvrir le fichier PostScript de sortie" msgstr "E324: Impossible d'ouvrir le fichier PostScript de sortie"
@ -2627,8 +2658,7 @@ msgstr "E567: Aucune connexion cscope"
# DB - todo # DB - todo
#, c-format #, c-format
msgid "E259: no matches found for cscope query %s of %s" msgid "E259: no matches found for cscope query %s of %s"
msgstr "" msgstr "E259: aucune correspondance trouvée pour la requête cscope %s de %s"
"E259: aucune correspondance trouvée pour la requête cscope %s de %s"
#, c-format #, c-format
msgid "E469: invalid cscopequickfix flag %c for %c" msgid "E469: invalid cscopequickfix flag %c for %c"
@ -2663,6 +2693,7 @@ msgstr "E261: Connexion cscope %s introuvable"
msgid "cscope connection %s closed" msgid "cscope connection %s closed"
msgstr "connexion cscope %s fermée" msgstr "connexion cscope %s fermée"
#. should not reach here
msgid "E570: fatal error in cs_manage_matches" msgid "E570: fatal error in cs_manage_matches"
msgstr "E570: erreur fatale dans cs_manage_matches" msgstr "E570: erreur fatale dans cs_manage_matches"
@ -2817,12 +2848,33 @@ msgstr "<fen
msgid "no such window" msgid "no such window"
msgstr "Cette fenêtre n'existe pas" 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 "" msgid ""
"E266: Sorry, this command is disabled, the Ruby library could not be loaded." "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
msgstr "" msgstr ""
"E266: Désolé, commande désactivée : la bibliothèque Ruby n'a pas pu être " "E266: Désolé, commande désactivée : la bibliothèque Ruby n'a pas pu être "
"chargée." "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 # DB - todo
#, c-format #, c-format
msgid "E273: unknown longjmp status %d" msgid "E273: unknown longjmp status %d"
@ -3047,6 +3099,7 @@ msgstr "Vim: Alerte: La sortie ne s'effectue pas sur un terminal\n"
msgid "Vim: Warning: Input is not from a terminal\n" msgid "Vim: Warning: Input is not from a terminal\n"
msgstr "Vim: Alerte: L'entrée ne se fait pas sur un terminal\n" msgstr "Vim: Alerte: L'entrée ne se fait pas sur un terminal\n"
#. just in case..
msgid "pre-vimrc command line" msgid "pre-vimrc command line"
msgstr "ligne de commande pre-vimrc" msgstr "ligne de commande pre-vimrc"
@ -3095,7 +3148,8 @@ msgstr ""
# DB - todo (VMS uniquement). # DB - todo (VMS uniquement).
msgid "where case is ignored prepend / to make flag upper case" msgid "where case is ignored prepend / to make flag upper case"
msgstr "" 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 "" msgid ""
"\n" "\n"
@ -3123,7 +3177,8 @@ msgstr "-g\t\tLancer l'interface graphique (comme \"gvim\")"
msgid "-f or --nofork\tForeground: Don't fork when starting GUI" msgid "-f or --nofork\tForeground: Don't fork when starting GUI"
msgstr "" 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\")" msgid "-v\t\t\tVi mode (like \"vi\")"
msgstr "-v\t\tMode Vi (comme \"vi\")" msgstr "-v\t\tMode Vi (comme \"vi\")"
@ -3278,7 +3333,8 @@ msgstr "--remote-send <tche>\tEnvoyer <touches>
msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result" msgid "--remote-expr <expr>\tEvaluate <expr> in a Vim server and print result"
msgstr "" msgstr ""
"--remote-expr <expr>\tÉvaluer <expr> dans un serveur Vim, afficher le résultat" "--remote-expr <expr>\tÉvaluer <expr> dans un serveur Vim, afficher le "
"résultat"
msgid "--serverlist\t\tList available Vim server names and exit" msgid "--serverlist\t\tList available Vim server names and exit"
msgstr "" msgstr ""
@ -3312,7 +3368,7 @@ msgstr ""
msgid "" msgid ""
"\n" "\n"
"Arguments recognised by gvim (Athena version) :\n" "Arguments recognised by gvim (Athena version):\n"
msgstr "" msgstr ""
"\n" "\n"
"Arguments reconnus par gvim (version Athena) :\n" "Arguments reconnus par gvim (version Athena) :\n"
@ -3394,8 +3450,7 @@ msgstr ""
"-display <display>\tLancer Vim sur ce <display>\t(également : --display)" "-display <display>\tLancer Vim sur ce <display>\t(également : --display)"
msgid "--role <role>\tSet a unique role to identify the main window" msgid "--role <role>\tSet a unique role to identify the main window"
msgstr "" msgstr "--role <rôle>\tDonner un rôle pour identifier la fenêtre principale"
"--role <rôle>\tDonner un rôle pour identifier la fenêtre principale"
msgid "--socketid <xid>\tOpen Vim inside another GTK widget" msgid "--socketid <xid>\tOpen Vim inside another GTK widget"
msgstr "--socketid <xid>\tOuvrir Vim dans un autre widget GTK" msgstr "--socketid <xid>\tOuvrir Vim dans un autre widget GTK"
@ -3504,7 +3559,8 @@ msgstr "E288: la m
msgid "E289: input method doesn't support my preedit type" msgid "E289: input method doesn't support my preedit type"
msgstr "" 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 # DB - todo
msgid "E290: over-the-spot style requires fontset" 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." "Maybe no changes were made or Vim did not update the swap file."
msgstr "" msgstr ""
"\n" "\n"
"Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à jour " "Il est possible qu'aucune modif. n'a été faite ou que Vim n'a pas mis à "
" le fichier d'échange." "jour le fichier d'échange."
msgid " cannot be used with this version of Vim.\n" msgid " cannot be used with this version of Vim.\n"
msgstr " ne peut pas être utilisé avec cette version de Vim.\n" msgstr " ne peut pas être utilisé avec cette version de Vim.\n"
@ -3651,7 +3707,8 @@ msgstr "E311: R
msgid "" msgid ""
"E312: Errors detected while recovering; look for lines starting with ???" "E312: Errors detected while recovering; look for lines starting with ???"
msgstr "" 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." msgid "See \":help E312\" for more information."
msgstr "Consultez \":help E312\" pour plus d'information." msgstr "Consultez \":help E312\" pour plus d'information."
@ -3954,6 +4011,8 @@ msgstr "E331: Ajout d'
msgid "E332: Separator cannot be part of a menu path" msgid "E332: Separator cannot be part of a menu path"
msgstr "E332: Un séparateur ne peut faire partie d'un chemin de menu" 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 "" msgid ""
"\n" "\n"
"--- Menus ---" "--- Menus ---"
@ -4048,6 +4107,7 @@ msgstr "Enregistrer un fichier"
msgid "Open File dialog" msgid "Open File dialog"
msgstr "Ouvrir un fichier" msgstr "Ouvrir un fichier"
#. TODO: non-GUI file selector here
msgid "E338: Sorry, no file browser in console mode" msgid "E338: Sorry, no file browser in console mode"
msgstr "E338: Désolé, pas de sélecteur de fichiers en mode console" msgstr "E338: Désolé, pas de sélecteur de fichiers en mode console"
@ -4089,6 +4149,7 @@ msgstr "Bip !"
msgid "Vim: preserving files...\n" msgid "Vim: preserving files...\n"
msgstr "Vim: préservation des fichiers...\n" msgstr "Vim: préservation des fichiers...\n"
#. close all memfiles, without deleting
msgid "Vim: Finished.\n" msgid "Vim: Finished.\n"
msgstr "Vim: Fini.\n" msgstr "Vim: Fini.\n"
@ -4175,6 +4236,7 @@ msgstr "E346: Plus de r
msgid "E347: No more file \"%s\" found in path" msgid "E347: No more file \"%s\" found in path"
msgstr "E347: Plus de fichier \"%s\" dans 'path'" msgstr "E347: Plus de fichier \"%s\" dans 'path'"
#. Get here when the server can't be found.
msgid "Cannot connect to Netbeans #2" msgid "Cannot connect to Netbeans #2"
msgstr "Impossible de se connecter à Netbeans n°2" msgstr "Impossible de se connecter à Netbeans n°2"
@ -4184,7 +4246,8 @@ msgstr "Impossible de se connecter
#, c-format #, c-format
msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\"" msgid "E668: Wrong access mode for NetBeans connection info file: \"%s\""
msgstr "" 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(). # DB : message d'un appel à perror().
msgid "read from Netbeans socket" 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é" msgstr "E748: Aucun registre n'a été précédemment utilisé"
# DB - Question O/N. # DB - Question O/N.
#. must display the prompt
msgid "cannot yank; delete anyway" msgid "cannot yank; delete anyway"
msgstr "impossible de réaliser une copie ; effacer tout de même" msgstr "impossible de réaliser une copie ; effacer tout de même"
@ -4291,6 +4355,7 @@ msgstr "%ld lignes copi
msgid "E353: Nothing in register %s" msgid "E353: Nothing in register %s"
msgstr "E353: Le registre %s est vide" msgstr "E353: Le registre %s est vide"
#. Highlight title
msgid "" msgid ""
"\n" "\n"
"--- Registers ---" "--- Registers ---"
@ -4327,8 +4392,8 @@ msgid ""
"Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld " "Selected %s%ld of %ld Lines; %ld of %ld Words; %ld of %ld Chars; %ld of %ld "
"Bytes" "Bytes"
msgstr "" msgstr ""
"%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; " "%s%ld sur %ld Lignes ; %ld sur %ld Mots ; %ld sur %ld Caractères ; %ld sur "
"%ld sur %ld octets sélectionnés" "%ld octets sélectionnés"
#, c-format #, c-format
msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld" msgid "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Byte %ld of %ld"
@ -4339,8 +4404,9 @@ msgstr ""
msgid "" msgid ""
"Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of " "Col %s of %s; Line %ld of %ld; Word %ld of %ld; Char %ld of %ld; Byte %ld of "
"%ld" "%ld"
msgstr "Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; " msgstr ""
"Caractère %ld sur %ld ; Octet %ld sur %ld" "Colonne %s sur %s ; Ligne %ld sur %ld ; Mot %ld sur %ld ; Caractère %ld sur "
"%ld ; Octet %ld sur %ld"
#, c-format #, c-format
msgid "(+%ld for BOM)" msgid "(+%ld for BOM)"
@ -4352,9 +4418,8 @@ msgstr "%<%f%h%m%=Page %N"
msgid "Thanks for flying Vim" msgid "Thanks for flying Vim"
msgstr "Merci d'avoir choisi Vim" msgstr "Merci d'avoir choisi Vim"
# DB - Espace final car Vim peut ajouter ": <informations>" à la suite
msgid "E518: Unknown option" msgid "E518: Unknown option"
msgstr "E518: Option inconnue " msgstr "E518: Option inconnue"
msgid "E519: Option not supported" msgid "E519: Option not supported"
msgstr "E519: Option non supportée" msgstr "E519: Option non supportée"
@ -4376,8 +4441,7 @@ msgid "E529: Cannot set 'term' to empty string"
msgstr "E529: 'term' ne doit pas être une chaîne vide" msgstr "E529: 'term' ne doit pas être une chaîne vide"
msgid "E530: Cannot change term in GUI" msgid "E530: Cannot change term in GUI"
msgstr "" msgstr "E530: Impossible de modifier term dans l'interface graphique"
"E530: Impossible de modifier term dans l'interface graphique"
msgid "E531: Use \":gui\" to start the GUI" msgid "E531: Use \":gui\" to start the GUI"
msgstr "E531: Utilisez \":gui\" pour démarrer l'interface graphique" msgstr "E531: Utilisez \":gui\" pour démarrer l'interface graphique"
@ -4553,15 +4617,11 @@ msgstr "ANCHOR_BUF_SIZE trop petit."
msgid "I/O ERROR" msgid "I/O ERROR"
msgstr "ERREUR d'E/S" msgstr "ERREUR d'E/S"
msgid "...(truncated)"
msgstr "...(tronqué)"
msgid "Message" msgid "Message"
msgstr "Message" msgstr "Message"
msgid "'columns' is not 80, cannot execute external commands" msgid "'columns' is not 80, cannot execute external commands"
msgstr "" msgstr "'columns' ne vaut pas 80, impossible d'exécuter des commandes externes"
"'columns' ne vaut pas 80, impossible d'exécuter des commandes externes"
msgid "E237: Printer selection failed" msgid "E237: Printer selection failed"
msgstr "E237: La sélection de l'imprimante a échoué" msgstr "E237: La sélection de l'imprimante a échoué"
@ -5000,6 +5060,16 @@ msgstr "E388: Impossible de trouver la d
msgid "E389: Couldn't find pattern" msgid "E389: Couldn't find pattern"
msgstr "E389: Impossible de trouver le motif" 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" msgid "E759: Format error in spell file"
msgstr "E759: Erreur de format du fichier orthographique" msgstr "E759: Erreur de format du fichier orthographique"
@ -5064,7 +5134,7 @@ msgstr "La conversion dans %s non support
#, c-format #, c-format
msgid "Conversion in %s not supported" msgid "Conversion in %s not supported"
msgstr "La conversion dans %s non supportée" msgstr "La conversion dans %s non supportée"
#, c-format #, c-format
msgid "Invalid value for FLAG in %s line %d: %s" msgid "Invalid value for FLAG in %s line %d: %s"
@ -5074,6 +5144,22 @@ msgstr "Valeur de FLAG invalide dans %s ligne %d : %s"
msgid "FLAG after using flags in %s line %d: %s" msgid "FLAG after using flags in %s line %d: %s"
msgstr "FLAG trouvé après des drapeaux dans %s ligne %d : %s" 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 #, c-format
msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s" msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
msgstr "Valeur de COMPOUNDWORDMAX erronée dans %s ligne %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 " "Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST in %s "
"line %d: %s" "line %d: %s"
msgstr "" msgstr ""
"Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/NOSUGGEST " "Affixe aussi utilisée pour BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND/"
"dans %s ligne %d : %s" "NOSUGGEST dans %s ligne %d : %s"
#, c-format #, c-format
msgid "Expected Y or N in %s line %d: %s" msgid "Expected Y or N in %s line %d: %s"
@ -5118,13 +5204,6 @@ msgstr "Y ou N attendu dans %s ligne %d : %s"
msgid "Broken condition in %s line %d: %s" msgid "Broken condition in %s line %d: %s"
msgstr "Condition non valide dans %s ligne %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 #, c-format
msgid "Expected REP(SAL) count in %s line %d" msgid "Expected REP(SAL) count in %s line %d"
msgstr "Nombre de REP(SAL) attendu dans %s ligne %d" msgstr "Nombre de REP(SAL) attendu dans %s ligne %d"
@ -5248,8 +5327,10 @@ msgstr "%d noeuds compress
msgid "Reading back spell file..." msgid "Reading back spell file..."
msgstr "Relecture du fichier orthographique" msgstr "Relecture du fichier orthographique"
#.
#. * Go through the trie of good words, soundfold each word and add it to #. * Go through the trie of good words, soundfold each word and add it to
#. * the soundfold trie. #. * the soundfold trie.
#.
msgid "Performing soundfolding..." msgid "Performing soundfolding..."
msgstr "Analyse phonétique en cours..." msgstr "Analyse phonétique en cours..."
@ -5313,6 +5394,7 @@ msgstr "D
msgid "Sorry, only %ld suggestions" msgid "Sorry, only %ld suggestions"
msgstr "Désolé, seulement %ld suggestions" msgstr "Désolé, seulement %ld suggestions"
#. avoid more prompt
#, c-format #, c-format
msgid "Change \"%.*s\" to:" msgid "Change \"%.*s\" to:"
msgstr "Remplacer \"%.*s\" par :" msgstr "Remplacer \"%.*s\" par :"
@ -5594,6 +5676,7 @@ msgstr " Utilisation d'un marqueur avec une casse diff
msgid "E429: File \"%s\" does not exist" msgid "E429: File \"%s\" does not exist"
msgstr "E429: Le fichier \"%s\" n'existe pas" msgstr "E429: Le fichier \"%s\" n'existe pas"
#. Highlight title
msgid "" msgid ""
"\n" "\n"
" # TO tag FROM line in file/text" " # TO tag FROM line in file/text"
@ -5654,6 +5737,7 @@ msgstr "E436: Aucune entr
msgid "E437: terminal capability \"cm\" required" msgid "E437: terminal capability \"cm\" required"
msgstr "E437: capacité de terminal \"cm\" requise" msgstr "E437: capacité de terminal \"cm\" requise"
#. Highlight title
msgid "" msgid ""
"\n" "\n"
"--- Terminal keys ---" "--- Terminal keys ---"
@ -5668,6 +5752,7 @@ msgid "Vim: Error reading input, exiting...\n"
msgstr "Vim: Erreur lors de la lecture de l'entrée, sortie...\n" msgstr "Vim: Erreur lors de la lecture de l'entrée, sortie...\n"
# DB - Question O/N. # DB - Question O/N.
#. must display the prompt
msgid "No undo possible; continue anyway" msgid "No undo possible; continue anyway"
msgstr "Annulation impossible ; continuer" msgstr "Annulation impossible ; continuer"
@ -5719,6 +5804,10 @@ msgstr "Rien
msgid "number changes time" msgid "number changes time"
msgstr "numéro modif. instant" msgstr "numéro modif. instant"
#, c-format
msgid "%ld seconds ago"
msgstr "il y a %ld secondes"
msgid "E439: undo list corrupt" msgid "E439: undo list corrupt"
msgstr "E439: la liste d'annulation est corrompue" msgstr "E439: la liste d'annulation est corrompue"
@ -6031,6 +6120,9 @@ msgstr "ALERTE: Windows 95/98/ME d
msgid "type :help windows95<Enter> for info on this" msgid "type :help windows95<Enter> for info on this"
msgstr "tapez :help windows95<Entrée> pour plus d'information" msgstr "tapez :help windows95<Entrée> 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" msgid "E441: There is no preview window"
msgstr "E441: Il n'y a pas de fenêtre de prévisualisation" 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
msgid "E444: Cannot close last window" msgid "E444: Cannot close last window"
msgstr "E444: Impossible de fermer la dernière fenêtre" 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" msgid "E445: Other window contains changes"
msgstr "E445: Les modifications de l'autre fenêtre n'ont pas été enregistrées" 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" msgid "Edit with &Vim"
msgstr "Éditer dans &Vim" msgstr "Éditer dans &Vim"
#. Now concatenate
msgid "Edit with existing Vim - " msgid "Edit with existing Vim - "
msgstr "Éditer dans le Vim existant - " msgstr "Éditer dans le Vim existant - "
@ -6088,8 +6178,8 @@ msgstr "
# DB - MessageBox win32, la longueur n'est pas un problème ! # DB - MessageBox win32, la longueur n'est pas un problème !
msgid "Error creating process: Check if gvim is in your path!" msgid "Error creating process: Check if gvim is in your path!"
msgstr "" msgstr ""
"Erreur de création du processus : " "Erreur de création du processus : vérifiez que gvim est bien dans votre "
"vérifiez que gvim est bien dans votre chemin !" "chemin !"
msgid "gvimext.dll error" msgid "gvimext.dll error"
msgstr "Erreur de gvimext.dll" msgstr "Erreur de gvimext.dll"
@ -6102,6 +6192,10 @@ msgstr "Le chemin est trop long !"
msgid "--No lines in buffer--" msgid "--No lines in buffer--"
msgstr "--Le tampon est vide--" 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" msgid "E470: Command aborted"
msgstr "E470: Commande annulée" msgstr "E470: Commande annulée"
@ -6338,7 +6432,8 @@ msgstr "E46: La variable \"%s\" est en lecture seule"
#, c-format #, c-format
msgid "E46: Cannot set variable in the sandbox: \"%s\"" 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" msgid "E47: Error while reading errorfile"
msgstr "E47: Erreur lors de la lecture du fichier d'erreurs" msgstr "E47: Erreur lors de la lecture du fichier d'erreurs"
@ -6429,7 +6524,7 @@ msgstr "E682: D
msgid "E139: File is loaded in another buffer" msgid "E139: File is loaded in another buffer"
msgstr "E139: Le fichier est chargé dans un autre tampon" msgstr "E139: Le fichier est chargé dans un autre tampon"
#,c-format #, c-format
msgid "E764: Option '%s' is not set" msgid "E764: Option '%s' is not set"
msgstr "E764: L'option '%s' n'est pas activée" msgstr "E764: L'option '%s' n'est pas activée"

View File

@ -5096,8 +5096,8 @@ msgid "E397: Filename required"
msgstr "E397: Nome file necessario" msgstr "E397: Nome file necessario"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Manca ']': %s" msgstr "E789: Manca ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5109,8 +5109,8 @@ msgid "E397: Filename required"
msgstr "E397: ファイル名が必要です" msgstr "E397: ファイル名が必要です"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: ']' がありません: %s" msgstr "E789: ']' がありません: %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5109,8 +5109,8 @@ msgid "E397: Filename required"
msgstr "E397: ファイル名が必要です" msgstr "E397: ファイル名が必要です"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: ']' がありません: %s" msgstr "E789: ']' がありません: %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5101,8 +5101,8 @@ msgid "E397: Filename required"
msgstr "E397: Wymagana nazwa pliku" msgstr "E397: Wymagana nazwa pliku"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Brak ']': %s" msgstr "E789: Brak ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5101,8 +5101,8 @@ msgid "E397: Filename required"
msgstr "E397: Wymagana nazwa pliku" msgstr "E397: Wymagana nazwa pliku"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Brak ']': %s" msgstr "E789: Brak ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5101,8 +5101,8 @@ msgid "E397: Filename required"
msgstr "E397: Wymagana nazwa pliku" msgstr "E397: Wymagana nazwa pliku"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Brak ']': %s" msgstr "E789: Brak ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -4871,8 +4871,8 @@ msgid "E397: Filename required"
msgstr "E397: Vyžadovaný názov súboru" msgstr "E397: Vyžadovaný názov súboru"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Chýba ']': %s" msgstr "E789: Chýba ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -4871,8 +4871,8 @@ msgid "E397: Filename required"
msgstr "E397: Vy¾adovaný názov súboru" msgstr "E397: Vy¾adovaný názov súboru"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Chýba ']': %s" msgstr "E789: Chýba ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5066,8 +5066,8 @@ msgid "E397: Filename required"
msgstr "E397: Filnamn krävs" msgstr "E397: Filnamn krävs"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: Saknar ']': %s" msgstr "E789: Saknar ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5056,8 +5056,8 @@ msgid "E397: Filename required"
msgstr "E397: 需要文件名称" msgstr "E397: 需要文件名称"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: 缺少 ']': %s" msgstr "E789: 缺少 ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5056,8 +5056,8 @@ msgid "E397: Filename required"
msgstr "E397: 需要文件名称" msgstr "E397: 需要文件名称"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: ȱÉÙ ']': %s" msgstr "E789: ȱÉÙ ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -5056,8 +5056,8 @@ msgid "E397: Filename required"
msgstr "E397: 需要文件名称" msgstr "E397: 需要文件名称"
#, c-format #, c-format
msgid "E747: Missing ']': %s" msgid "E789: Missing ']': %s"
msgstr "E747: ȱÉÙ ']': %s" msgstr "E789: ȱÉÙ ']': %s"
#, c-format #, c-format
msgid "E398: Missing '=': %s" msgid "E398: Missing '=': %s"

View File

@ -30,7 +30,7 @@ static int pum_col; /* left column of pum */
static int pum_do_redraw = FALSE; /* do redraw anyway */ 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_HEIGHT 10
#define PUM_DEF_WIDTH 15 #define PUM_DEF_WIDTH 15
@ -59,6 +59,7 @@ pum_display(array, size, selected)
int height; int height;
int col; int col;
int above_row = cmdline_row; int above_row = cmdline_row;
int redo_count = 0;
redo: redo:
def_width = PUM_DEF_WIDTH; def_width = PUM_DEF_WIDTH;
@ -209,8 +210,9 @@ redo:
pum_size = size; pum_size = size;
/* Set selected item and redraw. If the window size changed need to redo /* Set selected item and redraw. If the window size changed need to redo
* the positioning. */ * the positioning. Limit this to two times, when there is not much
if (pum_set_selected(selected)) * room the window size will keep changing. */
if (pum_set_selected(selected, redo_count) && ++redo_count <= 2)
goto redo; goto redo;
} }
@ -338,12 +340,17 @@ pum_get_selected()
/* /*
* Set the index of the currently selected item. The menu will scroll when * Set the index of the currently selected item. The menu will scroll when
* necessary. When "n" is out of range don't scroll. * 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 * Returns TRUE when the window was resized and the location of the popup menu
* must be recomputed. * must be recomputed.
*/ */
static int static int
pum_set_selected(n) pum_set_selected(n, repeat)
int n; int n;
int repeat;
{ {
int resized = FALSE; int resized = FALSE;
int context = pum_height / 2; 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 * Show extra info in the preview window if there is something and
* 'completeopt' contains "preview". * '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! * NOTE: Be very careful not to sync undo!
*/ */
if (pum_array[pum_selected].pum_info != NULL 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; win_T *curwin_save = curwin;
int res = OK; int res = OK;
@ -470,12 +481,15 @@ pum_set_selected(n)
/* Increase the height of the preview window to show the /* Increase the height of the preview window to show the
* text, but no more than 'previewheight' lines. */ * text, but no more than 'previewheight' lines. */
if (lnum > p_pvh) if (repeat == 0)
lnum = p_pvh;
if (curwin->w_height < lnum)
{ {
win_setheight((int)lnum); if (lnum > p_pvh)
resized = TRUE; lnum = p_pvh;
if (curwin->w_height < lnum)
{
win_setheight((int)lnum);
resized = TRUE;
}
} }
curbuf->b_changed = 0; curbuf->b_changed = 0;

View File

@ -4528,7 +4528,7 @@ syn_cmd_keyword(eap, syncing)
break; break;
if (p[1] == NUL) if (p[1] == NUL)
{ {
EMSG2(_("E747: Missing ']': %s"), kw); EMSG2(_("E789: Missing ']': %s"), kw);
kw = p + 2; /* skip over the NUL */ kw = p + 2; /* skip over the NUL */
break; break;
} }
@ -6329,9 +6329,9 @@ init_highlight(both, reset)
* depend on the number of colors available. */ * depend on the number of colors available. */
if (t_colors > 8) if (t_colors > 8)
do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey" do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey"
: "Visual ctermbg=DarkGrey"), reset, TRUE); : "Visual ctermbg=DarkGrey"), FALSE, TRUE);
else else
do_highlight((char_u *)"Visual cterm=reverse", reset, TRUE); do_highlight((char_u *)"Visual cterm=reverse", FALSE, TRUE);
#ifdef FEAT_SYN_HL #ifdef FEAT_SYN_HL
/* /*

View File

@ -3356,7 +3356,6 @@ expand_tag_fname(fname, tag_fname, expand)
xpc.xp_context = EXPAND_FILES; xpc.xp_context = EXPAND_FILES;
expanded_fname = ExpandOne(&xpc, (char_u *)fname, NULL, expanded_fname = ExpandOne(&xpc, (char_u *)fname, NULL,
WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE); WILD_LIST_NOTFOUND|WILD_SILENT, WILD_EXPAND_FREE);
ExpandCleanup(&xpc);
if (expanded_fname != NULL) if (expanded_fname != NULL)
fname = expanded_fname; fname = expanded_fname;
} }

View File

@ -35,6 +35,6 @@
*/ */
#define VIM_VERSION_NODOT "vim70e" #define VIM_VERSION_NODOT "vim70e"
#define VIM_VERSION_SHORT "7.0e" #define VIM_VERSION_SHORT "7.0e"
#define VIM_VERSION_MEDIUM "7.0e03 BETA" #define VIM_VERSION_MEDIUM "7.0e04 BETA"
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19)" #define VIM_VERSION_LONG "VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0e03 BETA (2006 Apr 19, compiled " #define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0e04 BETA (2006 Apr 20, compiled "