changeset 844:d3bbb5dd3913 v7.0f02

updated for version 7.0f02
author vimboss
date Thu, 27 Apr 2006 00:02:13 +0000
parents 9f279ebda751
children 0fe7765dcb8e
files runtime/autoload/htmlcomplete.vim runtime/autoload/netrw.vim runtime/autoload/sqlcomplete.vim runtime/autoload/vimball.vim runtime/autoload/xml/html32.vim runtime/autoload/xml/html401f.vim runtime/autoload/xml/html401s.vim runtime/autoload/xml/html401t.vim runtime/autoload/xml/html40f.vim runtime/autoload/xml/html40s.vim runtime/autoload/xml/html40t.vim runtime/autoload/xml/xhtml10f.vim runtime/autoload/xml/xhtml10s.vim runtime/autoload/xml/xhtml10t.vim runtime/autoload/xml/xhtml11.vim runtime/doc/eval.txt runtime/doc/insert.txt runtime/doc/options.txt runtime/doc/pi_netrw.txt runtime/doc/sql.txt runtime/doc/syntax.txt runtime/doc/tabpage.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt runtime/ftplugin/debchangelog.vim runtime/ftplugin/html.vim runtime/ftplugin/sql.vim runtime/indent/make.vim runtime/plugin/vimballPlugin.vim runtime/syntax/baan.vim runtime/syntax/smcl.vim runtime/syntax/stata.vim runtime/syntax/vim.vim src/Make_mvc.mak src/buffer.c src/edit.c src/eval.c src/ex_docmd.c src/feature.h src/fileio.c src/getchar.c src/gui.c src/gui.h src/gui_gtk_x11.c src/gui_motif.c src/gui_w48.c src/normal.c src/ops.c src/os_mswin.c src/proto/buffer.pro src/proto/charset.pro src/proto/getchar.pro src/proto/normal.pro src/proto/ops.pro src/spell.c src/syntax.c src/version.h src/vim.h
diffstat 59 files changed, 3044 insertions(+), 658 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -127,8 +127,6 @@ function! htmlcomplete#CompleteTags(find
     let res2 = []
 	" a:base is very short - we need context
 	let context = b:compl_context
-	let g:ab = a:base
-	let g:co = context
 	" Check if we should do CSS completion inside of <style> tag
 	" or JS completion inside of <script> tag or PHP completion in case of <?
 	" tag AND &ft==php
@@ -155,6 +153,9 @@ function! htmlcomplete#CompleteTags(find
 	if exists("b:entitiescompl")
 		unlet! b:entitiescompl
 
+		if !exists("b:html_doctype")
+			call htmlcomplete#CheckDoctype()
+		endif
 		if !exists("b:html_omni")
 			"runtime! autoload/xml/xhtml10s.vim
 			call htmlcomplete#LoadData()
@@ -500,7 +501,10 @@ function! htmlcomplete#CompleteTags(find
 		let sbase = matchstr(context, '.*\ze\s.*')
 
 		" Load data {{{
-		if !exists("b:html_omni_gen")
+		if !exists("b:html_doctype")
+			call htmlcomplete#CheckDoctype()
+		endif
+		if !exists("b:html_omni")
 			call htmlcomplete#LoadData()
 		endif
 		" }}}
@@ -526,18 +530,31 @@ function! htmlcomplete#CompleteTags(find
 				if has_key(b:html_omni['vimxmlattrinfo'], item)
 					let m_menu = b:html_omni['vimxmlattrinfo'][item][0]
 					let m_info = b:html_omni['vimxmlattrinfo'][item][1]
-					if m_menu !~ 'Bool'
-						let item .= '="'
-					endif
 				else
 					let m_menu = ''
 					let m_info = ''
+				endif
+				if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+					let item = item
+					let m_menu = 'Bool'
+				else
 					let item .= '="'
 				endif
 				let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
 			endfor
 		else
-			let final_menu = map(menu, 'v:val."=\""')
+			let final_menu = []
+			for i in range(len(menu))
+				let item = menu[i]
+				if len(b:html_omni[tag][1][item]) > 0 && b:html_omni[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+					let item = item
+				else
+					let item .= '="'
+				endif
+				let final_menu += [item]
+			endfor
+			return final_menu
+
 		endif
 		return final_menu
 
@@ -555,6 +572,9 @@ function! htmlcomplete#CompleteTags(find
 	endif
 	" }}}
 	" Load data {{{
+	if !exists("b:html_doctype")
+		call htmlcomplete#CheckDoctype()
+	endif
 	if !exists("b:html_omni")
 		"runtime! autoload/xml/xhtml10s.vim
 		call htmlcomplete#LoadData()
@@ -585,7 +605,7 @@ function! htmlcomplete#CompleteTags(find
 		let context = tolower(context)
 	endif
 	" Handle XML keywords: DOCTYPE and CDATA.
-	if opentag == '' || opentag ==? 'head'
+	if opentag == ''
 		let tags += [
 				\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">',
 				\ '!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">',
@@ -610,7 +630,6 @@ function! htmlcomplete#CompleteTags(find
 		endif
 	endfor
 	let menu = res + res2
-	let g:me = menu
 	if has_key(b:html_omni, 'vimxmltaginfo')
 		let final_menu = []
 		for i in range(len(menu))
@@ -656,24 +675,83 @@ function! htmlcomplete#LoadData() " {{{
 		exe 'let b:html_omni = g:xmldata_'.b:html_omni_flavor
 	else
 		exe 'runtime! autoload/xml/'.b:html_omni_flavor.'.vim'
-	endif
-	" This repetition is necessary because we don't know if
-	" b:html_omni_flavor file exists and was sourced
-	" Proper checking for files would require iterating through 'rtp'
-	" and could introduce OS dependent mess.
-	if !exists("g:xmldata_".b:html_omni_flavor)
-		if &filetype == 'html'
-			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
 endfunction
 " }}}
+function! htmlcomplete#CheckDoctype() " {{{
+	if exists('b:html_omni_flavor')
+		let old_flavor = b:html_omni_flavor
+	else
+		let old_flavor = ''
+	endif
+	let i = 1
+	while i < 10 && i < line("$")
+		let line = getline(i)
+		if line =~ '<!DOCTYPE.*\<DTD HTML 3\.2'
+			let b:html_omni_flavor = 'html32'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Transitional'
+			let b:html_omni_flavor = 'html40t'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0 Frameset'
+			let b:html_omni_flavor = 'html40f'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.0'
+			let b:html_omni_flavor = 'html40s'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Transitional'
+			let b:html_omni_flavor = 'html401t'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01 Frameset'
+			let b:html_omni_flavor = 'html401f'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD HTML 4\.01'
+			let b:html_omni_flavor = 'html401s'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Transitional'
+			let b:html_omni_flavor = 'xhtml10t'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Frameset'
+			let b:html_omni_flavor = 'xhtml10f'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.0 Strict'
+			let b:html_omni_flavor = 'xhtml10s'
+			let b:html_doctype = 1
+			break
+		elseif line =~ '<!DOCTYPE.*\<DTD XHTML 1\.1'
+			let b:html_omni_flavor = 'xhtml11'
+			let b:html_doctype = 1
+			break
+		endif
+		let i += 1
+	endwhile
+	if !exists("b:html_doctype")
+		return
+	else
+		" Tie g:xmldata with b:html_omni this way we need to sourca data file only
+		" once, not every time per buffer.
+		if old_flavor == b:html_omni_flavor
+			return
+		else
+			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
+			return
+		endif
+	endif
+endfunction
+" }}}
 " vim:set foldmethod=marker:
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Apr 24, 2006
-" Version:	93
+" Date:		Apr 26, 2006
+" Version:	94
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v93"
+let g:loaded_netrw = "v94"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -142,7 +142,7 @@ if !exists("g:netrw_list_cmd")
   " provide a default listing command
   let g:netrw_list_cmd= g:netrw_ssh_cmd." HOSTNAME ls -FLa"
  else
-"  call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring)
+"  call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring")
   let g:netrw_list_cmd= ""
  endif
 endif
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,8 +1,12 @@
-" Vim completion script
+" Vim OMNI completion script for SQL
 " Language:    SQL
 " Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     3.0
-" Last Change: Thu Apr 20 2006 8:47:12 PM
+" Version:     4.0
+" Last Change: Wed Apr 26 2006 3:00:06 PM
+" Usage:       For detailed help
+"              ":help sql.txt" 
+"              or ":help ft-sql-omni" 
+"              or read $VIMRUNTIME/doc/sql.txt
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
@@ -18,7 +22,7 @@ endif
 if exists('g:loaded_sql_completion')
     finish 
 endif
-let g:loaded_sql_completion = 30
+let g:loaded_sql_completion = 40
 
 " Maintains filename of dictionary
 let s:sql_file_table        = ""
@@ -93,9 +97,14 @@ function! sqlcomplete#Complete(findstart
     " be replaced by whatever is chosen from the completion list
     if a:findstart
         " Locate the start of the item, including "."
-        let line = getline('.')
-        let start = col('.') - 1
+        let line     = getline('.')
+        let start    = col('.') - 1
         let lastword = -1
+        let begindot = 0
+        " Check if the first character is a ".", for column completion
+        if line[start - 1] == '.'
+            let begindot = 1
+        endif
         while start > 0
             if line[start - 1] =~ '\w'
                 let start -= 1
@@ -104,18 +113,19 @@ function! sqlcomplete#Complete(findstart
                 " If lastword has already been set for column completion
                 " break from the loop, since we do not also want to pickup
                 " a table name if it was also supplied.
-                if lastword != -1 && compl_type =~ 'column'
+                if lastword != -1 && compl_type == 'column'
                     break
                 endif
-                " Assume we are looking for column completion
-                " column_type can be either 'column' or 'column_csv'
-                if lastword == -1 && compl_type =~ 'column'
+                " If column completion was specified stop at the "." if
+                " a . was specified, otherwise, replace all the way up
+                " to the owner name (if included).
+                if lastword == -1 && compl_type == 'column' && begindot == 1
                     let lastword = start
                 endif
                 " If omni_sql_include_owner = 0, do not include the table
                 " name as part of the substitution, so break here
                 if lastword == -1 && 
-                            \ compl_type =~ 'table\|view\|procedure' && 
+                            \ compl_type =~ 'table\|view\|procedure\column_csv' && 
                             \ g:omni_sql_include_owner == 0
                     let lastword = start
                     break
@@ -234,6 +244,11 @@ function! sqlcomplete#Complete(findstart
         let s:tbl_cols  = []
         let s:syn_list  = []
         let s:syn_value = []
+
+        let msg = "All SQL cached items have been removed."
+        call s:SQLCWarningMsg(msg)
+        " Leave time for the user to read the error message
+        :sleep 2
     else
         let compl_list = s:SQLCGetSyntaxList(compl_type)
     endif
@@ -252,18 +267,6 @@ function! sqlcomplete#Complete(findstart
     return compl_list
 endfunc
 
-function! s:SQLCWarningMsg(msg)
-    echohl WarningMsg
-    echomsg a:msg 
-    echohl None
-endfunction
-      
-function! s:SQLCErrorMsg(msg)
-    echohl ErrorMsg
-    echomsg a:msg 
-    echohl None
-endfunction
-      
 function! sqlcomplete#PreCacheSyntax(...)
     let syn_group_arr = []
     if a:0 > 0 
@@ -294,6 +297,51 @@ function! sqlcomplete#Map(type)
     let &omnifunc='sqlcomplete#Complete'
 endfunction
 
+function! sqlcomplete#DrillIntoTable()
+    " If the omni popup window is visible
+    if pumvisible()
+        call sqlcomplete#Map('column')
+        " C-Y, makes the currently highlighted entry active
+        " and trigger the omni popup to be redisplayed
+        call feedkeys("\<C-Y>\<C-X>\<C-O>")
+    else
+        if has('win32')
+            " If the popup is not visible, simple perform the normal
+            " <C-Right> behaviour
+            exec "normal! \<C-Right>"
+        endif
+    endif
+    return ""
+endfunction
+
+function! sqlcomplete#DrillOutOfColumns()
+    " If the omni popup window is visible
+    if pumvisible()
+        call sqlcomplete#Map('tableReset')
+        " Trigger the omni popup to be redisplayed
+        call feedkeys("\<C-X>\<C-O>")
+    else
+        if has('win32')
+            " If the popup is not visible, simple perform the normal
+            " <C-Left> behaviour
+            exec "normal! \<C-Left>"
+        endif
+    endif
+    return ""
+endfunction
+
+function! s:SQLCWarningMsg(msg)
+    echohl WarningMsg
+    echomsg a:msg 
+    echohl None
+endfunction
+      
+function! s:SQLCErrorMsg(msg)
+    echohl ErrorMsg
+    echomsg a:msg 
+    echohl None
+endfunction
+      
 function! s:SQLCGetSyntaxList(syn_group)
     let syn_group  = a:syn_group
     let compl_list = []
@@ -347,7 +395,8 @@ function! s:SQLCCheck4dbext()
 endfunction
 
 function! s:SQLCAddAlias(table_name, table_alias, cols)
-    let table_name  = a:table_name
+    " Strip off the owner if included
+    let table_name  = matchstr(a:table_name, '\%(.\{-}\.\)\?\zs\(.*\)' )
     let table_alias = a:table_alias
     let cols        = a:cols
 
@@ -373,7 +422,7 @@ function! s:SQLCAddAlias(table_name, tab
                     " Restore original value
                     let &iskeyword = save_keyword
                 elseif table_name =~ '\u\U'
-                    let initials = substitute(
+                    let table_alias = substitute(
                                 \ table_name, '\(\u\)\U*', '\1', 'g')
                 else
                     let table_alias = strpart(table_name, 0, 1)
@@ -397,6 +446,7 @@ endfunction
 
 function! s:SQLCGetColumns(table_name, list_type)
     let table_name   = matchstr(a:table_name, '^\w\+')
+    let table_name   = matchstr(a:table_name, '^[a-zA-Z0-9_.]\+')
     let table_cols   = []
     let table_alias  = ''
     let move_to_top  = 1
@@ -480,7 +530,9 @@ function! s:SQLCGetColumns(table_name, l
                          \ 'from.\{-}'.
                          \ '\zs\(\(\<\w\+\>\)\.\)\?'.
                          \ '\<\w\+\>\ze'.
-                         \ '\s\+\%(as\s\+\)\?\<'.table_name.'\>'.
+                         \ '\s\+\%(as\s\+\)\?\<'.
+                         \ matchstr(table_name, '.\{-}\ze\.\?$').
+                         \ '\>'.
                          \ '\s*\.\@!.*'.
                          \ '\(\<where\>\|$\)'.
                          \ '.*'
@@ -544,9 +596,12 @@ function! s:SQLCGetColumns(table_name, l
         exec 'DBSetOption use_tbl_alias='.saveSettingAlias
     endif
 
+    " If the user has asked for a comma separate list of column
+    " values, ask the user if they want to prepend each column
+    " with a tablename alias.
     if a:list_type == 'csv' && !empty(table_cols)
-        let cols = join(table_cols, ', ')
-        let cols = s:SQLCAddAlias(table_name, table_alias, cols)
+        let cols       = join(table_cols, ', ')
+        let cols       = s:SQLCAddAlias(table_name, table_alias, cols)
         let table_cols = [cols]
     endif
 
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
 " vimball : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" Date:   Apr 25, 2006
-" Version: 8
+" Date:   Apr 26, 2006
+" Version: 9
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -15,7 +15,7 @@ if &cp || exists("g:loaded_vimball")
  finish
 endif
 let s:keepcpo        = &cpo
-let g:loaded_vimball = "v8"
+let g:loaded_vimball = "v9"
 set cpo&vim
 
 " =====================================================================
@@ -40,12 +40,25 @@ fun! vimball#MkVimball(line1,line2,write
   endif
 
   " user option bypass
-  let eikeep= &ei
-  set ei=all
+  let eikeep  = &ei
+  let acdkeep = &acd
+  set ei=all noacd
 
-  let home   = substitute(&rtp,',.*$','','')
+  " go to vim plugin home
+  for home in split(&rtp,',') + ['']
+   if isdirectory(home) | break | endif
+  endfor
+  if home == ""
+   let home= substitute(&rtp,',.*$','','')
+  endif
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   let home= substitute(home,'/','\\','ge')
+  endif
+"  call Decho("home<".home.">")
+
+  " save current directory
   let curdir = getcwd()
-  exe "cd ".home
+  call s:ChgDir(home)
 
   " record current tab, initialize while loop index
   let curtabnr = tabpagenr()
@@ -58,8 +71,9 @@ fun! vimball#MkVimball(line1,line2,write
  
    if !filereadable(svfile)
     echohl Error | echo "unable to read file<".svfile.">" | echohl None
-    let &ei= eikeep
-    exe "cd ".curdir
+	call s:ChgDir(curdir)
+    let &ei  = eikeep
+    let &acd = acdkeep
 "    call Dret("MkVimball")
     return
    endif
@@ -82,7 +96,12 @@ fun! vimball#MkVimball(line1,line2,write
    endif
    call setline(lastline  ,svfile)
    call setline(lastline+1,0)
-   exe "$r ".svfile
+
+   " write the file from the tab
+   let svfilepath= s:Path(svfile,'')
+"   call Decho("exe $r ".svfilepath)
+   exe "$r ".svfilepath
+
    call setline(lastline+1,line("$") - lastline - 1)
 "   call Decho("lastline=".lastline." line$=".line("$"))
 
@@ -93,11 +112,15 @@ fun! vimball#MkVimball(line1,line2,write
 
   " write the vimball
   exe "tabn ".vbtabnr
-  exe "cd ".curdir
+  call s:ChgDir(curdir)
   if a:writelevel
-   exe "w! ".vbname
+   let vbnamepath= s:Path(vbname,'')
+"   call Decho("exe w! ".vbnamepath)
+   exe "w! ".vbnamepath
   else
-   exe "w ".vbname
+   let vbnamepath= s:Path(vbname,'')
+"   call Decho("exe w ".vbnamepath)
+   exe "w ".vbnamepath
   endif
 "  call Decho("Vimball<".vbname."> created")
   echo "Vimball<".vbname."> created"
@@ -108,7 +131,8 @@ fun! vimball#MkVimball(line1,line2,write
   exe "tabc ".vbtabnr
 
   " restore options
-  let &ei= eikeep
+  let &ei  = eikeep
+  let &acd = acdkeep
 
 "  call Dret("MkVimball")
 endfun
@@ -125,13 +149,14 @@ fun! vimball#Vimball(really)
   endif
 
   " initialize
+  let acdkeep  = &acd
   let fenkeep  = &fen
   let regakeep = @a
   let eikeep   = &ei
   let vekeep   = &ve
   let makeep   = getpos("'a")
   let curtabnr = tabpagenr()
-  set ei=all ve=all nofen
+  set ei=all ve=all nofen noacd
 
   " set up vimball tab
   tabnew
@@ -140,10 +165,21 @@ fun! vimball#Vimball(really)
   let didhelp= ""
 
   " go to vim plugin home
-  let home   = substitute(&rtp,',.*$','','')
+  for home in split(&rtp,',') + ['']
+   if isdirectory(home) | break | endif
+  endfor
+  if home == ""
+   let home= substitute(&rtp,',.*$','','')
+  endif
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   let home= substitute(home,'/','\\','ge')
+  endif
+"  call Decho("home<".home.">")
+
+  " save current directory
   let curdir = getcwd()
-"  call Decho("exe cd ".home)
-  exe "cd ".home
+  call s:ChgDir(home)
+
   let linenr  = 4
   let filecnt = 0
 
@@ -174,35 +210,36 @@ fun! vimball#Vimball(really)
 "   call Decho("making directories if they don't exist yet")
    let fnamebuf= fname
    while fnamebuf =~ '/'
-   	let dirname  = substitute(fnamebuf,'/.*$','','e')
+   	let dirname  = home."/".substitute(fnamebuf,'/.*$','','e')
    	let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e')
 	if !isdirectory(dirname)
 "	 call Decho("making <".dirname.">")
 	 call mkdir(dirname)
 	endif
-	exe "cd ".dirname
    endwhile
-   exe "cd ".home
+   call s:ChgDir(home)
 
    " grab specified qty of lines and place into "a" buffer
    " (skip over path/filename and qty-lines)
    let linenr   = linenr + 2
    let lastline = linenr + fsize - 1
 "   call Decho("exe ".linenr.",".lastline."yank a")
-   exe linenr.",".lastline."yank a"
+   exe "silent ".linenr.",".lastline."yank a"
 
    " copy "a" buffer into tab
 "   call Decho('copy "a buffer into tab#'.vbtabnr)
    exe "tabn ".vbtabnr
    silent! %d
-   put a
+   silent put a
    1
-   d
+   silent d
 
    " write tab to file
    if a:really
-"    call Decho("exe w! ".fname)
-    exe "silent w! ".fname
+    let fnamepath= s:Path(home."/".fname,'')
+"    call Decho("exe w! ".fnamepath)
+    exe "silent w! ".fnamepath
+    echo "wrote ".fnamepath
    endif
 
    " return to tab with vimball
@@ -225,9 +262,10 @@ fun! vimball#Vimball(really)
   " set up help
 "  call Decho("about to set up help: didhelp<".didhelp.">")
   if didhelp != ""
-"   call Decho("exe helptags ".home."/".didhelp)
-   exe "helptags ".home."/".didhelp
-   echomsg "did helptags"
+   let htpath= escape(substitute(s:Path(home."/".didhelp,'"'),'"','','ge'),' ')
+"   call Decho("exe helptags ".htpath)
+   exe "helptags ".htpath
+   echo "did helptags"
   endif
 
   " make sure a "Press ENTER..." prompt appears to keep the messages showing!
@@ -244,13 +282,14 @@ fun! vimball#Vimball(really)
   let &ei  = eikeep
   let @a   = regakeep
   let &fen = fenkeep
+  let &acd = acdkeep
   if makeep[0] != 0
    " restore mark a
 "   call Decho("restore mark-a: makeep=".string(makeep))
    call setpos("'a",makeep)
    ka
   endif
-  exe "cd ".curdir
+  call s:ChgDir(curdir)
 
 "  call Dret("Vimball")
 endfun
@@ -264,23 +303,65 @@ fun! vimball#Decompress(fname)
   if     expand("%") =~ '.*\.gz'  && executable("gunzip")
    exe "!gunzip ".a:fname
    let fname= substitute(a:fname,'\.gz$','','')
-   exe "e ".fname
-   echohl WarningMsg | echo "Source this file to extract it! (:so ".fname.")" | echohl None
+   exe "e ".escape(fname,' \')
+   call vimball#ShowMesg("Source this file to extract it! (:so %)")
   elseif expand("%") =~ '.*\.bz2' && executable("bunzip2")
    exe "!bunzip2 ".a:fname
    let fname= substitute(a:fname,'\.bz2$','','')
-   exe "e ".fname
-   echohl WarningMsg | echo "Source this file to extract it! (:so ".fname.")" | echohl None
+   exe "e ".escape(fname,' \')
+   call vimball#ShowMesg("Source this file to extract it! (:so %)")
   elseif expand("%") =~ '.*\.zip' && executable("unzip")
    exe "!unzip ".a:fname
    let fname= substitute(a:fname,'\.zip$','','')
-   exe "e ".fname
-   echohl WarningMsg | echo "Source this file to extract it! (:so ".fname.")" | echohl None
+   exe "e ".escape(fname,' \')
+   call vimball#ShowMesg("Source this file to extract it! (:so %)")
   endif
 
 "  call Dret("Decompress")
 endfun
 
+" ---------------------------------------------------------------------
+" ChgDir: change directory (in spite of Windoze) {{{2
+fun! s:ChgDir(newdir)
+"  call Dfunc("ChgDir(newdir<".a:newdir.">)")
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+    exe 'silent cd '.escape(substitute(a:newdir,'/','\\','g'),' ')
+  else
+   exe 'silent cd '.escape(a:newdir,' ')
+  endif
+"  call Dret("ChgDir")
+endfun
+
+" ---------------------------------------------------------------------
+" Path: {{{2
+fun! s:Path(cmd,quote)
+"  call Dfunc("Path(cmd<".a:cmd."> quote<".a:quote.">)")
+  if (has("win32") || has("win95") || has("win64") || has("win16"))
+   let cmdpath= a:quote.substitute(a:cmd,'/','\\','ge').a:quote
+  else
+   let cmdpath= a:quote.a:cmd.a:quote
+  endif
+  if a:quote == ""
+   let cmdpath= escape(cmdpath,' ')
+  endif
+"  call Dret("Path <".cmdpath.">")
+  return cmdpath
+endfun
+
+" ---------------------------------------------------------------------
+" vimball#ShowMesg: {{{2
+fun! vimball#ShowMesg(msg)
+"  call Dfunc("vimball#ShowMesg(msg<".a:msg.">)")
+  let ich= 1
+  echohl WarningMsg | echo a:msg | echohl None
+  while ich < &ch
+   echo " "
+   let ich= ich + 1
+  endwhile
+"  call Dret("vimball#ShowMesg")
+endfun
+
+" ---------------------------------------------------------------------
 let &cpo= s:keepcpo
 unlet s:keepcpo
 " =====================================================================
--- a/runtime/autoload/xml/html32.vim
+++ b/runtime/autoload/xml/html32.vim
@@ -2,7 +2,7 @@ let g:xmldata_html32 = {
 \ 'vimxmlentities': ['AElig', 'Aacute', 'Acirc', 'Agrave', 'Aring', 'Atilde', 'Auml', 'Ccedil', 'ETH', 'Eacute', 'Ecirc', 'Egrave', 'Euml', 'Iacute', 'Icirc', 'Igrave', 'Iuml', 'Ntilde', 'Oacute', 'Ocirc', 'Ograve', 'Oslash', 'Otilde', 'Ouml', 'THORN', 'Uacute', 'Ucirc', 'Ugrave', 'Uuml', 'Yacute', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'amp', 'aring', 'atilde', 'auml', 'brvbar', 'ccedil', 'cedil', 'cent', 'copy', 'curren', 'deg', 'divide', 'eacute', 'ecirc', 'egrave', 'eth', 'euml', 'frac12', 'frac14', 'frac34', 'gt', 'iacute', 'icirc', 'iexcl', 'igrave', 'iquest', 'iuml', 'laquo', 'lt', 'macr', 'micro', 'middot', 'nbsp', 'not', 'ntilde', 'oacute', 'ocirc', 'ograve', 'ordf', 'ordm', 'oslash', 'otilde', 'ouml', 'para', 'plusmn', 'pound', 'raquo', 'reg', 'sect', 'shy', 'sup1', 'sup2', 'sup3', 'szlig', 'thorn', 'times', 'uacute', 'ucirc', 'ugrave', 'uml', 'uuml', 'yacute', 'yen', 'yuml'],
 \ 'vimxmlroot': ['html'],
 \ 'a': [
-\ ['tt', 'i', 'b', 'u', 'strike', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'a', 'img', 'applet', 'font', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea'],
+\ ['tt', 'i', 'b', 'u', 'strike', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'img', 'applet', 'font', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea'],
 \ { 'rel': [], 'href': [], 'name': [], 'rev': [], 'title': []}
 \ ],
 \ 'address': [
@@ -94,7 +94,7 @@ let g:xmldata_html32 = {
 \ { 'size': [], 'color': []}
 \ ],
 \ 'form': [
-\ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'tt', 'i', 'b', 'u', 'strike', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'a', 'img', 'applet', 'font', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea', 'p', 'ul', 'ol', 'dir', 'menu', 'pre', 'xmp', 'listing', 'dl', 'div', 'center', 'blockquote', 'form', 'isindex', 'hr', 'table', 'address'],
+\ ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'tt', 'i', 'b', 'u', 'strike', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'a', 'img', 'applet', 'font', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea', 'p', 'ul', 'ol', 'dir', 'menu', 'pre', 'xmp', 'listing', 'dl', 'div', 'center', 'blockquote', 'isindex', 'hr', 'table', 'address'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'action': [], 'method': ['GET', 'POST']}
 \ ],
 \ 'h1': [
@@ -122,7 +122,7 @@ let g:xmldata_html32 = {
 \ { 'align': ['left', 'center', 'right']}
 \ ],
 \ 'head': [
-\ ['title', 'isindex', 'base'],
+\ ['title', 'isindex', 'base', 'script', 'style', 'meta', 'link'],
 \ { }
 \ ],
 \ 'hr': [
@@ -198,7 +198,7 @@ let g:xmldata_html32 = {
 \ { }
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'u', 'strike', 'big', 'small', 'sub', 'sup', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'a', 'img', 'applet', 'font', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea'],
+\ ['tt', 'i', 'b', 'u', 'strike', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'a', 'applet', 'basefont', 'br', 'script', 'map', 'input', 'select', 'textarea'],
 \ { 'width': ['#implied']}
 \ ],
 \ 'samp': [
@@ -206,7 +206,7 @@ let g:xmldata_html32 = {
 \ { }
 \ ],
 \ 'script': [
-\ [''],
+\ [],
 \ { }
 \ ],
 \ 'select': [
@@ -226,7 +226,7 @@ let g:xmldata_html32 = {
 \ { }
 \ ],
 \ 'style': [
-\ [''],
+\ [],
 \ { }
 \ ],
 \ 'sub': [
@@ -314,7 +314,7 @@ let g:xmldata_html32 = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html401f.vim
+++ b/runtime/autoload/xml/html401f.vim
@@ -1,8 +1,8 @@
-let g:xmldata_html401f = {
+let g:xmldata_html401t = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -50,7 +50,7 @@ let g:xmldata_html401f = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del'],
 \ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -58,7 +58,7 @@ let g:xmldata_html401f = {
 \ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -126,7 +126,7 @@ let g:xmldata_html401f = {
 \ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -154,7 +154,7 @@ let g:xmldata_html401f = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'head': [
-\ ['title', 'isindex', 'base'],
+\ ['title', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
@@ -202,7 +202,7 @@ let g:xmldata_html401f = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -262,7 +262,7 @@ let g:xmldata_html401f = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'width': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -279,7 +279,7 @@ let g:xmldata_html401f = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL'], 'language': []}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -303,7 +303,7 @@ let g:xmldata_html401f = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
@@ -398,7 +398,7 @@ let g:xmldata_html401f = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html401s.vim
+++ b/runtime/autoload/xml/html401s.vim
@@ -2,7 +2,7 @@ let g:xmldata_html401s = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'name': [], 'style': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -42,7 +42,7 @@ let g:xmldata_html401s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script', 'ins', 'del'],
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -50,7 +50,7 @@ let g:xmldata_html401s = {
 \ { 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -106,7 +106,7 @@ let g:xmldata_html401s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'hr', 'table', 'fieldset', 'address', 'script'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -134,7 +134,7 @@ let g:xmldata_html401s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'head': [
-\ ['title', 'base'],
+\ ['title', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
@@ -166,7 +166,7 @@ let g:xmldata_html401s = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -218,7 +218,7 @@ let g:xmldata_html401s = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -231,7 +231,7 @@ let g:xmldata_html401s = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL']}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL']}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -251,7 +251,7 @@ let g:xmldata_html401s = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
@@ -342,7 +342,7 @@ let g:xmldata_html401s = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html401t.vim
+++ b/runtime/autoload/xml/html401t.vim
@@ -2,7 +2,7 @@ let g:xmldata_html401t = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -50,7 +50,7 @@ let g:xmldata_html401t = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del'],
 \ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -58,7 +58,7 @@ let g:xmldata_html401t = {
 \ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -126,7 +126,7 @@ let g:xmldata_html401t = {
 \ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'accept': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -154,7 +154,7 @@ let g:xmldata_html401t = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'head': [
-\ ['title', 'isindex', 'base'],
+\ ['title', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
@@ -194,7 +194,7 @@ let g:xmldata_html401t = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -254,7 +254,7 @@ let g:xmldata_html401t = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'width': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -271,7 +271,7 @@ let g:xmldata_html401t = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL'], 'language': []}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -295,7 +295,7 @@ let g:xmldata_html401t = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
@@ -390,7 +390,7 @@ let g:xmldata_html401t = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html40f.vim
+++ b/runtime/autoload/xml/html40f.vim
@@ -1,8 +1,8 @@
-let g:xmldata_html40f = {
+let g:xmldata_html40t = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -50,7 +50,7 @@ let g:xmldata_html40f = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del'],
 \ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -58,7 +58,7 @@ let g:xmldata_html40f = {
 \ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -126,7 +126,7 @@ let g:xmldata_html40f = {
 \ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -154,17 +154,13 @@ let g:xmldata_html40f = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'head': [
-\ ['title', 'isindex', 'base'],
+\ ['title', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
 \ [],
 \ { 'width': [], 'ondblclick': [], 'size': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right'], 'style': [], 'onmousemove': [], 'onmouseout': [], 'noshade': ['BOOL'], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
-\ 'i': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
-\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
-\ ],
 \ 'html': [
 \ ['head', 'frameset'],
 \ { 'xmlns': ['http://www.w3.org/1999/xhtml'], 'dir': ['ltr', 'rtl'], 'id': [], 'lang': [], 'xml:lang': []}
@@ -177,6 +173,10 @@ let g:xmldata_html40f = {
 \ [],
 \ { 'scrolling': ['auto', 'yes', 'no', 'auto'], 'noresize': ['BOOL'], 'marginwidth': [], 'id': [], 'marginheight': [], 'longdesc': [], 'src': [], 'style': [], 'name': [], 'frameborder': ['1', '0'], 'title': [], 'class': []}
 \ ],
+\ 'i': [
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
+\ ],
 \ 'iframe': [
 \ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'width': [], 'scrolling': ['auto', 'yes', 'no', 'auto'], 'marginwidth': [], 'id': [], 'marginheight': [], 'align': ['top', 'middle', 'bottom', 'left', 'right'], 'longdesc': [], 'src': [], 'style': [], 'name': [], 'height': [], 'frameborder': ['1', '0'], 'title': [], 'class': []}
@@ -202,7 +202,7 @@ let g:xmldata_html40f = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -262,7 +262,7 @@ let g:xmldata_html40f = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'width': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -279,7 +279,7 @@ let g:xmldata_html40f = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL'], 'language': []}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -303,7 +303,7 @@ let g:xmldata_html40f = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
@@ -398,7 +398,7 @@ let g:xmldata_html40f = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html40s.vim
+++ b/runtime/autoload/xml/html40s.vim
@@ -2,7 +2,7 @@ let g:xmldata_html40s = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onkeydown': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'name': [], 'style': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -42,7 +42,7 @@ let g:xmldata_html40s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script', 'ins', 'del'],
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -50,7 +50,7 @@ let g:xmldata_html40s = {
 \ { 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -106,7 +106,7 @@ let g:xmldata_html40s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'form', 'hr', 'table', 'fieldset', 'address', 'script'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'pre', 'dl', 'div', 'noscript', 'blockquote', 'hr', 'table', 'fieldset', 'address', 'script'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -134,7 +134,7 @@ let g:xmldata_html40s = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'head': [
-\ ['title', 'base'],
+\ ['title', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
@@ -166,7 +166,7 @@ let g:xmldata_html40s = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -218,7 +218,7 @@ let g:xmldata_html40s = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -231,7 +231,7 @@ let g:xmldata_html40s = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL']}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL']}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -251,7 +251,7 @@ let g:xmldata_html40s = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'object', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'input', 'select', 'textarea', 'label', 'button'],
@@ -342,7 +342,7 @@ let g:xmldata_html40s = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/html40t.vim
+++ b/runtime/autoload/xml/html40t.vim
@@ -2,7 +2,7 @@ let g:xmldata_html40t = {
 \ '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', 'Tau', 'Theta', 'Uacute', 'Ucirc', 'Ugrave', 'Upsilon', 'Uuml', 'Xi', 'Yacute', 'Yuml', 'Zeta', 'aacute', 'acirc', 'acute', 'aelig', 'agrave', 'alefsym', 'alpha', 'amp', 'and', 'ang', 'apos', 'aring', 'asymp', 'atilde', 'auml', 'bdquo', 'beta', 'brvbar', 'bull', 'cap', 'ccedil', 'cedil', 'cent', 'chi', 'circ', 'clubs', 'cong', 'copy', 'crarr', 'cup', 'curren', 'dArr', 'dagger', 'darr', 'deg', 'delta', 'diams', 'divide', 'eacute', 'ecirc', 'egrave', 'empty', 'emsp', 'ensp', 'epsilon', 'equiv', 'eta', 'eth', 'euml', 'euro', 'exist', 'fnof', 'forall', 'frac12', 'frac14', 'frac34', 'frasl', 'gamma', 'ge', 'gt', 'hArr', 'harr', 'hearts', 'hellip', 'iacute', 'icirc', 'iexcl', 'igrave', 'image', 'infin', 'int', 'iota', 'iquest', 'isin', 'iuml', 'kappa', 'lArr', 'lambda', 'lang', 'laquo', 'larr', 'lceil', 'ldquo', 'le', 'lfloor', 'lowast', 'loz', 'lrm', 'lsaquo', 'lsquo', 'lt', 'macr', 'mdash', 'micro', 'middot', 'minus', 'mu', 'nabla', 'nbsp', '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', 'radic', 'rang', 'raquo', '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': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'rel': [], 'accesskey': [], 'coords': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'target': [], 'onkeyup': [], 'href': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'tabindex': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'name': [], 'charset': [], 'hreflang': [], 'onkeypress': [], 'onmousedown': [], 'rev': [], 'class': [], 'title': [], 'onclick': [], 'type': [], 'shape': ['rect', 'circle', 'poly', 'default']}
 \ ],
 \ 'abbr': [
@@ -50,7 +50,7 @@ let g:xmldata_html40t = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'cite': [], 'onmouseover': [], 'lang': [], 'style': [], 'onmousemove': [], 'onmouseout': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': []}
 \ ],
 \ 'body': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button', 'ins', 'del'],
 \ { 'vlink': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'alink': [], 'onkeyup': [], 'bgcolor': [], 'text': [], 'onmouseup': [], 'id': [], 'link': [], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'background': [], 'onunload': [], 'onkeypress': [], 'onmousedown': [], 'onload': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'br': [
@@ -58,7 +58,7 @@ let g:xmldata_html40t = {
 \ { 'clear': ['none', 'left', 'all', 'right', 'none'], 'id': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'button': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'hr', 'table', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo'],
 \ { 'accesskey': [], 'disabled': ['BOOL'], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onkeydown': [], 'onfocus': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'tabindex': [], 'value': [], 'name': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'type': ['submit', 'button', 'submit', 'reset']}
 \ ],
 \ 'caption': [
@@ -126,7 +126,7 @@ let g:xmldata_html40t = {
 \ { 'dir': ['ltr', 'rtl'], 'size': [], 'face': [], 'color': [], 'id': [], 'lang': [], 'style': [], 'class': [], 'title': []}
 \ ],
 \ 'form': [
-\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'form', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'ul', 'ol', 'dir', 'menu', 'pre', 'dl', 'div', 'center', 'noscript', 'noframes', 'blockquote', 'isindex', 'hr', 'table', 'fieldset', 'address', 'tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'enctype': ['application/x-www-form-urlencoded'], 'onsubmit': [], 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'target': [], 'onkeyup': [], 'onmouseup': [], 'onreset': [], 'id': [], 'method': ['GET', 'POST'], 'onmouseover': [], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'accept-charset': [], 'onkeypress': [], 'onmousedown': [], 'action': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'h1': [
@@ -154,7 +154,7 @@ let g:xmldata_html40t = {
 \ { 'ondblclick': [], 'dir': ['ltr', 'rtl'], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'align': ['left', 'center', 'right', 'justify'], 'lang': [], 'onmouseout': [], 'onmousemove': [], 'style': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': []}
 \ ],
 \ 'head': [
-\ ['title', 'isindex', 'base'],
+\ ['title', 'isindex', 'base', 'script', 'style', 'meta', 'link', 'object'],
 \ { 'profile': [], 'dir': ['ltr', 'rtl'], 'lang': []}
 \ ],
 \ 'hr': [
@@ -194,7 +194,7 @@ let g:xmldata_html40t = {
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'label': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'for': [], 'onkeypress': [], 'onmousedown': [], 'class': [], 'title': [], 'onclick': [], 'accesskey': [], 'dir': ['ltr', 'rtl'], 'onblur': [], 'onfocus': [], 'onmouseout': [], 'onmousemove': [], 'style': []}
 \ ],
 \ 'legend': [
@@ -254,7 +254,7 @@ let g:xmldata_html40t = {
 \ { 'id': [], 'value': [], 'name': [], 'type': [], 'valuetype': ['DATA', 'REF', 'OBJECT']}
 \ ],
 \ 'pre': [
-\ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
+\ ['tt', 'i', 'b', 'u', 's', 'strike', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'br', 'script', 'map', 'q', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
 \ { 'ondblclick': [], 'onkeydown': [], 'onkeyup': [], 'onmouseup': [], 'id': [], 'onmouseover': [], 'lang': [], 'onmousedown': [], 'onkeypress': [], 'onclick': [], 'title': [], 'class': [], 'width': [], 'dir': ['ltr', 'rtl'], 'style': [], 'onmousemove': [], 'onmouseout': []}
 \ ],
 \ 'q': [
@@ -271,7 +271,7 @@ let g:xmldata_html40t = {
 \ ],
 \ 'script': [
 \ [],
-\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': ['text/javascript'], 'defer': ['BOOL'], 'language': []}
+\ { 'src': [], 'for': [], 'charset': [], 'event': [], 'type': [], 'defer': ['BOOL'], 'language': []}
 \ ],
 \ 'select': [
 \ ['optgroup', 'option'],
@@ -295,7 +295,7 @@ let g:xmldata_html40t = {
 \ ],
 \ 'style': [
 \ [],
-\ { 'media': [], 'lang': [], 'type': ['text/css'], 'title': [], 'dir': ['ltr', 'rtl']}
+\ { 'media': [], 'lang': [], 'type': [], 'title': [], 'dir': ['ltr', 'rtl']}
 \ ],
 \ 'sub': [
 \ ['tt', 'i', 'b', 'u', 's', 'strike', 'big', 'small', 'em', 'strong', 'dfn', 'code', 'samp', 'kbd', 'var', 'cite', 'abbr', 'acronym', 'a', 'img', 'applet', 'object', 'font', 'basefont', 'br', 'script', 'map', 'q', 'sub', 'sup', 'span', 'bdo', 'iframe', 'input', 'select', 'textarea', 'label', 'button'],
@@ -390,7 +390,7 @@ let g:xmldata_html40t = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/xhtml10f.vim
+++ b/runtime/autoload/xml/xhtml10f.vim
@@ -398,7 +398,7 @@ let g:xmldata_xhtml10f = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/xhtml10s.vim
+++ b/runtime/autoload/xml/xhtml10s.vim
@@ -342,7 +342,7 @@ let g:xmldata_xhtml10s = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/xhtml10t.vim
+++ b/runtime/autoload/xml/xhtml10t.vim
@@ -390,7 +390,7 @@ let g:xmldata_xhtml10t = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/autoload/xml/xhtml11.vim
+++ b/runtime/autoload/xml/xhtml11.vim
@@ -366,7 +366,7 @@ let g:xmldata_xhtml11 = {
 \ 'height' : ['Number', ''],
 \ 'href' : ['*URI', ''],
 \ 'hreflang' : ['LangCode', ''],
-\ 'id' : ['ID', 'Unique string'],
+\ 'id' : ['ID', ''],
 \ 'ismap' : ['Bool', ''],
 \ 'label' : ['*Text', ''],
 \ 'lang' : ['LangCode', ''],
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0f.  Last change: 2006 Apr 25
+*eval.txt*      For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1184,6 +1184,9 @@ v:beval_text	The text under or after the
 v:beval_winnr	The number of the window, over which the mouse pointer is. Only
 		valid while evaluating the 'balloonexpr' option.
 
+					*v:char* *char-variable*
+v:char		Argument for evaluating 'formatexpr'.
+
 			*v:charconvert_from* *charconvert_from-variable*
 v:charconvert_from
 		The name of the character encoding of a file to be converted.
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0f.  Last change: 2006 Apr 25
+*insert.txt*    For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -610,6 +610,9 @@ Note: The keys that are valid in CTRL-X 
 ends CTRL-X mode (any key that is not a valid CTRL-X mode command) is mapped.
 Also, when doing completion with 'complete' mappings apply as usual.
 
+Note: While completion is active Insert mode can't be used recursively.
+Mappings that somehow invoke ":normal i.." will generate an E523 error.
+
 The following mappings are suggested to make typing the completion commands
 a bit easier (although they will hide other commands): >
     :inoremap ^] ^X^]
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0f.  Last change: 2006 Apr 25
+*options.txt*	For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2469,8 +2469,8 @@ A jump table for the options with a shor
 			{not available when compiled without the |+autocmd|
 			feature}
 	A list of autocommand event names, which are to be ignored.
-	When set to "all", all autocommand events are ignored, autocommands
-	will not be executed.
+	When set to "all" or when "all" is one of the items, all autocommand
+	events are ignored, autocommands will not be executed.
 	Otherwise this is a comma separated list of event names.  Example: >
 	    :set ei=WinEnter,WinLeave
 <
@@ -2987,9 +2987,13 @@ A jump table for the options with a shor
 			{not available when compiled without the |+eval|
 			feature}
 	Expression which is evaluated to format a range of lines for the |gq|
-	operator.  The |v:lnum| variable holds the first line to be formatted,
-	|v:count| the number of lines to be formatted.
-	When this option is empty 'formatprg' is used.
+	operator.  When this option is empty 'formatprg' is used.
+
+	The |v:lnum|  variable holds the first line to be formatted.
+	The |v:count| variable the number of lines to be formatted.
+	The |v:char|  variable the character to be inserted.  This can be
+		      empty.  Don't insert it yet!
+
 	Example: >
 		:set formatexpr=mylang#Format()
 <	This will invoke the mylang#Format() function in the
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,4 +1,4 @@
-*pi_netrw.txt*  For Vim version 7.0f.  Last change: Apr 22, 2006
+*pi_netrw.txt*  For Vim version 7.0f.  Last change: 2006 Apr 26
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
@@ -1473,6 +1473,11 @@ which is loaded automatically at startup
 ==============================================================================
 11. History						*netrw-history* {{{1
 
+	v94: * bugfix - a Decho() had a missing quote; only affects things
+	       when debugging was enabled.
+	v93: * bugfix - removed FocusGained event from causing a slow-browser
+	       refresh for Windows
+	v92: * :Explore **//pattern implemented  (**/filepattern already taken)
 	v91: * :Explore */pattern implemented
 	     * |'acd'| option bypassed
 	v90: * mark ', as suggested by Yegappan Lakshmanan, used to help
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   	For Vim version 7.0f.  Last change: Fri Apr 21 2006 10:39:11 PM
+*sql.txt*   	For Vim version 7.0f.  Last change: Wed Apr 26 2006 3:05:33 PM
 
 by David Fishburn
 
@@ -411,14 +411,16 @@ the space bar):
      Stored Procedure List  - <C-C>p
      View List              - <C-C>v
      Column List            - <C-C>c
-                            - Windows platform only
-                            - When viewing a popup window displaying the list
+
+     Windows platform only  - When viewing a popup window displaying the list
                               of tables, you can press <C-Right>, this will
                               replace the table currently highlighted with
                               the column list for that table.
                             - When viewing a popup window displaying the list
                               of columns, you can press <C-Left>, this will
                               replace the column list with the list of tables.
+                            - This allows you to quickly drill down into a
+                              table to view it's columns and back again.
  
 The SQL completion plugin caches various lists that are displayed in
 the popup window.  This makes the re-displaying of these lists very
@@ -500,9 +502,10 @@ NOTE: The following example uses <C-Righ
 the popup window is active.  This map is only available on the Windows
 platforms since *nix does not recognize CTRL and the right arrow held down
 together.  If you wish to enable this functionality on a *nix platform choose
-a key and create this mapping (see |sql-completion-maps| for further 
+a key and create one of these mappings (see |sql-completion-maps| for further
 details on where to create this imap): >
-    imap <buffer> <your_keystroke> <CR><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
+    imap <buffer> <your_keystroke> <C-R>=sqlcomplete#DrillIntoTable()<CR>
+    imap <buffer> <your_keystroke> <C-Y><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
  
 Example of using column completion:
      - Press <C-C>t again to display the list of tables.  
@@ -517,9 +520,8 @@ Example of using column completion:
        change the schema of a cached table you can press <C-C>R, which
        clears the SQL completion cache.  
      - NOTE: <C-Right> and <C-Left> have been designed to work while the
-       completion window is active.  If you use these maps when the completion
-       window is not active a carriage return will be inadvertently entered in
-       your buffer.
+       completion window is active.  If the completion popup window is 
+       not active, a normal <C-Right> or <C-Left> will be executed.
  
 Lets look how we can build a SQL statement dynamically.  A select statement
 requires a list of columns.  There are two ways to build a column list using
@@ -549,7 +551,7 @@ the SQL completion plugin. >
            replaced with the comma separate list of columns with the alias
            prepended to each of the columns.
         7. Step 3 and 4 can be replaced by pressing <C-C>L, which has
-           a <CR> embedded in the map to choose the currently highlighted 
+           a <C-Y> embedded in the map to choose the currently highlighted 
            table in the list.
 
 There is a special provision when writing select statements.  Consider the
@@ -687,15 +689,13 @@ plugin. >
           the completion window.  <C-Right> is not recognized on most Unix
           systems, so this maps is only created on the Windows platform.
           If you would like the same feature on Unix, choose a different key
-          and make the same map in your vimrc.
-          This should only be used when the completion window is active. >
+          and make the same map in your vimrc. >
     <C-Left>
 <       - Displays the list of tables.
           <C-Left> is not recognized on most Unix systems, so this maps is
           only created on the Windows platform.  If you would like the same
           feature on Unix, choose a different key and make the same map in
-          your vimrc.
-          This should only be used when the completion window is active. >
+          your vimrc. >
     <C-C>R
 <       - This maps removes all cached items and forces the SQL completion 
           to regenerate the list of items.
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0f.  Last change: 2006 Apr 24
+*syntax.txt*	For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -610,6 +610,39 @@ For Visual Basic use: >
 	:let g:filetype_asp = "aspvbs"
 
 
+BAAN 						    *baan.vim* *baan-syntax*
+
+The baan.vim gives syntax support for BaanC of release BaanIV upto SSA ERP LN
+for both 3 GL and 4 GL programming. Large number of standard defines/constants
+are supported.
+
+Some special violation of coding standards will be signalled when one specify
+in ones |.vimrc|: >
+	let baan_code_stds=1
+
+*baan-folding*
+
+Syntax folding can be enabled at various levels through the variables
+mentioned below (Set those in your |.vimrc|). The more complex folding on
+source blocks and SQL can be CPU intensive.
+
+To allow any folding and enable folding at function level use: >
+	let baan_fold=1
+Folding can be enabled at source block level as if, while, for ,... The
+indentation preceding the begin/end keywords has to match (spaces are not
+considered equal to a tab). >
+	let baan_fold_block=1
+Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO,
+SELECTEMPTY, ... The indentation preceding the begin/end keywords has to 
+match (spaces are not considered equal to a tab). >
+	let baan_fold_sql=1
+Note: Block folding can result in many small folds. It is suggested to |:set| 
+the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in
+.../after/syntax/baan.vim (see |after-directory|). Eg: >
+	set foldminlines=5
+	set foldnestmax=6
+
+
 BASIC			*basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax*
 
 Both Visual Basic and "normal" basic use the extension ".bas".	To detect
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0f.  Last change: 2006 Apr 25
+*tabpage.txt*   For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -52,6 +52,9 @@ A double click with the mouse in the non
 tab page.  It is placed left of the position of the click.  The first click
 may select another tab page first, causing an extra screen update.
 
+This also works in a few GUI versions, esp. Win32 and Motif.  But only when
+clicking right of the labels.
+
 In the GUI tab pages line you can use the right mouse button to open menu.
 |tabline-menu|.
 
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4509,6 +4509,9 @@ b:changedtick-variable	eval.txt	/*b:chan
 b:current_syntax-variable	syntax.txt	/*b:current_syntax-variable*
 b:netrw_lastfile	pi_netrw.txt	/*b:netrw_lastfile*
 b:var	eval.txt	/*b:var*
+baan-folding	syntax.txt	/*baan-folding*
+baan-syntax	syntax.txt	/*baan-syntax*
+baan.vim	syntax.txt	/*baan.vim*
 backslash	intro.txt	/*backslash*
 backspace	intro.txt	/*backspace*
 backspace-delete	version4.txt	/*backspace-delete*
@@ -4677,6 +4680,7 @@ changelog.vim	syntax.txt	/*changelog.vim
 changenr()	eval.txt	/*changenr()*
 changetick	eval.txt	/*changetick*
 changing	change.txt	/*changing*
+char-variable	eval.txt	/*char-variable*
 char2nr()	eval.txt	/*char2nr()*
 characterwise	motion.txt	/*characterwise*
 characterwise-register	change.txt	/*characterwise-register*
@@ -7441,6 +7445,7 @@ v:beval_col	eval.txt	/*v:beval_col*
 v:beval_lnum	eval.txt	/*v:beval_lnum*
 v:beval_text	eval.txt	/*v:beval_text*
 v:beval_winnr	eval.txt	/*v:beval_winnr*
+v:char	eval.txt	/*v:char*
 v:charconvert_from	eval.txt	/*v:charconvert_from*
 v:charconvert_to	eval.txt	/*v:charconvert_to*
 v:cmdarg	eval.txt	/*v:cmdarg*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0f.  Last change: 2006 Apr 25
+*todo.txt*      For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,8 +30,6 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-GTK: when executing shell disable tab page labels. (Sean)
-
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
 Darren Hiebert is including the patch for omni completion in ctags.  A new
@@ -50,6 +48,7 @@ 9   Mac unicode patch (Da Woon Jung, Eck
     - remove 'macatsui' option when this has been fixed.
 9   HTML indenting can be slow.  Caused by using searchpair().  Can search()
     be used instead?
+8   Win32: Add minidump generation. (George Reilly, 2006 Apr 24)
 8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
     Aric Blumer has a patch for this.
     He will update the patch for 6.3.
@@ -627,6 +626,9 @@ 8   On MS-Windows ":make" doesn't show o
     Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
     Briscoe says it's not as good.
 8   "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
+8   When doing Insert mode completion a mapping cannot recursively call
+    edit(), because the completion information is global.  Put everything in
+    an allocated structure?
 8   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
     ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
 7   Output for ":scriptnames" and ":breaklist" should shorten the file names:
@@ -1403,6 +1405,11 @@ 8   Should support "me" offset for a reg
 8   When using a regexp for "contains=", should delay matching with it until
     redrawing happens.  Set a flag when a group is added, check this flag when
     highlighting starts.
+7   It's possible for an item to be transparent, so that the colors of an item
+    lower on the stack is used.  Also do this with highlighting, so that the
+    user can set transparent highlighting?  E.g. a number in a C comment would
+    get the color of a comment, a number in an assignment Normal. (Nikolai
+    Weibull)
 7   Add "semitrans": Add highlighting.  E.g., make the text bold, but keep the
     colors.  And add colors, so that Green+Red becomes Yellow.
     E.g. for this html:
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0f.  Last change: 2006 Apr 25
+*version7.txt*  For Vim version 7.0f.  Last change: 2006 Apr 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2616,4 +2616,50 @@ Win32: The height of the tab page labels
 
 Win32: selecting the tab label was off by one. (Yegappan Lakshmanan)
 
+Added tooltips for Motif tab page labels. (Yegappan Lakshmanan)
+
+When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and
+the file was not converted from latin1 to utf-8.  Now retry with latin1 if
+reading the file as utf-8 results in illegal bytes.
+
+Escape argument of feedkeys() before putting it in the typeahead buffer.
+(Yukihiro Nakadaira)
+
+Add v:char variable for evaluating 'formatexpr'.  (Yukihiro Nakadaira)
+
+With 8 colors Search highlighting combined with Statement highlighted text
+made the text disappear.
+
+VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy)
+
+When 'virtualedit' includes "onemore", stopping Visual selection would still
+move the cursor left.
+
+Prevent that using CTRL-R = in Insert mode can start Visual mode.
+
+Fixed a crash that occured when in Insert mode with completion active a
+mapping caused edit() to be called recursively.
+
+When using CTRL-O in Insert mode just after the last character while
+'virtualedit' is "all", then typing CR moved the last character to the next
+line.  Call coladvance() before starting the new line.
+
+When using ":shell" and in the command line window ignore clicks on the tab
+page labels.
+
+When 'eventignore' is "all" then ignoring some events, e.g., for ":vimgrep",
+would actually trigger more events.
+
+Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname"
+doesn't find it.  When looking for a server name that doesn't end in a digit
+and it is not found then use another server that is found (just like Unix).
+
+When using "double" in 'spellsuggest' when the language doesn't support sound
+folding resulted in too many suggestions.
+
+Win32: Dropping a shortcut on the Vim icon did't edit the referred file like
+editing it in another way would.  Use fname_expand() in buf_set_name() instead
+of simply make the file name a full path.
+
+
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/ftplugin/debchangelog.vim
+++ b/runtime/ftplugin/debchangelog.vim
@@ -1,7 +1,9 @@
-" Vim filetype plugin file
+" Vim filetype plugin file (GUI menu and folding)
 " Language:	Debian Changelog
 " Maintainer:	Michael Piefel <piefel@informatik.hu-berlin.de>
-" Last Change:	15 August 2005
+"		Stefano Zacchiroli <zack@debian.org>
+" Last Change:	25 April 2006
+" License:	GNU GPL, version 2.1 or later
 
 if exists("g:did_changelog_ftplugin")
   finish
@@ -10,6 +12,8 @@ endif
 " Don't load another plugin (this is global)
 let g:did_changelog_ftplugin = 1
 
+" {{{1 GUI menu
+
 " Helper functions returning various data.
 " Returns full name, either from $DEBFULLNAME or debianfullname.
 " TODO Is there a way to determine name from anywhere else?
@@ -204,3 +208,47 @@ augroup END
 setlocal tw=78
 setlocal comments=f:* 
 let b:undo_ftplugin = "setlocal tw< comments<"
+
+" }}}
+" {{{1 folding
+
+setlocal foldmethod=expr
+set foldexpr=GetDebChangelogFold(v:lnum)
+setlocal foldtext=DebChangelogFoldText()
+
+" look for an author name searching backward from a given line number
+function! s:getAuthor(lnum)
+  let line = getline(a:lnum)
+  let backsteps = 0
+  while line !~ '^ --'
+    let backsteps += 1
+    let line = getline(a:lnum - backsteps)
+  endwhile
+  let author = substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '')
+  return author
+endfunction
+
+function! DebChangelogFoldText()
+  if v:folddashes == '-'  " changelog entry fold
+    return foldtext() . ' -- ' . s:getAuthor(v:foldend) . ' '
+  endif
+  return foldtext()
+endfunction
+
+function! GetDebChangelogFold(lnum)
+  let line = getline(a:lnum)
+  if line =~ '^\w\+'
+    return '>1' " beginning of a changelog entry
+  endif
+  if line =~ '^\s\+\[.*\]'
+    return '>2' " beginning of an author-specific chunk
+  endif
+  if line =~ '^ --'
+    return '1'
+  endif
+  return '='
+endfunction
+
+" }}}
+
+" vim: set foldmethod=marker:
--- a/runtime/ftplugin/html.vim
+++ b/runtime/ftplugin/html.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	html
 " Maintainer:	Dan Sharp <dwsharp at hotmail dot com>
-" Last Changed: 2004 Jul 08
+" Last Changed: 2006 Apr 26
 " URL:		http://mywebpage.netscape.com/sharppeople/vim/ftplugin
 
 if exists("b:did_ftplugin") | finish | endif
@@ -14,16 +14,17 @@ set cpo-=C
 
 setlocal commentstring=<!--%s-->
 
+if exists('&omnifunc')
+" Distinguish between HTML versions
+" To use with other HTML versions add another
+" elseif condition to match proper DOCTYPE
 setlocal omnifunc=htmlcomplete#CompleteTags
 
-" This part added as suggestion by Mikolaj Machowski, still be approved by Dan
-" Sharp!
 if &filetype == 'xhtml'
 	let b:html_omni_flavor = 'xhtml10s'
 else
 	let b:html_omni_flavor = 'html401t'
 endif
-
 let i = 1
 while i < 10 && i < line("$")
 	let line = getline(i)
@@ -63,7 +64,7 @@ while i < 10 && i < line("$")
 	endif
 	let i += 1
 endwhile
-
+endif
 
 " HTML:  thanks to Johannes Zellner and Benji Fisher.
 if exists("loaded_matchit")
--- a/runtime/ftplugin/sql.vim
+++ b/runtime/ftplugin/sql.vim
@@ -1,8 +1,8 @@
 " SQL filetype plugin file
 " Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase)
-" Version:     1.0
+" Version:     3.0
 " Maintainer:  David Fishburn <fishburn at ianywhere dot com>
-" Last Change: Tue Mar 28 2006 2:26:48 PM
+" Last Change: Wed Apr 26 2006 3:02:32 PM
 " Download:    http://vim.sourceforge.net/script.php?script_id=454
 
 " For more details please use:
@@ -360,6 +360,11 @@ setlocal comments=s1:/*,mb:*,ex:*/,:--,:
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 if exists('&omnifunc')
+    " Since the SQL completion plugin can be used in conjunction
+    " with other completion filetypes it must record the previous
+    " OMNI function prior to setting up the SQL OMNI function
+    let b:sql_compl_savefunc = &omnifunc
+
     " This is used by the sqlcomplete.vim plugin
     " Source it for it's global functions
     runtime autoload/syntaxcomplete.vim 
@@ -370,28 +375,40 @@ if exists('&omnifunc')
     if !exists('g:omni_sql_no_default_maps')
         " Static maps which use populate the completion list
         " using Vim's syntax highlighting rules
-        imap <buffer> <c-c>a <C-\><C-O>:let b:sql_compl_type='syntax'<CR><C-X><C-O>
-        imap <buffer> <c-c>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
-        imap <buffer> <c-c>f <C-\><C-O>:let b:sql_compl_type='sqlFunction'<CR><C-X><C-O>
-        imap <buffer> <c-c>o <C-\><C-O>:let b:sql_compl_type='sqlOption'<CR><C-X><C-O>
-        imap <buffer> <c-c>T <C-\><C-O>:let b:sql_compl_type='sqlType'<CR><C-X><C-O>
-        imap <buffer> <c-c>s <C-\><C-O>:let b:sql_compl_type='sqlStatement'<CR><C-X><C-O>
+        imap <buffer> <c-c>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
+        imap <buffer> <c-c>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
+        imap <buffer> <c-c>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
+        imap <buffer> <c-c>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
+        imap <buffer> <c-c>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
+        imap <buffer> <c-c>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
         " Dynamic maps which use populate the completion list
         " using the dbext.vim plugin
-        imap <buffer> <c-c>t <C-\><C-O>:let b:sql_compl_type='table'<CR><C-X><C-O>
-        imap <buffer> <c-c>p <C-\><C-O>:let b:sql_compl_type='procedure'<CR><C-X><C-O>
-        imap <buffer> <c-c>v <C-\><C-O>:let b:sql_compl_type='view'<CR><C-X><C-O>
-        imap <buffer> <c-c>c <C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
-        imap <buffer> <c-c>l <C-\><C-O>:let b:sql_compl_type='column_csv'<CR><C-X><C-O>
+        imap <buffer> <c-c>t <C-\><C-O>:call sqlcomplete#Map('table')<CR><C-X><C-O>
+        imap <buffer> <c-c>p <C-\><C-O>:call sqlcomplete#Map('procedure')<CR><C-X><C-O>
+        imap <buffer> <c-c>v <C-\><C-O>:call sqlcomplete#Map('view')<CR><C-X><C-O>
+        imap <buffer> <c-c>c <C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
+        imap <buffer> <c-c>l <C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
         " The next 3 maps are only to be used while the completion window is
         " active due to the <CR> at the beginning of the map
-        imap <buffer> <c-c>L <CR><C-\><C-O>:let b:sql_compl_type='column_csv'<CR><C-X><C-O>
+        imap <buffer> <c-c>L <C-Y><C-\><C-O>:call sqlcomplete#Map('column_csv')<CR><C-X><C-O>
+        " <C-Right> is not recognized on most Unix systems, so only create
+        " these additional maps on the Windows platform.
+        " If you would like to use these maps, choose a different key and make
+        " the same map in your vimrc.
         if has('win32')
-            imap <buffer> <c-right>  <CR><C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
-            imap <buffer> <c-left>   <C-\><C-O>:let b:sql_compl_type='tableReset'<CR><C-X><C-O>
+            imap <buffer> <c-right>  <C-R>=sqlcomplete#DrillIntoTable()<CR>
+            imap <buffer> <c-left>  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>
         endif
         " Remove any cached items useful for schema changes
-        imap <buffer> <c-c>R <C-\><C-O>:let b:sql_compl_type='resetCache'<CR><C-X><C-O>
+        imap <buffer> <c-c>R <C-\><C-O>:call sqlcomplete#Map('resetCache')<CR><C-X><C-O>
+    endif
+
+    if b:sql_compl_savefunc != ""
+        " We are changing the filetype to SQL from some other filetype
+        " which had OMNI completion defined.  We need to activate the
+        " SQL completion plugin in order to cache some of the syntax items
+        " while the syntax rules for SQL are active.
+        call sqlcomplete#PreCacheSyntax()
     endif
 endif
 
--- a/runtime/indent/make.vim
+++ b/runtime/indent/make.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:         Makefile
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2006-04-26
 
 if exists("b:did_indent")
   finish
@@ -10,6 +10,7 @@ let b:did_indent = 1
 
 setlocal indentexpr=GetMakeIndent()
 setlocal indentkeys=!^F,o,O
+setlocal nosmartindent
 
 if exists("*GetMakeIndent")
   finish
@@ -19,34 +20,148 @@ let s:rule_rx = '^[^ \t#:][^#:]*:\{1,2}\
 let s:continuation_rx = '\\$'
 let s:assignment_rx = '^\s*\h\w*\s*+\==\s*\zs.*\\$'
 
+" TODO: Deal with comments, string, and all kinds of other crap, e.g., defines.
+" TODO: Unwrap the whole logic of this function into something that requires a
+" lot less “return”s.
 function GetMakeIndent()
   let lnum = v:lnum - 1
   if lnum == 0
     return 0
   endif
 
-  let line = getline(lnum)
-  let ind = indent(lnum)
+  " Figure out if the previous line is part of a rule or not.  If it is, then
+  " we more or less just indent by a ‘tabstop’, the previous’ lines indent, or
+  " remove all indent if the current line is itself a rule.  Also, if the line
+  " in question is part of a continuation-line set constituting the rule line
+  " itself, we indent by either a ‘shiftwidth’, if the line is the first in the
+  " continuation, or use the indent of the previous line, if not.
+  while lnum > 0
+    let line = getline(lnum)
+    if line[0] != "\t"
+      " We found a non-shell-command line, i.e., one that doesn’t have a
+      " leading tab.
+      if line =~ s:rule_rx
+        " The line looks like a rule line, so we must therefore either be inside a
+        " rule or we are a continuation line to that rule line.
+        if line =~ s:continuation_rx
+          " Ah, the rule line was continued, so look up the last continuation
+          " line that’s above the current line.
+          while line =~ s:continuation_rx && lnum < v:lnum
+            let lnum += 1
+            let line = getline(lnum)
+          endwhile
+          let lnum -= 1
+          let line = getline(lnum)
+        endif
 
-  if line =~ s:rule_rx
-    return ind + &ts
-  elseif line =~ s:continuation_rx
-    while lnum > 0 && line =~ s:continuation_rx && line !~ s:assignment_rx
+        " If the line that we’ve found is right above the current line, deal
+        " with it specifically.
+        if lnum == v:lnum - 1
+          " If it was continued, indent the current line by a shiftwidth, as it
+          " is the first to follow it.  Otherwise, depending on if the current
+          " line is a rule line, i.e, a rule line following another rule line,
+          " then indent to the left margin.  Otherwise, the current line is the
+          " first shell-command line in the rule, so indent by a ‘tabstop’
+          if line =~ s:continuation_rx
+            return &sw
+          else
+            return getline(v:lnum) =~ s:rule_rx ? 0 : &ts
+          endif
+        else
+          " If the previous line was a continuation line, then unless it was
+          " itself a part of a continuation line, add a ‘shiftwidth’’s worth of
+          " indent.  Otherwise, just use the indent of the previous line.
+          " Otherwise, if the previous line wasn’t a continuation line, check
+          " if the one above it was.  If it was then indent to whatever level
+          " the “owning” line had.  Otherwise, indent to the previous line’s
+          " level.
+          let lnum = v:lnum - 1
+          let line = getline(lnum)
+          if line =~ s:continuation_rx
+            let pnum = v:lnum - 2
+            let pine = getline(pnum)
+            if pine =~ s:continuation_rx
+              return indent(lnum)
+            else
+              return indent(lnum) + &sw
+            endif
+          else
+            let lnum = v:lnum - 2
+            let line = getline(lnum)
+            if line =~ s:continuation_rx
+              while lnum > 0
+                if line !~ s:continuation_rx
+                  let lnum += 1
+                  let line = getline(lnum)
+                  break
+                endif
+                let lnum -= 1
+                let line = getline(lnum)
+              endwhile
+              " We’ve found the owning line.  Indent to it’s level.
+              return indent(lnum)
+            else
+              return indent(v:lnum - 1)
+            endif
+          endif
+        endif
+      endif
+
+      " The line wasn’t a rule line, so the current line is part of a series
+      " of tab-indented lines that don’t belong to any rule.
+      break
+    endif
+    let lnum -= 1
+  endwhile
+
+  " If the line before the one we are currently indenting ended with a
+  " continuation, then try to figure out what “owns” that line and indent
+  " appropriately.
+  let lnum = v:lnum - 1
+  let line = getline(lnum)
+  if line =~ s:continuation_rx
+    let indent = indent(lnum)
+    if line =~ s:assignment_rx
+      " The previous line is a continuation line that begins a variable-
+      " assignment expression, so set the indent to just beyond the whitespace
+      " following the assignment operator (‘=’).
+      call cursor(lnum, 1)
+      if search(s:assignment_rx, 'W') != 0
+        let indent = virtcol('.') - 1
+      endif
+    endif
+    
+    " The previous line didn’t constitute an assignment, so just indent to
+    " whatever level it had.
+    return indent
+  endif
+
+  " If the line above the line above the current line ended was continued,
+  " then the line above the current line was part of a continued line.  Find
+  " the “owning” line and indent to its level.
+  let lnum = v:lnum - 2
+  let line = getline(lnum)
+  if line =~ s:continuation_rx
+    while lnum > 0
+      if line !~ s:continuation_rx
+        let lnum += 1
+        let line = getline(lnum)
+        break
+      endif
       let lnum -= 1
       let line = getline(lnum)
     endwhile
-    if line =~ s:assignment_rx
-      call cursor(lnum, 1)
-      return search(s:assignment_rx, 'W') != 0 ? virtcol('.') - 1 : 0
-    else
-      return 0
-    endif
+    " We’ve found the owning line.  Indent to it’s level.
+    return indent(lnum)
+  endif
+
+  " If nothing else caught on, then check if this line is a rule line.  If it
+  " is, indent it to the left margin.  Otherwise, simply use the indent of the
+  " previous line.
+  let line = getline(v:lnum)
+  if line =~ s:rule_rx
+    return 0
   else
-    let pnum = lnum - 1
-    if pnum == 0
-      return ind
-    endif
-
-    return getline(pnum) =~ s:continuation_rx ? 0 : ind
+    return indent(v:lnum - 1)
   endif
 endfunction
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -9,9 +9,10 @@
 
 " ---------------------------------------------------------------------
 "  Load Once: {{{1
-if &cp || exists("g:loaded_vimball")
+if &cp || exists("g:loaded_vimball") || exists("g:loaded_vimballplugin")
  finish
 endif
+let g:loaded_vimballplugin= 1
 
 let s:keepcpo= &cpo
 set cpo&vim
@@ -22,7 +23,7 @@ com! -ra -na=+ -bang MkVimball call vimb
 com! -na=0 UseVimball  call vimball#Vimball(1)
 com! -na=0 VimballList call vimball#Vimball(0)
 au BufEnter *.vba.gz,*.vba.bz2,*.vba.zip call vimball#Decompress(expand("<amatch>"))
-au BufEnter *.vba echohl WarningMsg | echo "Source this file to extract it! (:so %)" | echohl None
+au BufEnter *.vba call vimball#ShowMesg("Source this file to extract it! (:so %)")
 
 let &cpo= s:keepcpo
 unlet s:keepcpo
--- a/runtime/syntax/baan.vim
+++ b/runtime/syntax/baan.vim
@@ -1,73 +1,863 @@
 " Vim syntax file"
 " Language:	Baan
-" Maintainer:	Erwin Smit / Her van de Vliert
-" Last change:	30-10-2001"
+" Maintainer:	Erik Remmelzwaal (erik.remmelzwaal 0x40 ssaglobal.com)
+" Originally owned by: Erwin Smit / Her van de Vliert
+" Last change:  v1.17 2006/04/26 10:40:18
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
+"
 if version < 600
   syntax clear
+  if exists("baan_fold")
+	  unlet baan_fold
+  endif
 elseif exists("b:current_syntax")
   finish
 endif
 
+"********************************** Lexical setting ***************************"
+syn case ignore
+setlocal iskeyword+=.
+"setlocal ignorecase 	"This is not a local yet ;-(
+" Identifier
+syn match   baanIdentifier "\<\k\+\>"
+
 "************************************* 3GL ************************************"
-syn match baan3gl "#ident"
-syn match baan3gl "#include"
-syn match baan3gl "#define"
-syn match baan3gl "#undef"
-syn match baan3gl "#pragma"
-syn keyword baanConditional if then else case endif while endwhile endfor endcase
-syn keyword baan3gl at based break bset call common const continue default double
-syn keyword baan3gl empty extern fixed function ge global goto gt le lt mb
-syn keyword baan3gl multibyte ne ofr prompt ref repeat static step stop string
-syn keyword baan3gl true false until void wherebind
+syn match   baan3glpre "#ident\>"
+syn match   baan3glpre "#include\>"
+syn region  baan3glpre start="#define\>" end="^[^^|]"me=s-1 contains=baanString,baanConstant,baanNumber,baanComment,baansql
+syn match   baan3glpre "#undef\>"
+syn match   baan3glpre "#pragma\>"
+syn match   baan3glpre "#if\>"
+syn match   baan3glpre "#ifdef\>"
+syn match   baan3glpre "#ifndef\>"
+syn match   baan3glpre "#elif\>"
+syn match   baan3glpre "#else\>"
+syn match   baan3glpre "#endif\>"
+
+" Some keywords are only defined when no foldinat based break bset call continue default
+syn keyword baan3gl empty  fixed ge global goto gt le lt mb
+syn keyword baan3gl multibyte ne ofr prompt repeat static step stop
+syn keyword baan3gl until void wherebind ref reference break continue
 syn keyword baan3gl and or to not in
-syn keyword baan3gl domain table eq input end long dim return at base print
-syn match baan3gl "\<for\>" contains=baansql
-syn match baan3gl "on case"
-syn match baan3gl "e\=n\=d\=dllusage"
+syn keyword baan3gl eq input end return at print
+syn keyword baanType domain double long string table boolean common
+syn keyword baanType bset void xmlNode
+syn keyword baanStorageClass dim base based extern global fixed MB const
+syn keyword baanConstant pi true false
+
+" Folding settings
+if exists("baan_fold") && baan_fold
+  syn region baanFunctionFold matchgroup=baan3gl start="^\z(\s*\)\<function\>" matchgroup=NONE end="^\z1}" transparent fold keepend
+else
+  syn keyword baan3gl function
+endif
+if exists("baan_fold") && baan_fold && exists("baan_fold_block") && baan_fold_block
+  syn region  baanCondFold matchgroup=baanConditional start="^\z(\s*\)\(if\>\|else\>\)" end="^\z1endif\>" end="^\z1else\>"me=s-1 transparent fold keepend extend
+  syn region  baanCondFold matchgroup=baanConditional start="^\z(\s*\)for\>"            end="^\z1endfor\>" transparent fold keepend extend
+  syn region  baanCondFold matchgroup=baanConditional start="^\z(\s*\)while\>"          end="^\z1endwhile\>" transparent fold keepend extend
+  syn region  baanDLLUsage matchgroup=baan3gl         start="^\z(\s*\)dllusage\>"       end="^\z1enddllusage\>" fold contains=baanNumber,baanConstant,baanType
+  syn region  baanFunUsage matchgroup=baan3gl         start="^\z(\s*\)functionusage\>"  end="^\z1endfunctionusage\>" fold  contains=baanNumber,baanConstant,baanType
+  syn region  baanCondFold matchgroup=baanConditional start="^\z(\s*\)\(case\>\|default\>\)\>" end="^\z1endcase\>" end="^\z1\(case\>\|default\>\)"me=s-1 transparent fold keepend extend
+  syn keyword baanConditional then else endif while endwhile endfor case endcase 
+  syn match   baanConditional "\<on case\>"
+else
+  syn match   baanConditional "\<for\>" contains=baansql
+  syn match   baanConditional "\<on case\>"
+  syn keyword baanConditional if then else endif while endwhile endfor case endcase default
+  syn region  baanDLLUsage matchgroup=baan3gl start="\<dllusage\>" end="\<enddllusage\>" contains=baanNumber,baanConstant,baanType
+  syn region  baanFunUsage matchgroup=baan3gl start="\<functionusage\>" end="\<endfunctionusage\>" contains=baanNumber,baanConstant,baanType
+endif
 
 "************************************* SQL ************************************"
-syn keyword baansqlh where reference selecterror selectbind selectdo selectempty
-syn keyword baansqlh selecteos whereused endselect unref setunref clearunref
-syn keyword baansqlh from select clear skip rows
+syn keyword baansql from selectbind 
+syn keyword baansql where wherebind whereused exsists  
 syn keyword baansql between inrange having
-syn match baansql "as set with \d\+ rows"
-syn match baansql "as prepared set"
-syn match baansql "as prepared set with \d\+ rows"
-syn match baansql "refers to"
-syn match baansql "with retry"
-syn match baansql "with retry repeat last row"
-syn match baansql "for update"
-syn match baansql "order by"
-syn match baansql "group by"
-syn match baansql "commit\.transaction()"
-syn match baansql "abort\.transaction()"
-syn match baansql "db\.columns\.to\.record"
-syn match baansql "db\.record\.to\.columns"
-syn match baansql "db\.bind"
-syn match baansql "db\.change\.order"
-syn match baansql "\<db\.eq"
-syn match baansql "\<db\.first"
-syn match baansql "\<db\.gt"
-syn match baansql "\<db\.ge"
-syn match baansql "\<db\.le"
-syn match baansql "\<db\.next"
-syn match baansql "\<db\.prev"
-syn match baansql "\<db\.insert"
-syn match baansql "\<db\.delete"
-syn match baansql "\<db\.update"
-syn match baansql "\<db\.create\.table"
-syn match baansql "db\.set\.to\.default"
-syn match baansql "db\.retry"
-syn match baansql "DB\.RETRY"
-syn match baansql "db\.delayed\.lock"
-syn match baansql "db\.retry\.point()"
-syn match baansql "db\.retry\.hit()"
-syn match baansql "db\.return\.dupl"
-syn match baansql "db\.skip\.dupl"
-syn match baansql "db\.row\.length"
+syn keyword baansql hint ordered asc desc
+syn match   baansql "\<as set with \d\+ rows\>"
+syn match   baansql "\<as prepared set\>"
+syn match   baansql "\<as prepared set with \d\+ rows\>"
+syn match   baansql "\<with retry\>"
+syn match   baansql "\<with retry repeat last row\>"
+syn match   baansql "\<for update\>"
+syn match   baansql "\<order by\>"
+syn match   baansql "\<group by\>"
+syn match   baansql "\<union all\>"
+" references
+syn keyword path reference 
+syn match   baansql "\<refers to\>"
+syn match   baansql "\<unref clear\>"
+syn match   baansql "\<unref setunref\>"
+syn match   baansql "\<unref clearunref\>"
+syn match   baansql "\<unref skip\>"
+" hints
+syn keyword baansql hint and ordered asc desc
+syn match   baansql "\<use index \d\+ on\>"
+syn match   baansql "\<array fetching\>"
+syn match   baansql "\<no array fetching\>"
+syn match   baansql "\<array size \d\+\>"
+syn match   baansql "\<all rows\>"
+syn match   baansql "\<first rows\>"
+syn match   baansql "\<buffer \d\+ rows\>"
+syn match   baansql "\<no hints\>"
+" update
+syn keyword baansql set
+
+if exists("baan_fold") && baan_fold && exists("baan_fold_sql") && baan_fold_sql
+  syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(select\>\|selectdo\>\|selectempty\>\|selecterror\>\|selecteos\>\)" end="^\z1endselect\>" end="^\z1\(selectdo\>\|selectempty\>\|selecterror\>\|selecteos\>\)"me=s-1 transparent fold keepend extend
+  "syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(update\>\|updateempty\>\|updateerror\>\|selecteos\>\)"             end="^\z1endupdate\>" end="^\z1\(updateempty\>\|updateerror\>\|selecteos\>\)"me=s-1 transparent fold keepend extend
+  syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(update\>\|updateempty\>\|updateerror\>\)"             end="^\z1endupdate\>" end="^\z1\(updateempty\>\|updateerror\>\)"me=s-1 transparent fold keepend extend
+  syn region baanSQLFold matchgroup=baansql start="^\z(\s*\)\(delete\s\+from\>\|deleteempty\>\|deleteerror\>\)"                  end="^\z1enddelete\>" end="^\z1\(deleteempty\>\|deleteerror\>\)"me=s-1 transparent fold keepend extend
+else
+  syn keyword baansql select selectdo selectempty selecterror selecteos endselect
+  " delete
+  syn match   baansql "\<delete from\>"
+  syn keyword baansql deleteempty deleteerror deleteeos enddelete
+  " update
+  syn keyword baansql update updateempty updateerror updateeos endupdate
+endif
+
+setlocal foldmethod=syntax
+"syn sync fromstart
+syn sync minlines=100
+
+
+"These are bshell functions
+if exists("baan_obsolete")
+syn match   baansql "commit\.transaction()"
+syn match   baansql "abort\.transaction()"
+syn match   baansql "db\.columns\.to\.record"
+syn match   baansql "db\.record\.to\.columns"
+syn match   baansql "db\.bind"
+syn match   baansql "db\.change\.order"
+syn match   baansql "db\.set\.to\.default"
+syn match   baansql "DB\.RETRY"
+syn match   baansql "db\.delayed\.lock"
+syn match   baansql "db\.retry\.point()"
+syn match   baansql "db\.retry\.hit()"
+syn match   baansql "db\.return\.dupl"
+syn match   baansql "db\.skip\.dupl"
+syn match   baansql "db\.row\.length"
+endif
+
+" Constants
+syn keyword baanConstant __function__
+syn keyword baanConstant __object__ 
+syn keyword baanConstant __file__
+syn keyword baanConstant __line__
+
+syn keyword baanConstant ABORT.PROGRAM
+syn keyword baanConstant ADD.SET
+syn keyword baanConstant ALL_ENUMS_EXCEPT
+syn keyword baanConstant APPL.EXCL
+syn keyword baanConstant APPL.READ
+syn keyword baanConstant APPL.WAIT
+syn keyword baanConstant APPL.WIDE
+syn keyword baanConstant APPL.WRITE
+syn keyword baanConstant ASK.HELPINFO
+syn keyword baanConstant AUTG_PRINT
+syn keyword baanConstant AUTG_DISPLAY
+syn keyword baanConstant AUTG_MODIFY
+syn keyword baanConstant AUTG_INSERT
+syn keyword baanConstant AUTG_DELETE
+syn keyword baanConstant AUTG_ALL
+syn keyword baanConstant BMS
+syn keyword baanConstant CALCULATOR
+syn keyword baanConstant CALENDAR
+syn keyword baanConstant CHANGE.ORDER
+syn keyword baanConstant CMD.OPTIONS
+syn keyword baanConstant CMD.WHATS.THIS
+syn keyword baanConstant CMF.MESSAGE
+syn keyword baanConstant CMF.TASK
+syn keyword baanConstant CMF.APPOINTMENT
+syn match   baanConstant "\<COMPANY\$"
+syn keyword baanConstant COMPNR
+syn keyword baanConstant CONT.PROCESS
+syn keyword baanConstant CREATE.JOB
+syn keyword baanConstant DALNOOBJSET
+syn keyword baanConstant DALNOMETHOD
+syn keyword baanConstant DALNOOBJSETID
+syn keyword baanConstant DALNOOBJECTID
+syn keyword baanConstant DALNOPROP
+syn keyword baanConstant DALNOLOCMODE
+syn keyword baanConstant DALNOGETPOS
+syn keyword baanConstant DALNOSETPERM
+syn keyword baanConstant DALNOOBJPERM
+syn keyword baanConstant DALDBERROR
+syn keyword baanConstant DALHOOKERROR
+syn keyword baanConstant DALNOQUERYID
+syn keyword baanConstant DAL_DESTROY
+syn keyword baanConstant DAL_FIND
+syn keyword baanConstant DAL_GET_CURR
+syn keyword baanConstant DAL_GET_FIRST
+syn keyword baanConstant DAL_GET_LAST
+syn keyword baanConstant DAL_GET_NEXT
+syn keyword baanConstant DAL_GET_PREV
+syn keyword baanConstant DAL_GET_SPECIFIED
+syn keyword baanConstant DAL_NEW
+syn keyword baanConstant DAL_UPDATE
+syn keyword baanConstant DB.ARRAY
+syn keyword baanConstant DB.BASED
+syn keyword baanConstant DB.BITSET
+syn keyword baanConstant DB.BYTE
+syn keyword baanConstant DB.CHECK.IGNORED.REF
+syn keyword baanConstant DB.CHILD
+syn keyword baanConstant DB.CLEAR.NO.ROLLBACK
+syn keyword baanConstant DB.CLEAR.WITH.ROLLBACK
+syn keyword baanConstant DB.COMBINED
+syn keyword baanConstant DB.DATE
+syn keyword baanConstant DB.DELAYED.LOCK
+syn keyword baanConstant DB.DOUBLE
+syn keyword baanConstant DB.ENUM
+syn keyword baanConstant DB.EXIT.ON.DUPL
+syn keyword baanConstant DB.EXIT.ON.NOREC
+syn keyword baanConstant DB.EXIT.ON.ROWCHANGED
+syn keyword baanConstant DB.FILLED
+syn keyword baanConstant DB.FIXED
+syn keyword baanConstant DB.FL.LOCK
+syn keyword baanConstant DB.FLOAT
+syn keyword baanConstant DB.IGNORE.ALL.REFS
+syn keyword baanConstant DB.INTEGER
+syn keyword baanConstant DB.IS.REF.TO
+syn keyword baanConstant DB.LOCK
+syn keyword baanConstant DB.LONG
+syn keyword baanConstant DB.MAIL
+syn keyword baanConstant DB.MULTIBYTE
+syn keyword baanConstant DB.NOT.ACTIV
+syn keyword baanConstant DB.PAR.IS.REF.TO
+syn keyword baanConstant DB.REF.CASCADE
+syn keyword baanConstant DB.REF.CHK.RUNTIME
+syn keyword baanConstant DB.REF.DELETE
+syn keyword baanConstant DB.REF.NOP
+syn keyword baanConstant DB.REF.NULLIFY
+syn keyword baanConstant DB.REF.RESTRICTED
+syn keyword baanConstant DB.REF.UPDATE
+syn keyword baanConstant DB.RETRY
+syn keyword baanConstant DB.RETURN.DUPL
+syn keyword baanConstant DB.RETURN.ERROR
+syn keyword baanConstant DB.RETURN.NOREC
+syn keyword baanConstant DB.RETURN.REF.EXISTS
+syn keyword baanConstant DB.RETURN.REF.NOT.EXISTS
+syn keyword baanConstant DB.RETURN.ROWCHANGED
+syn keyword baanConstant DB.RPOINT
+syn keyword baanConstant DB.SKIP.DUPL
+syn keyword baanConstant DB.SKIP.NOREC
+syn keyword baanConstant DB.SKIP.ROWCHANGED
+syn keyword baanConstant DB.STRING
+syn keyword baanConstant DB.TEXT
+syn keyword baanConstant DB.TIME
+syn keyword baanConstant DBG_BDB_ACTIONS
+syn keyword baanConstant DBG_BDB_DELAY_LOCK
+syn keyword baanConstant DBG_BDB_REFER
+syn keyword baanConstant DBG_BDB_SERVER_TYPE
+syn keyword baanConstant DBG_DATA_SIZE
+syn keyword baanConstant DBG_DEBUG_MESG
+syn keyword baanConstant DBG_DEBUG_TSS
+syn keyword baanConstant DBG_FILE
+syn keyword baanConstant DBG_FILEDEV
+syn keyword baanConstant DBG_FUN_DEBUG
+syn keyword baanConstant DBG_GET_PUT_VAR
+syn keyword baanConstant DBG_INSTR_DEBUG
+syn keyword baanConstant DBG_MUL_ACTION
+syn keyword baanConstant DBG_OBJ_SIZE
+syn keyword baanConstant DBG_PRINT_ENUMS
+syn keyword baanConstant DBG_REF_PATH
+syn keyword baanConstant DBG_RESOURCE_DBG
+syn keyword baanConstant DBG_SCHED_DEBUG
+syn keyword baanConstant DBG_SHOW_FLOW
+syn keyword baanConstant DBG_SHOW_TRACE
+syn keyword baanConstant DBG_SRDD_USAGE
+syn keyword baanConstant DEBUG
+syn keyword baanConstant DEF.FIND
+syn keyword baanConstant DISPLAY.SET
+syn keyword baanConstant DIS.RESTARTED
+syn keyword baanConstant DLL_OVERLOAD
+syn keyword baanConstant DLL_OVERLOAD_ALL
+syn keyword baanConstant DLL_SILENT_ERR
+syn keyword baanConstant DSTerminationCreateProcess
+syn keyword baanConstant DSTerminationCreateThread
+syn keyword baanConstant DSTerminationNormalExit
+syn keyword baanConstant DSTerminationOpenStderr
+syn keyword baanConstant DSTerminationOpenStdin
+syn keyword baanConstant DSTerminationOpenStdout
+syn keyword baanConstant DSTerminationSetDir
+syn keyword baanConstant DUPL.OCCUR
+syn keyword baanConstant E2BIG
+syn keyword baanConstant EABORT
+syn keyword baanConstant EACCES
+syn keyword baanConstant EAGAIN
+syn keyword baanConstant EAUDIT
+syn keyword baanConstant EBADADRS
+syn keyword baanConstant EBADARG
+syn keyword baanConstant EBADCOLL
+syn keyword baanConstant EBADCURSOR
+syn keyword baanConstant EBADF
+syn keyword baanConstant EBADFILE
+syn keyword baanConstant EBADFLD
+syn keyword baanConstant EBADKEY
+syn keyword baanConstant EBADLOG
+syn keyword baanConstant EBADMEM
+syn keyword baanConstant EBDBNOTON
+syn keyword baanConstant EBDBON
+syn keyword baanConstant EBUSY
+syn keyword baanConstant ECHILD
+syn keyword baanConstant EDDCORRUPT
+syn keyword baanConstant EDOM
+syn keyword baanConstant EDUPL
+syn keyword baanConstant EENDFILE
+syn keyword baanConstant EEXIST
+syn keyword baanConstant EFAULT
+syn keyword baanConstant EFBIG
+syn keyword baanConstant EFLOCKED
+syn keyword baanConstant EFNAME
+syn keyword baanConstant EINTR
+syn keyword baanConstant EINVAL
+syn keyword baanConstant EIO
+syn keyword baanConstant EISDIR
+syn keyword baanConstant EISREADONLY
+syn keyword baanConstant EKEXISTS
+syn keyword baanConstant ELOCKED
+syn keyword baanConstant ELOGOPEN
+syn keyword baanConstant ELOGREAD
+syn keyword baanConstant ELOGWRIT
+syn keyword baanConstant EMEMORY
+syn keyword baanConstant EMFILE
+syn keyword baanConstant EMLINK
+syn keyword baanConstant EMLOCKED
+syn keyword baanConstant END.PROGRAM
+syn keyword baanConstant ENFILE
+syn keyword baanConstant ENOBEGIN
+syn keyword baanConstant ENOCURR
+syn keyword baanConstant ENODD
+syn keyword baanConstant ENODELAYEDLOCK
+syn keyword baanConstant ENODEV
+syn keyword baanConstant ENOENT
+syn keyword baanConstant ENOEXEC
+syn keyword baanConstant ENOLOK
+syn keyword baanConstant ENOMEM
+syn keyword baanConstant ENONFS
+syn keyword baanConstant ENOREC
+syn keyword baanConstant ENOSERVER
+syn keyword baanConstant ENOSHMEM
+syn keyword baanConstant ENOSPC
+syn keyword baanConstant ENOTABLE
+syn keyword baanConstant ENOTBLK
+syn keyword baanConstant ENOTDIR
+syn keyword baanConstant ENOTEXCL
+syn keyword baanConstant ENOTINRANGE
+syn keyword baanConstant ENOTLOCKED
+syn keyword baanConstant ENOTOPEN
+syn keyword baanConstant ENOTRANS
+syn keyword baanConstant ENOTTY
+syn keyword baanConstant ENXIO
+syn keyword baanConstant ENUMMASK.INITIAL
+syn keyword baanConstant ENUMMASK.GENERAL
+syn keyword baanConstant EPERM
+syn keyword baanConstant EPIPE
+syn keyword baanConstant EPRIMKEY
+syn keyword baanConstant ERANGE
+syn keyword baanConstant EREFERENCE
+syn keyword baanConstant EREFEXISTS
+syn keyword baanConstant EREFLOCKED
+syn keyword baanConstant EREFNOTEXISTS
+syn keyword baanConstant EREFUNDEFINED
+syn keyword baanConstant EREFUPDATE
+syn keyword baanConstant EROFS
+syn keyword baanConstant EROWCHANGED
+syn keyword baanConstant ESPIPE
+syn keyword baanConstant ESQLCARDINALITYVIOLATION
+syn keyword baanConstant ESQLDIVBYZERO
+syn keyword baanConstant ESQLFILEIO
+syn keyword baanConstant ESQLINDEXOUTOFDIMS
+syn keyword baanConstant ESQLINVALIDPARAMETERTYPE
+syn keyword baanConstant ESQLQUERY
+syn keyword baanConstant ESQLREFER
+syn keyword baanConstant ESQLSTRINGTRUNCATION
+syn keyword baanConstant ESQLSUBSTRINGERROR
+syn keyword baanConstant ESQLSYNTAX
+syn keyword baanConstant ESRCH
+syn keyword baanConstant ETABLEEXIST
+syn keyword baanConstant ETOOMANY
+syn keyword baanConstant ETRANSACTIONON
+syn keyword baanConstant ETXTBSY
+syn keyword baanConstant EUNALLOWEDCOMPNR
+syn keyword baanConstant EVTALLEVENTMASK
+syn keyword baanConstant EVTARMBUTTON
+syn keyword baanConstant EVTARMBUTTONMASK
+syn keyword baanConstant EVTBUCKETMESSAGE
+syn keyword baanConstant EVTBUTTON1
+syn keyword baanConstant EVTBUTTON1MASK
+syn keyword baanConstant EVTBUTTON2
+syn keyword baanConstant EVTBUTTON2MASK
+syn keyword baanConstant EVTBUTTON3
+syn keyword baanConstant EVTBUTTON3MASK
+syn keyword baanConstant EVTBUTTON4
+syn keyword baanConstant EVTBUTTON4MASK
+syn keyword baanConstant EVTBUTTON5
+syn keyword baanConstant EVTBUTTON5MASK
+syn keyword baanConstant EVTBUTTONCHECKED
+syn keyword baanConstant EVTBUTTONDPRESS
+syn keyword baanConstant EVTBUTTONDPRESSMASK
+syn keyword baanConstant EVTBUTTONMOTION
+syn keyword baanConstant EVTBUTTONMOTIONMASK
+syn keyword baanConstant EVTBUTTONPRESS
+syn keyword baanConstant EVTBUTTONPRESSMASK
+syn keyword baanConstant EVTBUTTONRELEASE
+syn keyword baanConstant EVTBUTTONRELEASEMASK
+syn keyword baanConstant EVTBUTTONSELECT
+syn keyword baanConstant EVTBUTTONSELECTMASK
+syn keyword baanConstant EVTBUTTONUNCHECKED
+syn keyword baanConstant EVTBUTTONUNDEFINED
+syn keyword baanConstant EVTCHANGEFOCUS
+syn keyword baanConstant EVTCHANGEFOCUSMASK
+syn keyword baanConstant EVTCHANNELEVENT
+syn keyword baanConstant EVTCHECKBOXMASK
+syn keyword baanConstant EVTCHECKBOXSELECT
+syn keyword baanConstant EVTCLIENTMESSAGE
+syn keyword baanConstant EVTCONNECTREQUEST
+syn keyword baanConstant EVTCONTROLMASK
+syn keyword baanConstant EVTDEATHCHILD
+syn keyword baanConstant EVTDEATHCHILDMASK
+syn keyword baanConstant EVTDISARMBUTTON
+syn keyword baanConstant EVTDISARMBUTTONMASK
+syn keyword baanConstant EVTDLLEVENT
+syn keyword baanConstant EVTDLLEVENTMASK
+syn keyword baanConstant EVTENTERNOTIFY
+syn keyword baanConstant EVTENTERNOTIFYMASK
+syn keyword baanConstant EVTFIELDSELECT
+syn keyword baanConstant EVTFIELDSELECTMASK
+syn keyword baanConstant EVTGRIDACTIVATE
+syn keyword baanConstant EVTGRIDBUTTONPRESS
+syn keyword baanConstant EVTGRIDCHANGEDATA
+syn keyword baanConstant EVTGRIDCHANGEFOCUS
+syn keyword baanConstant EVTGRIDEVENT
+syn keyword baanConstant EVTGRIDEVENTMASK
+syn keyword baanConstant EVTGRIDFOCUSCHANGEDBYMOUSE
+syn keyword baanConstant EVTGRIDLISTBOXCHANGE
+syn keyword baanConstant EVTGRIDMARKCELL
+syn keyword baanConstant EVTGRIDMARKCOLUMN
+syn keyword baanConstant EVTGRIDMARKRANGE
+syn keyword baanConstant EVTGRIDMARKROW
+syn keyword baanConstant EVTGRIDMOVECOLUMN
+syn keyword baanConstant EVTGRIDMOVEROW
+syn keyword baanConstant EVTGRIDRESETSELECTION
+syn keyword baanConstant EVTGRIDRESIZECOLUMN
+syn keyword baanConstant EVTGRIDRESIZEROW
+syn keyword baanConstant EVTHELPCOMMAND
+syn keyword baanConstant EVTHELPCONTEXT
+syn keyword baanConstant EVTHELPEVENT
+syn keyword baanConstant EVTHELPEVENTMASK
+syn keyword baanConstant EVTIOEVENT
+syn keyword baanConstant EVTIOEVENTMASK
+syn keyword baanConstant EVTKEYPRESS
+syn keyword baanConstant EVTKEYPRESSMASK
+syn keyword baanConstant EVTKILLEVENT
+syn keyword baanConstant EVTLEAVENOTIFY
+syn keyword baanConstant EVTLEAVENOTIFYMASK
+syn keyword baanConstant EVTLISTBOXREASONACTIVATE
+syn keyword baanConstant EVTLISTBOXREASONSELECTION
+syn keyword baanConstant EVTLISTBOXREASONTEXT
+syn keyword baanConstant EVTLISTBOXSELECT
+syn keyword baanConstant EVTLISTBOXSELECTMASK
+syn keyword baanConstant EVTLOCKMASK
+syn keyword baanConstant EVTMAXSIZE
+syn keyword baanConstant EVTMENUSELECT
+syn keyword baanConstant EVTMENUSELECTMASK
+syn keyword baanConstant EVTMOD1MASK
+syn keyword baanConstant EVTMOVEWINDOW
+syn keyword baanConstant EVTMOVEWINDOWMASK
+syn keyword baanConstant EVTNAVIGATOREVENT
+syn keyword baanConstant EVTNAVIGATOREVENTMASK
+syn keyword baanConstant EVTNOEVENTMASK
+syn keyword baanConstant EVTOLEAUTOMATION
+syn keyword baanConstant EVTOLECLOSE
+syn keyword baanConstant EVTOLECREATEINSTANCE
+syn keyword baanConstant EVTOLEDATACHANGED
+syn keyword baanConstant EVTOLEEVENT
+syn keyword baanConstant EVTOLEEVENTMASK
+syn keyword baanConstant EVTOLEHIDEWINDOW
+syn keyword baanConstant EVTOLELOADDATA
+syn keyword baanConstant EVTOLELOCKSERVER
+syn keyword baanConstant EVTOLEOBJECTWINDOWINVISIBLE
+syn keyword baanConstant EVTOLEOBJECTWINDOWVISIBLE
+syn keyword baanConstant EVTOLERELEASED
+syn keyword baanConstant EVTOLESAVEDATA
+syn keyword baanConstant EVTOLESETHOSTNAMES
+syn keyword baanConstant EVTOLESHOWOBJECT
+syn keyword baanConstant EVTOLESHOWWINDOW
+syn keyword baanConstant EVTOLEUNLOCKSERVER
+syn keyword baanConstant EVTOPTIONSELECT
+syn keyword baanConstant EVTPROCESSEVENT
+syn keyword baanConstant EVTPUSHBUTTON
+syn keyword baanConstant EVTRADIOBOXMASK
+syn keyword baanConstant EVTRADIOBOXSELECT
+syn keyword baanConstant EVTRESIZEWINDOW
+syn keyword baanConstant EVTRESIZEWINDOWMASK
+syn keyword baanConstant EVTRUNPROGEXIT
+syn keyword baanConstant EVTSCROLLBARSELECT
+syn keyword baanConstant EVTSCROLLBARSELECTMASK
+syn keyword baanConstant EVTSETFOCUS
+syn keyword baanConstant EVTSETFOCUSMASK
+syn keyword baanConstant EVTSHIFTMASK
+syn keyword baanConstant EVTSLIDERSELECT
+syn keyword baanConstant EVTSLIDERSELECTMASK
+syn keyword baanConstant EVTSOCKHASDATA
+syn keyword baanConstant EVTSOCKIOERROR
+syn keyword baanConstant EVTTABSELECT
+syn keyword baanConstant EVTTABSELECTMASK
+syn keyword baanConstant EVTTERMINATION
+syn keyword baanConstant EVTTERMINATIONMASK
+syn keyword baanConstant EVTTIMEREVENT
+syn keyword baanConstant EVTTIMEREVENTMASK
+syn keyword baanConstant EVTTREEREASONACTIVATE
+syn keyword baanConstant EVTTREEREASONACTIVATEMASK
+syn keyword baanConstant EVTTREEREASONCOLLAPSE
+syn keyword baanConstant EVTTREEREASONCOLLAPSEMASK
+syn keyword baanConstant EVTTREEREASONEXPAND
+syn keyword baanConstant EVTTREEREASONEXPANDMASK
+syn keyword baanConstant EVTTREEREASONSELECT
+syn keyword baanConstant EVTTREEREASONSELECTMASK
+syn keyword baanConstant EVTTREESELECT
+syn keyword baanConstant EVTTREESELECTMASK
+syn keyword baanConstant EXDEV
+syn keyword baanConstant EXPLICIT.MODELESS
+syn keyword baanConstant EXTEND_APPEND
+syn keyword baanConstant EXTEND_OVERWRITE
+syn keyword baanConstant F.ASK.HELPINFO
+syn keyword baanConstant F.BACKTAB
+syn keyword baanConstant F.BMS
+syn keyword baanConstant F.HELP.INDEX
+syn keyword baanConstant F.NEXT.FLD
+syn keyword baanConstant F.NEXT.OBJ
+syn keyword baanConstant F.NEXT.OCC
+syn keyword baanConstant F.PREV.FLD
+syn keyword baanConstant F.PREV.OBJ
+syn keyword baanConstant F.PREV.OCC
+syn keyword baanConstant F.RESIZE
+syn keyword baanConstant F.RETURN
+syn keyword baanConstant F.SCROLL
+syn keyword baanConstant F.SELECT.FIELD
+syn keyword baanConstant F.SELECT.OPTION
+syn keyword baanConstant F.TAB
+syn keyword baanConstant F.TO.CHOICE
+syn keyword baanConstant F.TO.FIELD
+syn keyword baanConstant F.TO.FORM
+syn keyword baanConstant F.ZOOM
+syn keyword baanConstant FALSE
+syn keyword baanConstant FC.CURR.FIELD
+syn keyword baanConstant FC.FIRST.FIELD
+syn keyword baanConstant FC.FIRST.FORM
+syn keyword baanConstant FC.FRM.WINDOW
+syn keyword baanConstant FC.GET.HEIGHT.FORM
+syn keyword baanConstant FC.GET.SELECTED.FIELD
+syn keyword baanConstant FC.GET.SELECTED.OCC
+syn keyword baanConstant FC.GET.WIDTH.FORM
+syn keyword baanConstant FC.GOTO.FIELD
+syn keyword baanConstant FC.GOTO.FIRST.FLD
+syn keyword baanConstant FC.GOTO.FIRST.FORM
+syn keyword baanConstant FC.GOTO.FORM
+syn keyword baanConstant FC.GOTO.NEXT.FLD
+syn keyword baanConstant FC.GOTO.NEXT.FORM
+syn keyword baanConstant FC.GRA.WINDOW
+syn keyword baanConstant FC.KYS.WINDOW
+syn keyword baanConstant FC.LAST.FIELD
+syn keyword baanConstant FC.LAST.FORM
+syn keyword baanConstant FC.MAKE.FLD.CURR
+syn keyword baanConstant FC.MOVE.FORM
+syn keyword baanConstant FC.NEXT.FIELD
+syn keyword baanConstant FC.NEXT.FORM
+syn keyword baanConstant FC.OPT.WINDOW
+syn keyword baanConstant FC.PREV.FIELD
+syn keyword baanConstant FC.PREV.FORM
+syn keyword baanConstant FC.RESIZE.FORM
+syn keyword baanConstant FC.REST.FRM.ST
+syn keyword baanConstant FC.RPT.WINDOW
+syn keyword baanConstant FC.SAVE.FRM.ST
+syn keyword baanConstant FC.SAVE.SELECT
+syn keyword baanConstant FC.SEL.FIELD
+syn keyword baanConstant FC.SEL.FORM
+syn keyword baanConstant FC.SWITCH.ORDER.OFF
+syn keyword baanConstant FC.SWITCH.ORDER.ON
+syn keyword baanConstant FC.TEXT.MAIL.WINDOW
+syn keyword baanConstant FIND.DATA
+syn keyword baanConstant FIRST.FRM
+syn keyword baanConstant FIRST.SET
+syn keyword baanConstant FIRST.VIEW
+syn keyword baanConstant FLDCHANGED
+syn keyword baanConstant FLDKEYPRESS
+syn keyword baanConstant FORM.TAB.CHANGE
+syn keyword baanConstant GET.DEFAULTS
+syn keyword baanConstant GETS_ALL_CHARS
+syn keyword baanConstant GETS_NORMAL
+syn keyword baanConstant GETS_SKIP_ALL
+syn keyword baanConstant GLOBAL.COPY
+syn keyword baanConstant GLOBAL.DELETE
+syn keyword baanConstant HELP_ABOUT
+syn keyword baanConstant HELP_ARG_LEN
+syn keyword baanConstant HELP_BITMAP
+syn keyword baanConstant HELP_BLOCK
+syn keyword baanConstant HELP_CHOICE
+syn keyword baanConstant HELP_CLIENT_IMAGE_NOTLOADED
+syn keyword baanConstant HELP_CLIENT_IMAGE_READY
+syn keyword baanConstant HELP_CLIENT_NEW_ARGS
+syn keyword baanConstant HELP_CLIENT_NEW_INFO
+syn keyword baanConstant HELP_COMMANDS
+syn keyword baanConstant HELP_DOMAIN
+syn keyword baanConstant HELP_ENUM
+syn keyword baanConstant HELP_EXTERNAL
+syn keyword baanConstant HELP_FORM
+syn keyword baanConstant HELP_FORMFIELD
+syn keyword baanConstant HELP_FROM_INDEX
+syn keyword baanConstant HELP_GEM
+syn keyword baanConstant HELP_GIF
+syn keyword baanConstant HELP_GLOSSARY
+syn keyword baanConstant HELP_GOTO
+syn keyword baanConstant HELP_GOTOBLOCK
+syn keyword baanConstant HELP_GO_SYS_DEPENDANT
+syn keyword baanConstant HELP_HPGL
+syn keyword baanConstant HELP_IFUNCTION
+syn keyword baanConstant HELP_IFUNCTION2
+syn keyword baanConstant HELP_IFUNCTION3
+syn keyword baanConstant HELP_INDEX
+syn keyword baanConstant HELP_LABEL
+syn keyword baanConstant HELP_LABELHELP
+syn keyword baanConstant HELP_MARK
+syn keyword baanConstant HELP_MAXTYPE
+syn keyword baanConstant HELP_MAX_ARGS
+syn keyword baanConstant HELP_MAX_HIST
+syn keyword baanConstant HELP_MAX_IMAGE
+syn keyword baanConstant HELP_MENU
+syn keyword baanConstant HELP_MESSAGE
+syn keyword baanConstant HELP_ORGANIZER
+syn keyword baanConstant HELP_POPUP_TYPE
+syn keyword baanConstant HELP_POSTSCRIPT
+syn keyword baanConstant HELP_QUESTION
+syn keyword baanConstant HELP_REFERENCE
+syn keyword baanConstant HELP_RELATION
+syn keyword baanConstant HELP_RELATION2
+syn keyword baanConstant HELP_RELATION_DIAGRAM
+syn keyword baanConstant HELP_REPORT
+syn keyword baanConstant HELP_SESSION
+syn keyword baanConstant HELP_STARTSESSION
+syn keyword baanConstant HELP_STARTSHELL
+syn keyword baanConstant HELP_SUBFUNCTION
+syn keyword baanConstant HELP_SYSTEM_DEPENDANT
+syn keyword baanConstant HELP_TABLE
+syn keyword baanConstant HELP_TABLEFIELD
+syn keyword baanConstant HELP_USING
+syn keyword baanConstant HOOK_IS_APPLICABLE
+syn keyword baanConstant HOOK_IS_DERIVED
+syn keyword baanConstant HOOK_IS_MANDATORY
+syn keyword baanConstant HOOK_IS_READONLY
+syn keyword baanConstant HOOK_IS_VALID
+syn keyword baanConstant HOOK_UPDATE
+syn keyword baanConstant INCLUDE_ENUMS
+syn keyword baanConstant INTERRUPT
+syn keyword baanConstant LAST.FRM
+syn keyword baanConstant LAST.SET
+syn keyword baanConstant LAST.VIEW
+syn keyword baanConstant MARK.ABORT
+syn keyword baanConstant MARK.DELETE
+syn keyword baanConstant MARK.GOTO.NEXT
+syn keyword baanConstant MARK.GOTO.PREV
+syn keyword baanConstant MARK.OCCUR
+syn keyword baanConstant MARK.SHOW.OPT
+syn keyword baanConstant MARK.TAG
+syn keyword baanConstant MARK.TAG.ALL
+syn keyword baanConstant MARK.TO.CHOICE
+syn keyword baanConstant MARK.UNTAG
+syn keyword baanConstant MARK.UNTAG.ALL
+syn keyword baanConstant MARKONE.ACCEPT
+syn keyword baanConstant MSG.ALL
+syn keyword baanConstant MSG.ERROR
+syn keyword baanConstant MSG.INFO
+syn keyword baanConstant MSG.WARNING
+syn keyword baanConstant MSG.SUCCESS
+syn keyword baanConstant MODAL
+syn keyword baanConstant MODAL_OVERVIEW
+syn keyword baanConstant MODELESS
+syn keyword baanConstant MODELESS_ALWAYS
+syn keyword baanConstant MODIFY.SET
+syn keyword baanConstant MULTI_OCC
+syn keyword baanConstant NEXT.FRM
+syn keyword baanConstant NEXT.SET
+syn keyword baanConstant NEXT.VIEW
+syn keyword baanConstant NO.PERM.DEFINED
+syn keyword baanConstant NO.PERMISSION
+syn keyword baanConstant NO.RESTRICTION
+syn keyword baanConstant NO.ROLLBACK
+syn keyword baanConstant OLESVR.INIT
+syn keyword baanConstant OLESVR.OBJECT.CREATED
+syn keyword baanConstant OLESVR.OBJECT.DESTROYED
+syn keyword baanConstant OS_OS400
+syn keyword baanConstant OS_UNIX
+syn keyword baanConstant OS_WINDOWS_95
+syn keyword baanConstant OS_WINDOWS_NT
+syn keyword baanConstant PERM.DELETE
+syn keyword baanConstant PERM.MODIFY
+syn keyword baanConstant PERM.READ
+syn keyword baanConstant PERM.UNKNOWN
+syn keyword baanConstant PERM.WRITE
+syn keyword baanConstant PI
+syn keyword baanConstant PREV.FRM
+syn keyword baanConstant PREV.SET
+syn keyword baanConstant PREV.VIEW
+syn keyword baanConstant PRINT.DATA
+syn keyword baanConstant PROGRESS.BAR
+syn keyword baanConstant PROGRESS.CANCEL
+syn keyword baanConstant PROGRESS.NOAUTODESTROY
+syn keyword baanConstant PROGRESS.RESIZEABLE
+syn keyword baanConstant PROGRESS.STOP
+syn keyword baanConstant PROGRESS.TIMER
+syn keyword baanConstant PRTCL
+syn keyword baanConstant PRTCL.END.TRACE
+syn keyword baanConstant PRTCL.EXECUTE
+syn keyword baanConstant PRTCL.FIELD.OPTION
+syn keyword baanConstant PRTCL.GET.DATA
+syn keyword baanConstant PRTCL.GET.DATA.ANSWER
+syn keyword baanConstant PRTCL.MASK
+syn keyword baanConstant PRTCL.PUT.DATA
+syn keyword baanConstant PRTCL.START.TRACE
+syn keyword baanConstant PRTCL.UNKNOWN
+syn keyword baanConstant PSMAXSIZE
+syn keyword baanConstant QSS.EQLE
+syn keyword baanConstant QSS.EQUAL
+syn keyword baanConstant QSS.FIRST
+syn keyword baanConstant QSS.GT
+syn keyword baanConstant QSS.GTEQ
+syn keyword baanConstant QSS.LAST
+syn keyword baanConstant QSS.LESS
+syn keyword baanConstant QSS.LOOKUP.FOR.STRUCT
+syn keyword baanConstant QSS.NE
+syn keyword baanConstant QSS.SRC.DUPL.ALLOWED
+syn keyword baanConstant QSS.SRC.IS.SORTED
+syn keyword baanConstant RDI.CENTER
+syn keyword baanConstant RDI.LEFT
+syn keyword baanConstant RDI.LOWER
+syn keyword baanConstant RDI.NONE
+syn keyword baanConstant RDI.RIGHT
+syn keyword baanConstant RDI.UPPER
+syn keyword baanConstant RECOVER.SET
+syn keyword baanConstant RESIZE.FRM
+syn keyword baanConstant RESTART.INPUT
+syn keyword baanConstant ROTATE.CURR
+syn keyword baanConstant RP_IPCINFO_FLAG
+syn keyword baanConstant RP_INPROC
+syn keyword baanConstant RP_NOWAIT
+syn keyword baanConstant RP_NOWAIT_WITH_EVENT
+syn keyword baanConstant RP_WAIT
+syn keyword baanConstant RUN.JOB
+syn keyword baanConstant SAVE.DEFAULTS
+syn keyword baanConstant SBADJUST
+syn keyword baanConstant SBCONFIRM
+syn keyword baanConstant SBDOWN
+syn keyword baanConstant SBEND
+syn keyword baanConstant SBHOME
+syn keyword baanConstant SBMOVE
+syn keyword baanConstant SBPGDOWN
+syn keyword baanConstant SBPGUP
+syn keyword baanConstant SBPRESS
+syn keyword baanConstant SBRELEASE
+syn keyword baanConstant SBUP
+syn keyword baanConstant SEQ_F_R_LCK
+syn keyword baanConstant SEQ_F_W_LCK
+syn keyword baanConstant SEQ_R_LCK
+syn keyword baanConstant SEQ_W_LCK
+syn keyword baanConstant SESSION_NO_PERMISSION
+syn keyword baanConstant SESSION_DELETE_PERMISSION
+syn keyword baanConstant SESSION_INSERT_PERMISSION
+syn keyword baanConstant SESSION_MODIFY_PERMISSION
+syn keyword baanConstant SESSION_DISPLAY_PERMISSION
+syn keyword baanConstant SESSION_PRINT_PERMISSION
+syn keyword baanConstant SINGLE_OCC
+syn keyword baanConstant ST.ADD.SET
+syn keyword baanConstant ST.BITSET
+syn keyword baanConstant ST.BITSET.ZOOM
+syn keyword baanConstant ST.BRP.RUN
+syn keyword baanConstant ST.BRP.SEND
+syn keyword baanConstant ST.DEF.FIND
+syn keyword baanConstant ST.DOUBLE
+syn keyword baanConstant ST.DOUBLE.ZOOM
+syn keyword baanConstant ST.DUPL.OCCUR
+syn keyword baanConstant ST.ENUM
+syn keyword baanConstant ST.ENUM.ZOOM
+syn keyword baanConstant ST.FIND.DATA
+syn keyword baanConstant ST.FIRST.SET
+syn keyword baanConstant ST.LAST.SET
+syn keyword baanConstant ST.MARK.DELETE
+syn keyword baanConstant ST.MARK.OCCUR
+syn keyword baanConstant ST.MB
+syn keyword baanConstant ST.MB.ZOOM
+syn keyword baanConstant ST.MODIFY.SET
+syn keyword baanConstant ST.MULTI.2
+syn keyword baanConstant ST.MULTI.3
+syn keyword baanConstant ST.NUM.ZOOM
+syn keyword baanConstant ST.NUMERIC
+syn keyword baanConstant ST.PROG.BUSY
+syn keyword baanConstant ST.SINGLE.1
+syn keyword baanConstant ST.SINGLE.3
+syn keyword baanConstant ST.SINGLE.4
+syn keyword baanConstant ST.SORT
+syn keyword baanConstant ST.STRING
+syn keyword baanConstant ST.STRING.ZOOM
+syn keyword baanConstant ST.TEXT
+syn keyword baanConstant ST.TEXT.ZOOM
+syn keyword baanConstant ST.TIME
+syn keyword baanConstant ST.TIME.ZOOM
+syn keyword baanConstant ST.UPDATE.DB
+syn keyword baanConstant ST.ZOOM
+syn keyword baanConstant START.CHART
+syn keyword baanConstant START.QUERY
+syn keyword baanConstant START.SET
+syn keyword baanConstant STAT_EXECUTABLE
+syn keyword baanConstant STAT_READABLE
+syn keyword baanConstant STAT_WRITEABLE
+syn keyword baanConstant SUBDAL
+syn keyword baanConstant TDIR
+syn keyword baanConstant TEXT.MANAGER
+syn keyword baanConstant TFILE
+syn keyword baanConstant TRUE
+syn keyword baanConstant UPDATE.DB
+syn keyword baanConstant USER.0
+syn keyword baanConstant USER.1
+syn keyword baanConstant USER.2
+syn keyword baanConstant USER.3
+syn keyword baanConstant USER.4
+syn keyword baanConstant USER.5
+syn keyword baanConstant USER.6
+syn keyword baanConstant USER.7
+syn keyword baanConstant USER.8
+syn keyword baanConstant USER.9
+syn keyword baanConstant WINDOW.DIALOG
+syn keyword baanConstant WINDOW.LIST
+syn keyword baanConstant WINDOW.MMTCONTROLLER
+syn keyword baanConstant WINDOW.MMTSATELLITE
+syn keyword baanConstant WINDOW.MODAL.MENU
+syn keyword baanConstant WINDOW.MODELESS.MENU
+syn keyword baanConstant WINDOW.NONE
+syn keyword baanConstant WINDOW.PARAMETER
+syn keyword baanConstant WINDOW.SYNCHRONIZED
+syn keyword baanConstant WINDOW.WIZARD
+syn keyword baanConstant WITH.ROLLBACK
+syn keyword baanConstant WU.DLL
+syn keyword baanConstant WU.DOMA
+syn keyword baanConstant WU.FLDN
+syn keyword baanConstant WU.LANGOPT
+syn keyword baanConstant WU.MESS
+syn keyword baanConstant WU.QUES
+syn keyword baanConstant WU.SESS
+syn keyword baanConstant WU.TABL
+syn keyword baanConstant XML_DATA
+syn keyword baanConstant XML_DTD
+syn keyword baanConstant XML_ELEMENT
+syn keyword baanConstant XML_PI
+syn keyword baanConstant Z.AUTOACCEPT
+syn keyword baanConstant Z.AUTOZOOM
+syn keyword baanConstant Z.MENU
+syn keyword baanConstant Z.SESSION
+syn keyword baanConstant ZOOM
+
 
 "************************************* 4GL ************************************"
 " Program section
@@ -83,9 +873,9 @@ syn match baan4glh "before\.display\.obj
 syn match baan4glh "form\.\d\+:"
 syn match baan4glh "form\.all:"
 syn match baan4glh "form\.other:"
-syn match baan4gl "init\.form:"
-syn match baan4gl "before\.form:"
-syn match baan4gl "after\.form:"
+syn match baan4gl  "init\.form:"
+syn match baan4gl  "before\.form:"
+syn match baan4gl  "after\.form:"
 
 " Choice section
 syn match baan4glh "choice\.start\.set:"
@@ -139,31 +929,32 @@ syn match baan4glh "choice\.calendar:"
 syn match baan4glh "choice\.bms:"
 syn match baan4glh "choice\.cmd\.whats\.this:"
 syn match baan4glh "choice\.help\.index:"
-syn match baan4gl "before\.choice:"
-syn match baan4gl "on\.choice:"
-syn match baan4gl "after\.choice:"
+syn match baan4gl  "before\.choice:"
+syn match baan4gl  "on\.choice:"
+syn match baan4gl  "after\.choice:"
 
 " Field section
-syn match baan4glh "field\.\l\{5}\d\{3}\.\l\{4}\.\=c\=:"
+syn match baan4glh "field\.\l\{5}\d\{3}\.\l\{4,8}\.\=c\=:"
 syn match baan4glh "field\.e\..\+:"
 syn match baan4glh "field\.all:"
 syn match baan4glh "field\.other:"
-syn match baan4gl "init\.field:"
-syn match baan4gl "before\.field:"
-syn match baan4gl "before\.input:"
-syn match baan4gl "before\.display:"
-syn match baan4gl "before\.zoom:"
-syn match baan4gl "before\.checks:"
-syn match baan4gl "domain\.error:"
-syn match baan4gl "ref\.input:"
-syn match baan4gl "ref\.display:"
-syn match baan4gl "check\.input:"
-syn match baan4gl "on\.input:"
-syn match baan4gl "when\.field\.changes:"
-syn match baan4gl "after\.zoom:"
-syn match baan4gl "after\.input:"
-syn match baan4gl "after\.display:"
-syn match baan4gl "after\.field:"
+syn match baan4gl  "init\.field:"
+syn match baan4gl  "before\.field:"
+syn match baan4gl  "before\.input:"
+syn match baan4gl  "before\.display:"
+syn match baan4gl "selection\.filter:"
+syn match baan4gl  "before\.zoom:"
+syn match baan4gl  "before\.checks:"
+syn match baan4gl  "domain\.error:"
+syn match baan4gl  "ref\.input:"
+syn match baan4gl  "ref\.display:"
+syn match baan4gl  "check\.input:"
+syn match baan4gl  "on\.input:"
+syn match baan4gl  "when\.field\.changes:"
+syn match baan4gl  "after\.zoom:"
+syn match baan4gl  "after\.input:"
+syn match baan4gl  "after\.display:"
+syn match baan4gl  "after\.field:"
 
 " Group section
 syn match baan4glh "group\.\d\+:"
@@ -175,6 +966,7 @@ syn match baan4gl "after\.group:"
 syn match baan4glh "zoom\.from\..\+:"
 syn match baan4gl "on\.entry:"
 syn match baan4gl "on\.exit:"
+
 " Main table section
 syn match baan4glh "main\.table\.io:"
 syn match baan4gl "before\.read:"
@@ -190,6 +982,24 @@ syn match baan4gl "after\.delete:"
 syn match baan4gl "after\.skip\.delete:"
 syn match baan4gl "read\.view:"
 
+"**************************** Dal Hooks ********************************
+syn keyword baanDalHook after.abort.transaction after.commit.transaction after.destroy.object 
+syn keyword baanDalHook after.change.object after.get.object after.new.object after.save.object before.change.object
+syn keyword baanDalHook before.destroy.object before.get.object before.new.object before.open.object.set before.save.object
+syn keyword baanDalHook method.is.allowed set.object.defaults
+
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.check"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.valid"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.applicable"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.never.applicable"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.derived"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.readonly"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.is.mandatory"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.make.valid"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\.update"
+syn match baanDalHook "\l\{5}\d\{3}\.\l\{4,8}\..*\.is.applicable"
+
+
 "number without a dot."
 syn match  baanNumber		"\<\-\=\d\+\>"
 "number with dot"
@@ -197,8 +1007,10 @@ syn match  baanNumber		"\<\-\=\d\+\.\d*\
 "number starting with a dot"
 syn match  baanNumber		"\<\-\=\.\d\+\>"
 
-" String"
-syn region  baanString	start=+"+  skip=+""+  end=+"+
+" String Error does not work correct with vim 6.0
+syn match   baanOpenStringError +^[^^"]+ display contained excludenl
+syn region  baanString	start=+"+  skip=+""+  end=+"+ end=+^[^^]+ contains=baanOpenStringError keepend
+
 " Comment"
 syn match   baanComment "|$"
 syn match   baanComment "|.$"
@@ -208,20 +1020,885 @@ syn match   baanCommenth "^|#lra.*$"
 syn match   baanCommenth "^|#mdm.*$"
 syn match   baanCommenth "^|#[0-9][0-9][0-9][0-9][0-9].*$"
 syn match   baanCommenth "^|#N\=o\=Include.*$"
-syn region  baanComment start="dllusage" end="enddllusage"
 " Oldcode"
 syn match   baanUncommented	"^|[^*#].*[^ ]"
+" DLL section
 " SpaceError"
-syn match  BaanSpaces	" "
-syn match  baanSpaceError	"\s*$"
-syn match  baanSpaceError	"        "
+syn match    baanSpaces	" "
+syn match    baanSpaceError	"\s*$"
+syn match    baanSpaceError	"        "
+
+" Baan error"
+
+if exists("baan_code_stds") && baan_code_stds
+syn match  BaanError	"^\s*i\..*=\s*\(\k\|\"\)*\s*$"		"assignment of an input var"
+syn match  BaanError	"^\s*ref.*\s[ilse]\..*$"		" ref variable defined with i, l, e and s"
+syn match  BaanError	"^\s*const.*\s[olse]\..*$"		" const variable defined with o, l, e and s"
+syn match  BaanError	"^\s*static.*\s\(i\|g\|l\|o\|io\)\..*$"	" static defined without s."
+syn match  BaanError	"^\s*\(domain\s\|long\s\|string\s\).*\so\.\k*[,)]"	" ref variable without ref"
+syn match  BaanError	"^\s*\(domain\s\|long\s\|string\s\).*\se\.\k*[,)]"	" 'e.' variable without extern"
+syn match  BaanError	"^\s*i\..*,\s*|\s*ref.*$"	" 
+endif
+
+"**************************** bshell functions ********************************
+syn match   baanBshell "\<shiftl\$"
+syn match   baanBshell "\<shiftr\$"
+syn match   baanBshell "\<shiftc\$"
+syn match   baanBshell "\<strip\$"
+syn match   baanBshell "\<tolower\$"
+syn match   baanBshell "\<toupper\$"
+syn keyword baanBshell isdigit
+syn keyword baanBshell isspace
+syn match   baanBshell "\<chr\$"
+syn keyword baanBshell len.in.bytes
+syn keyword baanBshell rpos
+syn match   baanBshell "\<sprintf\$"
+syn match   baanBshell "\<vsprintf\$"
+syn match   baanBshell "\<concat\$"
+syn keyword baanBshell gregdate
+syn match   baanBshell "\<w.to.dat\$"
+syn keyword baanBshell ttyname
+syn match   baanBshell "\<ttyname\$"
+syn match   baanBshell "\<creat.tmp.file\$"
+syn match   baanBshell "\<string.set\$"
+syn keyword baanBshell string.scan
+syn keyword baanBshell not.fixed
+syn keyword baanBshell dummy
+syn keyword baanBshell alloc.mem
+syn keyword baanBshell free.mem
+syn keyword baanBshell copy.mem
+syn keyword baanBshell cmp.mem
+syn keyword baanBshell set.mem
+syn keyword baanBshell num.to.date
+syn keyword baanBshell date.to.num
+syn keyword baanBshell num.to.week
+syn keyword baanBshell week.to.num
+syn match   baanBshell "\<num.to.date\$"
+syn keyword baanBshell expr.compile
+syn keyword baanBshell l.expr
+syn keyword baanBshell d.expr
+syn match   baanBshell "\<s.expr\$"
+syn keyword baanBshell expr.free
+syn keyword baanBshell compnr.check
+syn match   baanBshell "\<bse.dir\$"
+syn match   baanBshell "\<bse.tmp.dir\$"
+syn match   baanBshell "\<bse.release\$"
+syn match   baanBshell "\<bse.portset\$"
+syn match   baanBshell "\<getenv\$"
+syn keyword baanBshell base.extern
+syn keyword baanBshell at.base
+syn keyword baanBshell get.compnr
+syn keyword baanBshell base.next
+syn keyword baanBshell get.argc
+syn keyword baanBshell get.long.arg
+syn keyword baanBshell get.double.arg
+syn keyword baanBshell get.string.arg
+syn keyword baanBshell get.arg.type
+syn keyword baanBshell put.long.arg
+syn keyword baanBshell put.double.arg
+syn keyword baanBshell put.string.arg
+syn keyword baanBshell setenv
+syn keyword baanBshell cmp.password
+syn match   baanBshell "\<crypt.password\$"
+syn keyword baanBshell is.password.ok
+syn keyword baanBshell block.cipher.encrypt
+syn keyword baanBshell block.cipher.decrypt
+syn keyword baanBshell encrypt.user.password
+syn keyword baanBshell verify.user.password
+syn keyword baanBshell asm.put.instance.id
+syn match   baanBshell "\<date.to.inputstr\$"
+syn keyword baanBshell inputstr.to.date
+syn match   baanBshell "\<hostname\$"
+syn keyword baanBshell base64.encode
+syn keyword baanBshell base64.decode
+syn keyword baanBshell sha.create
+syn keyword baanBshell sha.initialize
+syn keyword baanBshell sha.add.data
+syn keyword baanBshell sha.compute.output
+syn keyword baanBshell sha.destroy
+syn match   baanBshell "\<uuid.generate\$"
+syn match   baanBshell "\<uuid.format\$"
+syn keyword baanBshell resolve.labels.by.lookupkey
+syn keyword baanBshell resolve.labels.by.codepair
+syn keyword baanBshell lookupkey.hash
+syn keyword baanBshell lookupkey.unhash
+syn match   baanBshell "\<mb.long.to.str\$"
+syn keyword baanBshell mb.width
+syn match   baanBshell "\<mb.localename\$"
+syn match   baanBshell "\<mb.tss.clean\$"
+syn match   baanBshell "\<mb.ext.clean\$"
+syn match   baanBshell "\<mb.import\$"
+syn match   baanBshell "\<mb.export\$"
+syn keyword baanBshell mb.import.raw
+syn keyword baanBshell mb.export.raw
+syn keyword baanBshell uni.import
+syn keyword baanBshell uni.export
+syn keyword baanBshell utf8.import
+syn keyword baanBshell utf8.export
+syn keyword baanBshell mb.strpos
+syn keyword baanBshell mb.scrpos
+syn keyword baanBshell mb.char
+syn keyword baanBshell mb.type
+syn match   baanBshell "\<mb.cast\$"
+syn match   baanBshell "\<mb.cast.to.str\$"
+syn keyword baanBshell mb.display
+syn keyword baanBshell mb.isbidi
+syn keyword baanBshell mb.isbidi.language
+syn match   baanBshell "\<mb.rev\$"
+syn keyword baanBshell mb.hasbidi
+syn keyword baanBshell mb.kb.lang
+syn keyword baanBshell mb.locale.info
+syn keyword baanBshell mb.locale.enumerate
+syn keyword baanBshell mb.nsets
+syn keyword baanBshell mb.set.info
+syn keyword baanBshell mb.char.info
+syn keyword baanBshell key.compare
+syn keyword baanBshell set.fields.default
+syn keyword baanBshell table.round
+syn keyword baanBshell halfadj
+syn keyword baanBshell round
+syn keyword baanBshell format.round
+syn match   baanBshell "\<edit\$"
+syn match   baanBshell "\<str\$"
+syn keyword baanBshell lval
+syn keyword baanBshell acos
+syn keyword baanBshell asin
+syn keyword baanBshell atan
+syn keyword baanBshell atan2
+syn keyword baanBshell cosh
+syn keyword baanBshell sinh
+syn keyword baanBshell tanh
+syn keyword baanBshell log10
+syn keyword baanBshell sqrt
+syn keyword baanBshell lpow
+syn keyword baanBshell random
+syn keyword baanBshell srand
+syn keyword baanBshell rnd.init
+syn keyword baanBshell rnd.i
+syn keyword baanBshell rnd.d
+syn keyword baanBshell double.cmp
+syn match   baanBshell "\<tab\$"
+syn keyword baanBshell aux.open
+syn keyword baanBshell aux.print
+syn keyword baanBshell aux.close
+syn keyword baanBshell refresh
+syn keyword baanBshell cl.screen
+syn match   baanBshell "\<delch\$"
+syn match   baanBshell "\<deleteln\$"
+syn match   baanBshell "\<insch\$"
+syn match   baanBshell "\<insertln\$"
+syn keyword baanBshell change.window
+syn keyword baanBshell data.input
+syn keyword baanBshell del.window
+syn keyword baanBshell frame.window
+syn keyword baanBshell new.window
+syn keyword baanBshell window.size
+syn keyword baanBshell move.window
+syn keyword baanBshell resize.window
+syn keyword baanBshell get.row
+syn keyword baanBshell get.col
+syn keyword baanBshell get.cp
+syn keyword baanBshell map.window
+syn keyword baanBshell unmap.window
+syn keyword baanBshell set.bg.color
+syn keyword baanBshell set.fg.color
+syn keyword baanBshell no.scroll
+syn keyword baanBshell scroll
+syn keyword baanBshell cursor.on
+syn keyword baanBshell cursor.off
+syn keyword baanBshell sub.window
+syn keyword baanBshell current.window
+syn match   baanBshell "\<keyin\$"
+syn keyword baanBshell dump.screen
+syn keyword baanBshell first.window
+syn keyword baanBshell last.window
+syn keyword baanBshell free.window
+syn keyword baanBshell #input
+syn keyword baanBshell #output
+syn keyword baanBshell wrebuild
+syn keyword baanBshell select.event.input
+syn keyword baanBshell next.event
+syn keyword baanBshell peek.event
+syn keyword baanBshell pending.events
+syn keyword baanBshell send.event
+syn keyword baanBshell send.signal
+syn keyword baanBshell get.display.data
+syn keyword baanBshell open.display
+syn keyword baanBshell link.display
+syn keyword baanBshell link.keyboard
+syn keyword baanBshell unlink.keyboard
+syn keyword baanBshell close.display
+syn keyword baanBshell current.display
+syn keyword baanBshell change.display
+syn keyword baanBshell sync.display.server
+syn match   baanBshell "\<get.class.name\$"
+syn keyword baanBshell create.mwindow
+syn keyword baanBshell current.mwindow
+syn keyword baanBshell change.mwindow
+syn keyword baanBshell set.mwindow.title
+syn keyword baanBshell set.mwindow.size
+syn keyword baanBshell set.mwindow.mode
+syn keyword baanBshell get.mwindow.mode
+syn keyword baanBshell destroy.mwindow
+syn keyword baanBshell dialog
+syn keyword baanBshell get.mwindow.size
+syn keyword baanBshell create.bar
+syn keyword baanBshell current.bar
+syn keyword baanBshell change.bar
+syn keyword baanBshell change.bar.attr
+syn keyword baanBshell destroy.bar
+syn keyword baanBshell create.bar.button
+syn keyword baanBshell change.bar.item.attr
+syn keyword baanBshell destroy.bar.item
+syn keyword baanBshell create.object
+syn keyword baanBshell change.object
+syn keyword baanBshell get.object
+syn keyword baanBshell query.object
+syn keyword baanBshell destroy.object
+syn keyword baanBshell get.event.attribute
+syn keyword baanBshell create.sub.object
+syn keyword baanBshell create.sub.object.by.id
+syn keyword baanBshell change.sub.object
+syn keyword baanBshell get.sub.object
+syn keyword baanBshell query.sub.object
+syn keyword baanBshell destroy.sub.object
+syn keyword baanBshell create.arglist
+syn keyword baanBshell add.arg
+syn keyword baanBshell add.ref.arg
+syn keyword baanBshell delete.arg
+syn keyword baanBshell print.arglist
+syn keyword baanBshell destroy.arglist
+syn keyword baanBshell get.object.class.list
+syn keyword baanBshell get.object.class
+syn keyword baanBshell get.sub.object.class
+syn keyword baanBshell get.resource.class
+syn keyword baanBshell get.event.class
+syn keyword baanBshell get.pixmap.info
+syn keyword baanBshell compress.pixmap
+syn keyword baanBshell decompress.pixmap
+syn keyword baanBshell get.window.attrs
+syn keyword baanBshell get.mwindow.attrs
+syn keyword baanBshell create.gc
+syn keyword baanBshell change.gc
+syn keyword baanBshell get.gc
+syn keyword baanBshell destroy.gc
+syn keyword baanBshell load.font
+syn keyword baanBshell query.font
+syn keyword baanBshell free.font
+syn keyword baanBshell get.typeface
+syn keyword baanBshell list.fonts
+syn keyword baanBshell text.extends
+syn keyword baanBshell inherit.object
+syn keyword baanBshell create.gtext
+syn keyword baanBshell create.line
+syn keyword baanBshell create.polyline
+syn keyword baanBshell create.polygon
+syn keyword baanBshell create.rectangle
+syn keyword baanBshell create.arc
+syn keyword baanBshell create.pie
+syn keyword baanBshell create.composite
+syn keyword baanBshell create.image
+syn keyword baanBshell change.gtext
+syn keyword baanBshell change.gtext.label
+syn keyword baanBshell change.line
+syn keyword baanBshell change.polyline
+syn keyword baanBshell change.polygon
+syn keyword baanBshell change.rectangle
+syn keyword baanBshell change.arc
+syn keyword baanBshell change.pie
+syn keyword baanBshell get.gtext
+syn keyword baanBshell get.gtext.label
+syn keyword baanBshell get.line
+syn keyword baanBshell get.polyline
+syn keyword baanBshell get.polygon
+syn keyword baanBshell get.rectangle
+syn keyword baanBshell get.arc
+syn keyword baanBshell get.pie
+syn keyword baanBshell get.composite
+syn keyword baanBshell get.image
+syn keyword baanBshell move.gpart
+syn keyword baanBshell shift.gpart
+syn keyword baanBshell which.gpart
+syn keyword baanBshell which.gparts
+syn keyword baanBshell change.gpart.gc
+syn keyword baanBshell get.gpart.gc
+syn keyword baanBshell destroy.gpart
+syn keyword baanBshell destroy.composite
+syn keyword baanBshell first.gpart
+syn keyword baanBshell last.gpart
+syn keyword baanBshell next.gpart
+syn keyword baanBshell prev.gpart
+syn keyword baanBshell change.gpart.attr
+syn keyword baanBshell get.gpart.attr
+syn keyword baanBshell get.gpart
+syn keyword baanBshell get.gpart.box
+syn keyword baanBshell resize.gpart.box
+syn keyword baanBshell move.gpart.box
+syn keyword baanBshell activate
+syn keyword baanBshell reactivate
+syn keyword baanBshell act.and.sleep
+syn keyword baanBshell sleep
+syn match   baanBshell "\<receive.bucket\$"
+syn keyword baanBshell send.bucket
+syn keyword baanBshell send.wait
+syn keyword baanBshell bms.send
+syn match   baanBshell "\<bms.receive\$"
+syn keyword baanBshell bms.receive.buffer
+syn keyword baanBshell bms.add.mask
+syn keyword baanBshell bms.delete.mask
+syn keyword baanBshell bms.init
+syn keyword baanBshell wait.and.activate
+syn keyword baanBshell abort
+syn keyword baanBshell kill
+syn keyword baanBshell shell
+syn match   baanBshell "\<argv\$"
+syn keyword baanBshell argc
+syn keyword baanBshell get.var
+syn keyword baanBshell put.var
+syn keyword baanBshell get.ref.var
+syn keyword baanBshell put.ref.var
+syn keyword baanBshell get.indexed.var
+syn keyword baanBshell put.indexed.var
+syn keyword baanBshell on.change.check
+syn keyword baanBshell off.change.check
+syn keyword baanBshell changed
+syn keyword baanBshell not.curr
+syn keyword baanBshell handle.report.pool
+syn keyword baanBshell get.symbol
+syn keyword baanBshell suspend
+syn keyword baanBshell set.timer
+syn keyword baanBshell set.alarm
+syn keyword baanBshell kill.timer
+syn keyword baanBshell pstat
+syn keyword baanBshell oipstat
+syn keyword baanBshell obj_in_core
+syn keyword baanBshell renice
+syn keyword baanBshell kill.pgrp
+syn keyword baanBshell set.pgrp
+syn keyword baanBshell get.pgrp
+syn keyword baanBshell grab.mwindow
+syn keyword baanBshell signal
+syn keyword baanBshell ptrace
+syn keyword baanBshell link.on.stack
+syn match   baanBshell "\<zoom.to\$"
+syn keyword baanBshell retry.point
+syn keyword baanBshell jump.retry.point
+syn keyword baanBshell retry.level
+syn keyword baanBshell get.bw.hostname
+syn keyword baanBshell exit
+syn match   baanBshell "\<dte\$"
+syn keyword baanBshell times.on
+syn keyword baanBshell times.off
+syn keyword baanBshell times.close
+syn keyword baanBshell times.total
+syn keyword baanBshell times.lines
+syn keyword baanBshell date.num
+syn keyword baanBshell time.num
+syn keyword baanBshell date.time.utc
+syn keyword baanBshell utc.to.local
+syn keyword baanBshell local.to.utc
+syn keyword baanBshell input.field
+syn keyword baanBshell output.field
+syn keyword baanBshell key.to.option
+syn keyword baanBshell option.to.key
+syn keyword baanBshell get.choice.data
+syn keyword baanBshell reset.zoom.info
+syn keyword baanBshell next.field
+syn keyword baanBshell print.form
+syn keyword baanBshell set.field.blank
+syn keyword baanBshell read.form
+syn keyword baanBshell read.fast.form
+syn keyword baanBshell change.form.field
+syn keyword baanBshell copy.form.field
+syn keyword baanBshell delete.form.field
+syn keyword baanBshell iget.field.attr
+syn keyword baanBshell sget.field.attr
+syn keyword baanBshell menu.control
+syn keyword baanBshell wait
+syn match baanBshell "\<bms.peek\$"
+syn keyword baanBshell create.menu
+syn keyword baanBshell refresh.bar.menu
+syn keyword baanBshell load.menu
+syn keyword baanBshell current.menu
+syn keyword baanBshell change.menu
+syn keyword baanBshell popup.menu
+syn keyword baanBshell set.menu
+syn keyword baanBshell change.menu.attr
+syn keyword baanBshell destroy.menu
+syn keyword baanBshell create.menu.button
+syn keyword baanBshell create.cascade.button
+syn keyword baanBshell change.menu.item.name
+syn keyword baanBshell change.cascade.menu
+syn keyword baanBshell change.menu.item.attr
+syn keyword baanBshell get.cascade.menu
+syn keyword baanBshell destroy.menu.item
+syn keyword baanBshell form.control
+syn match   baanBshell "\<form.text\$"
+syn keyword baanBshell status.on
+syn keyword baanBshell status.off
+syn keyword baanBshell status.mess
+syn keyword baanBshell status.field
+syn match   baanBshell "\<enum.descr\$"
+syn keyword baanBshell mark.occurrence
+syn keyword baanBshell start.mark
+syn keyword baanBshell end.mark
+syn keyword baanBshell get.attrs
+syn keyword baanBshell put.attrs
+syn keyword baanBshell act.zoom
+syn keyword baanBshell init.first
+syn keyword baanBshell init.last
+syn keyword baanBshell init.next
+syn keyword baanBshell init.prev
+syn keyword baanBshell set.max
+syn keyword baanBshell set.min
+syn keyword baanBshell set.fmax
+syn keyword baanBshell set.fmin
+syn keyword baanBshell print.const
+syn keyword baanBshell is.option.on
+syn keyword baanBshell brp.build
+syn keyword baanBshell brp.field
+syn keyword baanBshell pathname
+syn keyword baanBshell file.stat
+syn keyword baanBshell file.cp
+syn keyword baanBshell file.mv
+syn keyword baanBshell file.rm
+syn keyword baanBshell file.chown
+syn keyword baanBshell file.chmod
+syn keyword baanBshell stat.info
+syn keyword baanBshell disk.info
+syn keyword baanBshell mkdir
+syn keyword baanBshell rmdir
+syn keyword baanBshell open.message
+syn keyword baanBshell send.message
+syn keyword baanBshell recv.message
+syn keyword baanBshell close.message
+syn keyword baanBshell store.byte
+syn keyword baanBshell store.short
+syn keyword baanBshell store.long
+syn keyword baanBshell store.float
+syn keyword baanBshell store.double
+syn keyword baanBshell load.byte
+syn keyword baanBshell load.short
+syn keyword baanBshell load.long
+syn keyword baanBshell load.float
+syn keyword baanBshell load.double
+syn keyword baanBshell bit.and
+syn keyword baanBshell bit.or
+syn keyword baanBshell bit.exor
+syn keyword baanBshell bit.inv
+syn keyword baanBshell bit.in
+syn keyword baanBshell bit.shiftl
+syn keyword baanBshell bit.shiftr
+syn keyword baanBshell check.domain
+syn keyword baanBshell check.all.domain
+syn keyword baanBshell seq.clearerr
+syn keyword baanBshell seq.eof
+syn keyword baanBshell seq.error
+syn keyword baanBshell seq.open
+syn keyword baanBshell seq.close
+syn keyword baanBshell seq.flush
+syn keyword baanBshell seq.rewind
+syn keyword baanBshell seq.tell
+syn keyword baanBshell seq.read
+syn keyword baanBshell seq.write
+syn match   baanBshell "\<seq.getc\$"
+syn match   baanBshell "\<seq.putc\$"
+syn match   baanBshell "\<seq.ungetc\$"
+syn keyword baanBshell seq.skip
+syn keyword baanBshell seq.seek
+syn keyword baanBshell seq.gets
+syn keyword baanBshell seq.puts
+syn keyword baanBshell seq.unlink
+syn keyword baanBshell seq.spool.line
+syn keyword baanBshell seq.r.long
+syn keyword baanBshell seq.w.long
+syn keyword baanBshell seq.r.short
+syn keyword baanBshell seq.w.short
+syn keyword baanBshell seq.lock
+syn keyword baanBshell seq.unlock
+syn keyword baanBshell seq.islocked
+syn keyword baanBshell pipe.open
+syn keyword baanBshell pipe.close
+syn keyword baanBshell pipe.flush
+syn keyword baanBshell pipe.gets
+syn keyword baanBshell pipe.puts
+syn keyword baanBshell pipe.read
+syn keyword baanBshell pipe.write
+syn keyword baanBshell pipe.clearerr
+syn keyword baanBshell pipe.eof
+syn keyword baanBshell pipe.error
+syn keyword baanBshell sock.connect
+syn keyword baanBshell sock.listen
+syn keyword baanBshell sock.accept
+syn keyword baanBshell sock.recv
+syn keyword baanBshell sock.send
+syn keyword baanBshell sock.flush
+syn keyword baanBshell sock.close
+syn keyword baanBshell sock.inherit
+syn keyword baanBshell sock.clearerr
+syn keyword baanBshell sock.eof
+syn keyword baanBshell sock.error
+syn keyword baanBshell get.system.info
+syn keyword baanBshell get.db.count
+syn keyword baanBshell get.db.system.info
+syn keyword baanBshell path.is.absolute
+syn keyword baanBshell make.path.absolute
+syn keyword baanBshell fstat.info
+syn keyword baanBshell dir.open
+syn keyword baanBshell dir.open.tree
+syn keyword baanBshell dir.close
+syn keyword baanBshell dir.entry
+syn keyword baanBshell dir.rewind
+syn keyword baanBshell ims.clearerr
+syn keyword baanBshell ims.eof
+syn keyword baanBshell ims.error
+syn keyword baanBshell ims.close
+syn keyword baanBshell ims.flush
+syn keyword baanBshell ims.rewind
+syn keyword baanBshell ims.tell
+syn keyword baanBshell ims.read
+syn keyword baanBshell ims.write
+syn match   baanBshell "\<ims.getc\$"
+syn match   baanBshell "\<ims.putc\$"
+syn keyword baanBshell ims.skip
+syn keyword baanBshell ims.seek
+syn keyword baanBshell ims.gets
+syn keyword baanBshell ims.puts
+syn keyword baanBshell ims.spool.line
+syn keyword baanBshell ims.r.long
+syn keyword baanBshell ims.w.long
+syn keyword baanBshell ims.r.short
+syn keyword baanBshell ims.w.short
+syn keyword baanBshell ims.openfba
+syn keyword baanBshell ims.openvba
+syn keyword baanBshell ims.getproperties
+syn keyword baanBshell ims.setvbaproperties
+syn keyword baanBshell db.get.physical.compnr
+syn keyword baanBshell db.bind
+syn keyword baanBshell db.unbind
+syn keyword baanBshell db.error
+syn keyword baanBshell db.error.message
+syn keyword baanBshell db.detail.error
+syn keyword baanBshell db.first
+syn keyword baanBshell db.last
+syn keyword baanBshell db.next
+syn keyword baanBshell db.prev
+syn keyword baanBshell db.gt
+syn keyword baanBshell db.ge
+syn keyword baanBshell db.eq
+syn keyword baanBshell db.curr
+syn keyword baanBshell db.lt
+syn keyword baanBshell db.le
+syn keyword baanBshell db.delete
+syn keyword baanBshell db.insert
+syn keyword baanBshell db.update
+syn keyword baanBshell db.check.row.changed
+syn keyword baanBshell db.check.row.domains
+syn keyword baanBshell db.check.restricted
+syn keyword baanBshell db.ref.handle.mode
+syn keyword baanBshell db.set.to.default
+syn keyword baanBshell db.create.index
+syn keyword baanBshell db.drop.index
+syn keyword baanBshell db.change.order
+syn keyword baanBshell db.create.table
+syn keyword baanBshell db.clear.table
+syn keyword baanBshell db.drop.table
+syn keyword baanBshell db.lock.table
+syn keyword baanBshell db.table.begin.import
+syn keyword baanBshell db.table.end.import
+syn keyword baanBshell db.table.update.statistics
+syn keyword baanBshell db.indexinfo
+syn keyword baanBshell db.nr.indices
+syn keyword baanBshell db.nr.rows
+syn keyword baanBshell db.row.length
+syn keyword baanBshell db.transaction.is.on
+syn keyword baanBshell commit.transaction
+syn keyword baanBshell set.transaction.readonly
+syn keyword baanBshell abort.transaction
+syn keyword baanBshell db.record.to.columns
+syn keyword baanBshell db.columns.to.record
+syn keyword baanBshell db.schedule
+syn keyword baanBshell db.permission
+syn keyword baanBshell db.set.notransaction
+syn keyword baanBshell db.set.transaction
+syn keyword baanBshell db.set.child.transaction
+syn keyword baanBshell get.db.permission
+syn keyword baanBshell get.session.permission
+syn keyword baanBshell ams.control
+syn keyword baanBshell db.get.old.row
+syn keyword baanBshell db.max.retry
+syn keyword baanBshell sql.parse
+syn keyword baanBshell sql.select.bind
+syn keyword baanBshell sql.where.bind
+syn keyword baanBshell sql.bind.input
+syn keyword baanBshell sql.exec
+syn keyword baanBshell sql.fetch
+syn keyword baanBshell sql.break
+syn keyword baanBshell sql.close
+syn keyword baanBshell sql.error
+syn keyword baanBshell sql.set.rds.full
+syn keyword baanBshell rdi.table
+syn keyword baanBshell rdi.index
+syn keyword baanBshell rdi.column
+syn keyword baanBshell rdi.table.column
+syn keyword baanBshell rdi.reference
+syn keyword baanBshell rdi.column.combined
+syn keyword baanBshell rdi.domain
+syn keyword baanBshell rdi.domain.long
+syn keyword baanBshell rdi.domain.double
+syn keyword baanBshell rdi.domain.string
+syn keyword baanBshell rdi.domain.raw
+syn keyword baanBshell rdi.domain.enum
+syn keyword baanBshell rdi.domain.enum.value
+syn keyword baanBshell rdi.domain.combined
+syn keyword baanBshell rdi.session.info
+syn keyword baanBshell rdi.session.dlls
+syn keyword baanBshell rdi.ref.route
+syn keyword baanBshell rdi.session.subject.info
+syn keyword baanBshell rdi.session.subject
+syn keyword baanBshell rdi.session.key
+syn keyword baanBshell rdi.session.form
+syn keyword baanBshell rdi.session.textfield
+syn keyword baanBshell rdi.first.day.of.week
+syn match   baanBshell "\<rdi.date.input.format\$"
+syn keyword baanBshell rdi.format.digits
+syn keyword baanBshell rdi.permission
+syn keyword baanBshell rdi.option.info
+syn keyword baanBshell rdi.option.short
+syn keyword baanBshell rdi.vrc.path
+syn keyword baanBshell rdi.audit.hosts
+syn keyword baanBshell rdi.table.sequence
+syn keyword baanBshell iget.fld.attr
+syn keyword baanBshell sget.fld.attr
+syn keyword baanBshell iget.frm.attr
+syn keyword baanBshell sget.frm.attr
+syn keyword baanBshell iput.fld.attr
+syn keyword baanBshell sput.fld.attr
+syn keyword baanBshell iput.frm.attr
+syn keyword baanBshell put.var.to.field
+syn keyword baanBshell get.var.from.field
+syn match   baanBshell "\<rdi.etoc\$"
+syn keyword baanBshell rdi.ctoe
+syn keyword baanBshell get.cust.code
+syn keyword baanBshell get.lic.no
+syn keyword baanBshell get.cust.name
+syn keyword baanBshell get.mach.id
+syn keyword baanBshell fsum
+syn match   baanBshell "\<get.resource\$"
+syn keyword baanBshell qss.sort
+syn keyword baanBshell qss.search
+syn keyword baanBshell load_dll
+syn keyword baanBshell exec_dll_function
+syn keyword baanBshell get_function
+syn keyword baanBshell exec_function
+syn keyword baanBshell parse_and_exec_function
+syn keyword baanBshell pty.open
+syn keyword baanBshell pty.close
+syn keyword baanBshell pty.read
+syn keyword baanBshell pty.write
+syn keyword baanBshell pty.winsize
+syn keyword baanBshell pty.winsize.ok
+syn keyword baanBshell pty.ok
+syn keyword baanBshell user.exists
+syn keyword baanBshell group.exists
+syn keyword baanBshell is.administrator
+syn keyword baanBshell mtime
+syn keyword baanBshell getcwd
+syn keyword baanBshell set.strip.mode
+syn keyword baanBshell set.symbol.strip.mode
+syn keyword baanBshell nullify.symbol
+syn keyword baanBshell bshell.pid
+syn keyword baanBshell create.new.symbol
+syn keyword baanBshell push.by.name
+syn keyword baanBshell array.info
+syn keyword baanBshell array.to.string
+syn keyword baanBshell many.to.string
+syn keyword baanBshell ostype
+syn keyword baanBshell utc.num
+syn keyword baanBshell set.time.zone
+syn keyword baanBshell get.time.zone
+syn keyword baanBshell run.prog
+syn keyword baanBshell run.baan.prog
+syn keyword baanBshell get.status.text
+syn keyword baanBshell dir.is.available
+syn keyword baanBshell dir.set.server
+syn keyword baanBshell dir.get.last.error
+syn keyword baanBshell dir.init.object
+syn keyword baanBshell dir.free.object
+syn keyword baanBshell dir.clear.object
+syn keyword baanBshell dir.create.object
+syn keyword baanBshell dir.get.object
+syn keyword baanBshell dir.remove.object
+syn keyword baanBshell dir.update.object
+syn keyword baanBshell dir.init.search
+syn keyword baanBshell dir.free.search
+syn keyword baanBshell dir.execute.search
+syn keyword baanBshell dir.abandon.search
+syn keyword baanBshell dir.get.first.row
+syn keyword baanBshell dir.get.next.row
+syn keyword baanBshell dir.get.prev.row
+syn keyword baanBshell dir.get.element.count
+syn keyword baanBshell dir.get.element.name
+syn keyword baanBshell dir.get.element.type
+syn keyword baanBshell dir.get.value.count
+syn keyword baanBshell dir.add.element
+syn keyword baanBshell dir.add.element.int
+syn keyword baanBshell dir.add.element.str
+syn keyword baanBshell dir.add.element.time
+syn keyword baanBshell dir.get.value.int
+syn keyword baanBshell dir.get.value.str
+syn keyword baanBshell dir.get.value.time
+syn keyword baanBshell dir.get.value.named.str
+syn keyword baanBshell dir.set.value.int
+syn keyword baanBshell dir.set.value.str
+syn keyword baanBshell dir.set.value.time
+syn keyword baanBshell dir.set.value.named.str
+syn keyword baanBshell dir.remove.element
+syn keyword baanBshell dir.find.element
+syn keyword baanBshell utc.add
+syn keyword baanBshell type.define
+syn keyword baanBshell type.free
+syn keyword baanBshell type.get.fieldnumber
+syn keyword baanBshell container.create
+syn keyword baanBshell container.clear
+syn keyword baanBshell container.resize
+syn keyword baanBshell container.set.nfields
+syn keyword baanBshell container.set.ifields
+syn keyword baanBshell container.set.fields
+syn keyword baanBshell container.get.nfields
+syn keyword baanBshell container.get.ifields
+syn keyword baanBshell container.get.fields
+syn keyword baanBshell container.actual.size
+syn keyword baanBshell container.get.actual.size
+syn keyword baanBshell container.set.actual.size
+syn keyword baanBshell container.size
+syn keyword baanBshell container.free
+syn keyword baanBshell xma.process_next_event
+syn keyword baanBshell xma.init_instance
+syn keyword baanBshell fini.service
+syn keyword baanBshell corba.boa.process_next_event
+syn keyword baanBshell corba.boa.set_impl
+syn keyword baanBshell corba.available
+syn keyword baanBshell corba.orb.string_to_object
+syn keyword baanBshell corba.orb.release
+syn keyword baanBshell corba.request.invoke
+syn keyword baanBshell corba.request.send
+syn keyword baanBshell corba.request.get_response
+syn keyword baanBshell corba.request.object
+syn keyword baanBshell corba.request.delete
+syn keyword baanBshell set.debug.cpu.opts
+syn keyword baanBshell get.debug.cpu.opts
+syn match   baanBshell "\<bsh.mesg\$"
+syn keyword baanBshell toggle.cpu
+syn keyword baanBshell cpu.is.debug
+syn keyword baanBshell set.profprint
+syn keyword baanBshell art.init
+syn keyword baanBshell art.define.transaction.class
+syn keyword baanBshell art.begin.transaction
+syn keyword baanBshell art.update.transaction
+syn keyword baanBshell art.end.transaction
+syn keyword baanBshell java.new.queue
+syn keyword baanBshell java.destroy.queue
+syn keyword baanBshell java.install.listener
+syn keyword baanBshell java.uninstall.listener
+syn keyword baanBshell java.put.bucket
+syn keyword baanBshell java.get.bucket
+syn keyword baanBshell java.lookup.queue
+syn keyword baanBshell java.execute.static.method
+syn keyword baanBshell java.execute.static.method.sync
+syn keyword baanBshell java.execute.static.method.async
+syn keyword baanBshell xml.write
+syn keyword baanBshell xml.read
+syn keyword baanBshell xml.newnode
+syn keyword baanBshell xml.unlinknode
+syn keyword baanBshell xml.deletenode
+syn keyword baanBshell xml.appendchildnode
+syn keyword baanBshell xml.addnode
+syn keyword baanBshell xml.insertnode
+syn keyword baanBshell xml.duplicatenode
+syn keyword baanBshell xml.setnodeproperties
+syn keyword baanBshell xml.getnodeproperties
+syn keyword baanBshell xml.deletenodeproperties
+syn keyword baanBshell xml.findfirstnode
+syn keyword baanBshell xml.findnodes
+syn keyword baanBshell xml.findsetofsiblingnodes
+syn keyword baanBshell xmlcontainsvalidcharactersonly
+syn keyword baanBshell xmlwrite
+syn keyword baanBshell xmlwritepretty
+syn keyword baanBshell xmlwritetostring
+syn keyword baanBshell xmlwriteprettytostring
+syn keyword baanBshell xmlread
+syn keyword baanBshell xmlreadfromstring
+syn keyword baanBshell xmlnewnode
+syn keyword baanBshell xmlnewdataelement
+syn keyword baanBshell xmlrewritedataelement
+syn keyword baanBshell xmlgetdataelement
+syn keyword baanBshell xmlsetname
+syn keyword baanBshell xmlsetdata
+syn keyword baanBshell xmlsetattribute
+syn keyword baanBshell xmldeleteattribute
+syn keyword baanBshell xmlgetname
+syn keyword baanBshell xmlgetdata
+syn keyword baanBshell xmlgettype
+syn keyword baanBshell xmlgetparent
+syn keyword baanBshell xmlgetfirstchild
+syn keyword baanBshell xmlgetlastchild
+syn keyword baanBshell xmlgetrightsibling
+syn keyword baanBshell xmlgetleftsibling
+syn keyword baanBshell xmlgetnumattributes
+syn keyword baanBshell xmlgetnumsiblings
+syn keyword baanBshell xmlgetnumleftsiblings
+syn keyword baanBshell xmlgetnumrightsiblings
+syn keyword baanBshell xmlgetnumchilds
+syn keyword baanBshell xmlgetattribute
+syn keyword baanBshell xmlgetattributename
+syn keyword baanBshell xmldelete
+syn keyword baanBshell xmlunlink
+syn keyword baanBshell xmlinsert
+syn keyword baanBshell xmladd
+syn keyword baanBshell xmlappend
+syn keyword baanBshell xmlinsertinchilds
+syn keyword baanBshell xmlappendtochilds
+syn keyword baanBshell xmlduplicate
+syn keyword baanBshell xmlduplicateandinsert
+syn keyword baanBshell xmlduplicateandadd
+syn keyword baanBshell xmlduplicateandappend
+syn keyword baanBshell xmlduplicateandinsertinchilds
+syn keyword baanBshell xmlduplicateandappendtochilds
+syn keyword baanBshell xmlduplicatetoprocess
+syn keyword baanBshell xmlfindfirst
+syn keyword baanBshell xmlfindfirstmatch
+syn keyword baanBshell xmlfindmatch
+syn keyword baanBshell xmlfindnodes
+syn keyword baanBshell xmlfindsetofsiblingnodes
+syn keyword baanBshell xmlexecutesql
+syn keyword baanBshell xmlexecutedllmethod
+syn keyword baanBshell xmldllsignature
+syn keyword baanBshell xmlnodetosymbol
+syn keyword baanBshell xmlputstringtolog
+syn keyword baanBshell xmlgetlog
+syn keyword baanBshell xmlcleanuplog
+syn keyword baanBshell xmlinstallloglistener
+syn keyword baanBshell xmldeinstallloglistener
+syn keyword baanBshell xmlinitsql
+syn keyword baanBshell xmlrefreshsqlcache
+syn keyword baanBshell xmlstatisticssqlcache
+syn keyword baanBshell bclm.dump
+syn keyword baanBshell bclm.init
+syn keyword baanBshell bclm.requestlicense
+syn keyword baanBshell bclm.confirmlicense
+syn keyword baanBshell bclm.releaselicense
+syn keyword baanBshell bclm.customerdata
+syn keyword baanBshell bclm.enabledemoperiod
+syn keyword baanBshell bclm.productidlicensed
+syn keyword baanBshell bclm.set.desktop
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
 " For version 5.8 and later: only when an item doesn't have highlighting yet
 if version >= 508 || !exists("did_baan_syn_inits")
   if version < 508
-    let did_c_syn_inits = 1
+    let did_baan_syn_inits = 1
     command -nargs=+ HiLink hi link <args>
   else
     command -nargs=+ HiLink hi def link <args>
@@ -229,15 +1906,25 @@ if version >= 508 || !exists("did_baan_s
 
   HiLink baanConditional	Conditional
   HiLink baan3gl		Statement
+  HiLink baan3glpre		PreProc
   HiLink baan4gl		Statement
   HiLink baan4glh		Statement
   HiLink baansql		Statement
   HiLink baansqlh		Statement
+  HiLink baanDalHook		Statement
   HiLink baanNumber		Number
   HiLink baanString		String
+  HiLink baanOpenStringError	Error
+  HiLink baanConstant		Constant
   HiLink baanComment		Comment
   HiLink baanCommenth		Comment
   HiLink baanUncommented	Comment
+  HiLink baanDLLUsage		Comment
+  HiLink baanFunUsage		Comment
+  HiLink baanIdentifier		Normal
+  HiLink baanBshell		Function
+  HiLink baanType		Type
+  HiLink baanStorageClass	StorageClass
 
   delcommand HiLink
 endif
--- a/runtime/syntax/smcl.vim
+++ b/runtime/syntax/smcl.vim
@@ -1,14 +1,14 @@
-" stata_smcl.vim -- Vim syntax file for smcl files.
+" smcl.vim -- Vim syntax file for smcl files.
 " Language:	SMCL -- Stata Markup and Control Language
 " Maintainer:	Jeff Pitblado <jpitblado@stata.com>
-" Last Change:	14apr2006
-" Version:	1.1.1
-" Location:	http://www.stata.com/users/jpitblado/files/vimfiles/syntax/stata_smcl.vim
+" Last Change:	26apr2006
+" Version:	1.1.2
 
 " Log:
 " 20mar2003	updated the match definition for cmdab
 " 14apr2006	'syntax clear' only under version control
 "		check for 'b:current_syntax', removed 'did_smcl_syntax_inits'
+" 26apr2006	changed 'stata_smcl' to 'smcl'
 
 if version < 600
 	syntax clear
@@ -303,6 +303,6 @@ hi def link smclLink		Underlined
 hi def link smclComment		Comment
 hi def link smclString		String
 
-let b:current_syntax = "stata_smcl"
+let b:current_syntax = "smcl"
 
 " vim: ts=8
--- a/runtime/syntax/stata.vim
+++ b/runtime/syntax/stata.vim
@@ -1,14 +1,16 @@
 " stata.vim -- Vim syntax file for Stata do, ado, and class files.
 " Language:	Stata and/or Mata
 " Maintainer:	Jeff Pitblado <jpitblado@stata.com>
-" Last Change:	17apr2006
-" Version:	1.1.2
-" Location:	http://www.stata.com/users/jpitblado/files/vimfiles/syntax/stata.vim
+" Last Change:	26apr2006
+" Version:	1.1.4
 
 " Log:
 " 14apr2006	renamed syntax groups st* to stata*
 "		'syntax clear' only under version control
 "		check for 'b:current_syntax', removed 'did_stata_syntax_inits'
+" 17apr2006	fixed start expression for stataFunc
+" 26apr2006	fixed brace confusion in stataErrInParen and stataErrInBracket
+"		fixed paren/bracket confusion in stataFuncGroup
 
 if version < 600
 	syntax clear
@@ -182,7 +184,7 @@ syn region stataEString matchgroup=Nothi
 syn region stataString  matchgroup=Nothing start=/"/ end=/"/   oneline contains=@stataMacroGroup
 
 " define clusters
-syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring
+syn cluster stataFuncGroup contains=@stataMacroGroup,stataFunc,stataString,stataEstring,stataParen,stataBracket
 syn cluster stataMacroGroup contains=stataGlobal,stataLocal
 syn cluster stataParenGroup contains=stataParenError,stataBracketError,stataBraceError,stataSpecial,stataFormat
 
@@ -410,14 +412,14 @@ syn region stataFunc matchgroup=Function
 " Errors to catch
 " taken from $VIMRUNTIME/syntax/c.vim 
 " catch errors caused by wrong parenthesis, braces and brackets
-syn region	stataParen		transparent start=/(/ end=/)/  contains=ALLBUT,@stataParenGroup,stataErrInBracket,stataErrInBrace
+syn region	stataParen	transparent start=/(/ end=/)/  contains=ALLBUT,@stataParenGroup,stataErrInBracket,stataErrInBrace
 syn region	stataBracket	transparent start=/\[/ end=/]/ contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBrace
-syn region	stataBrace		transparent start=/{/ end=/}/  contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBracket
+syn region	stataBrace	transparent start=/{/ end=/}/  contains=ALLBUT,@stataParenGroup,stataErrInParen,stataErrInBracket
 syn match	stataParenError	/[\])}]/
 syn match	stataBracketError	/]/
 syn match	stataBraceError	/}/
-syn match	stataErrInParen	contained /[\]{}]/
-syn match	stataErrInBracket	contained /[){}]/
+syn match	stataErrInParen	contained /[\]}]/
+syn match	stataErrInBracket	contained /[)}]/
 syn match	stataErrInBrace	contained /[)\]]/
 
 " assign highlight groups
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.0 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	April 25, 2006
-" Version:	7.0-46
+" Last Change:	Apr 26, 2006
+" Version:	7.0-47
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -20,7 +20,7 @@ syn keyword vimCommand contained	ab[brev
 syn match   vimCommand contained	"\<z[-+^.=]"
 
 " vimOptions are caught only when contained in a vimSet {{{2
-syn keyword vimOption contained	: acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval balloonexpr bdir bdlay beval bex bexpr bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc completeopt confirm consk conskey copyindent cot cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cuc cul cursorcolumn cursorline cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs fex ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatexpr formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg gtl gtt guicursor guifont guifontset guifontwide guiheadroom guioptions guipty guitablabel guitabtooltip helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma macatsui magic makeef makeprg mat matchpairs matchtime maxcombine maxfuncdepth maxmapdepth maxmem maxmempattern maxmemtot mco mef menuitems mfd mh mis mkspellmem ml mls mm mmd mmp mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps msm mzq mzquantum nf nrformats nu number numberwidth nuw oft ofu omnifunc operatorfunc opfunc osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn ph pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions prompt pt pumheight pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltemp shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode showtabline shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smc smd sn so softtabstop sol sp spc spell spellcapcheck spellfile spelllang spellsuggest spf spl splitbelow splitright spr sps sr srr ss ssl ssop st sta stal startofline statusline stl stmp sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn synmaxcol syntax ta tabline tabpagemax tabstop tag tagbsearch taglength tagrelative tags tagstack tal tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tpm tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose verbosefile vfile vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wfw wh whichwrap wi wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys window winfixheight winfixwidth winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww 
+syn keyword vimOption contained	acd ai akm al aleph allowrevins altkeymap ambiwidth ambw anti antialias ar arab arabic arabicshape ari arshape autochdir autoindent autoread autowrite autowriteall aw awa background backspace backup backupcopy backupdir backupext backupskip balloondelay ballooneval balloonexpr bdir bdlay beval bex bexpr bg bh bin binary biosk bioskey bk bkc bl bomb breakat brk browsedir bs bsdir bsk bt bufhidden buflisted buftype casemap cb ccv cd cdpath cedit cf cfu ch charconvert ci cin cindent cink cinkeys cino cinoptions cinw cinwords clipboard cmdheight cmdwinheight cmp cms co columns com comments commentstring compatible complete completefunc completeopt confirm consk conskey copyindent cot cp cpo cpoptions cpt cscopepathcomp cscopeprg cscopequickfix cscopetag cscopetagorder cscopeverbose cspc csprg csqf cst csto csverb cuc cul cursorcolumn cursorline cwh debug deco def define delcombine dex dg dict dictionary diff diffexpr diffopt digraph dip dir directory display dy ea ead eadirection eb ed edcompatible ef efm ei ek enc encoding endofline eol ep equalalways equalprg errorbells errorfile errorformat esckeys et eventignore ex expandtab exrc fcl fcs fdc fde fdi fdl fdls fdm fdn fdo fdt fen fenc fencs fex ff ffs fileencoding fileencodings fileformat fileformats filetype fillchars fk fkmap flp fml fmr fo foldclose foldcolumn foldenable foldexpr foldignore foldlevel foldlevelstart foldmarker foldmethod foldminlines foldnestmax foldopen foldtext formatexpr formatlistpat formatoptions formatprg fp fs fsync ft gcr gd gdefault gfm gfn gfs gfw ghr go gp grepformat grepprg gtl gtt guicursor guifont guifontset guifontwide guiheadroom guioptions guipty guitablabel guitabtooltip helpfile helpheight helplang hf hh hi hid hidden highlight history hk hkmap hkmapp hkp hl hlg hls hlsearch ic icon iconstring ignorecase im imactivatekey imak imc imcmdline imd imdisable imi iminsert ims imsearch inc include includeexpr incsearch inde indentexpr indentkeys indk inex inf infercase insertmode is isf isfname isi isident isk iskeyword isp isprint joinspaces js key keymap keymodel keywordprg km kmp kp langmap langmenu laststatus lazyredraw lbr lcs linebreak lines linespace lisp lispwords list listchars lm lmap loadplugins lpl ls lsp lw lz ma macatsui magic makeef makeprg mat matchpairs matchtime maxcombine maxfuncdepth maxmapdepth maxmem maxmempattern maxmemtot mco mef menuitems mfd mh mis mkspellmem ml mls mm mmd mmp mmt mod modeline modelines modifiable modified more mouse mousef mousefocus mousehide mousem mousemodel mouses mouseshape mouset mousetime mp mps msm mzq mzquantum nf nrformats nu number numberwidth nuw oft ofu omnifunc operatorfunc opfunc osfiletype pa para paragraphs paste pastetoggle patchexpr patchmode path pdev penc pex pexpr pfn ph pheader pi pm pmbcs pmbfn popt preserveindent previewheight previewwindow printdevice printencoding printexpr printfont printheader printmbcharset printmbfont printoptions prompt pt pumheight pvh pvw qe quoteescape readonly remap report restorescreen revins ri rightleft rightleftcmd rl rlc ro rs rtp ru ruf ruler rulerformat runtimepath sb sbo sbr sc scb scr scroll scrollbind scrolljump scrolloff scrollopt scs sect sections secure sel selection selectmode sessionoptions sft sh shcf shell shellcmdflag shellpipe shellquote shellredir shellslash shelltemp shelltype shellxquote shiftround shiftwidth shm shortmess shortname showbreak showcmd showfulltag showmatch showmode showtabline shq si sidescroll sidescrolloff siso sj slm sm smartcase smartindent smarttab smc smd sn so softtabstop sol sp spc spell spellcapcheck spellfile spelllang spellsuggest spf spl splitbelow splitright spr sps sr srr ss ssl ssop st sta stal startofline statusline stl stmp sts su sua suffixes suffixesadd sw swapfile swapsync swb swf switchbuf sws sxq syn synmaxcol syntax ta tabline tabpagemax tabstop tag tagbsearch taglength tagrelative tags tagstack tal tb tbi tbidi tbis tbs tenc term termbidi termencoding terse textauto textmode textwidth tf tgst thesaurus tildeop timeout timeoutlen title titlelen titleold titlestring tl tm to toolbar toolbariconsize top tpm tr ts tsl tsr ttimeout ttimeoutlen ttm tty ttybuiltin ttyfast ttym ttymouse ttyscroll ttytype tw tx uc ul undolevels updatecount updatetime ut vb vbs vdir ve verbose verbosefile vfile vi viewdir viewoptions viminfo virtualedit visualbell vop wa wak warn wb wc wcm wd weirdinvert wfh wfw wh whichwrap wi wig wildchar wildcharm wildignore wildmenu wildmode wildoptions wim winaltkeys window winfixheight winfixwidth winheight winminheight winminwidth winwidth wiv wiw wm wmh wmnu wmw wop wrap wrapmargin wrapscan write writeany writebackup writedelay ws ww 
 
 " vimOptions: These are the turn-off setting variants {{{2
 syn keyword vimOption contained	noacd noai noakm noallowrevins noaltkeymap noanti noantialias noar noarab noarabic noarabicshape noari noarshape noautochdir noautoindent noautoread noautowrite noautowriteall noaw noawa nobackup noballooneval nobeval nobin nobinary nobiosk nobioskey nobk nobl nobomb nobuflisted nocf noci nocin nocindent nocompatible noconfirm noconsk noconskey nocopyindent nocp nocscopetag nocscopeverbose nocst nocsverb nocuc nocul nocursorcolumn nocursorline nodeco nodelcombine nodg nodiff nodigraph nodisable noea noeb noed noedcompatible noek noendofline noeol noequalalways noerrorbells noesckeys noet noex noexpandtab noexrc nofen nofk nofkmap nofoldenable nogd nogdefault noguipty nohid nohidden nohk nohkmap nohkmapp nohkp nohls nohlsearch noic noicon noignorecase noim noimc noimcmdline noimd noincsearch noinf noinfercase noinsertmode nois nojoinspaces nojs nolazyredraw nolbr nolinebreak nolisp nolist noloadplugins nolpl nolz noma nomacatsui nomagic nomh noml nomod nomodeline nomodifiable nomodified nomore nomousef nomousefocus nomousehide nonu nonumber nopaste nopi nopreserveindent nopreviewwindow noprompt nopvw noreadonly noremap norestorescreen norevins nori norightleft norightleftcmd norl norlc noro nors noru noruler nosb nosc noscb noscrollbind noscs nosecure nosft noshellslash noshelltemp noshiftround noshortname noshowcmd noshowfulltag noshowmatch noshowmode nosi nosm nosmartcase nosmartindent nosmarttab nosmd nosn nosol nospell nosplitbelow nosplitright nospr nosr nossl nosta nostartofline nostmp noswapfile noswf nota notagbsearch notagrelative notagstack notbi notbidi notbs notermbidi noterse notextauto notextmode notf notgst notildeop notimeout notitle noto notop notr nottimeout nottybuiltin nottyfast notx novb novisualbell nowa nowarn nowb noweirdinvert nowfh nowfw nowildmenu nowinfixheight nowinfixwidth nowiv nowmnu nowrap nowrapscan nowrite nowriteany nowritebackup nows 
@@ -163,7 +163,7 @@ syn case ignore
 syn keyword vimUserAttrbKey   contained	bar	ban[g]	cou[nt]	ra[nge] com[plete]	n[args]	re[gister]
 syn keyword vimUserAttrbCmplt contained	augroup buffer command dir environment event expression file function help highlight mapping menu option something tag tag_listfiles var
 syn keyword vimUserAttrbCmplt contained	custom customlist nextgroup=vimUserAttrbCmpltFunc,vimUserCmdError
-syn match   vimUserAttrbCmpltFunc contained	",\%(\h\w*#\u\w*\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
+syn match   vimUserAttrbCmpltFunc contained	",\%(\h\w*\%(#\u\w*\)\+\|\u\w*\)"hs=s+1 nextgroup=vimUserCmdError
 
 syn case match
 syn match   vimUserAttrbCmplt contained	"custom,\u\w*"
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -1046,7 +1046,7 @@ proto.h: \
 	proto/window.pro \
 	$(NETBEANS_PRO)
 
-.SUFFIXES: .cod
+.SUFFIXES: .cod .i
 
 # Generate foo.cod (mixed source and assembly listing) from foo.c via "nmake
 # foo.cod"
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -2635,8 +2635,11 @@ buf_set_name(fnum, name)
     {
 	vim_free(buf->b_sfname);
 	vim_free(buf->b_ffname);
-	buf->b_sfname = vim_strsave(name);
-	buf->b_ffname = FullName_save(buf->b_sfname, FALSE);
+	buf->b_ffname = vim_strsave(name);
+	buf->b_sfname = NULL;
+	/* Allocate ffname and expand into full path.  Also resolves .lnk
+	 * files on Win32. */
+	fname_expand(buf, &buf->b_ffname, &buf->b_sfname);
 	buf->b_fname = buf->b_sfname;
     }
 }
@@ -4187,11 +4190,11 @@ fname_expand(buf, ffname, sfname)
 #ifdef FEAT_SHORTCUT
     if (!buf->b_p_bin)
     {
-	char_u  *rfname = NULL;
+	char_u  *rfname;
 
 	/* If the file name is a shortcut file, use the file it links to. */
 	rfname = mch_resolve_shortcut(*ffname);
-	if (rfname)
+	if (rfname != NULL)
 	{
 	    vim_free(*ffname);
 	    *ffname = rfname;
--- a/src/edit.c
+++ b/src/edit.c
@@ -335,6 +335,12 @@ edit(cmdchar, startln, count)
     }
 
 #ifdef FEAT_INS_EXPAND
+    /* Don't allow recursive insert mode when busy with completion. */
+    if (compl_started || pum_visible())
+    {
+	EMSG(_(e_secure));
+	return FALSE;
+    }
     ins_compl_clear();	    /* clear stuff for CTRL-X mode */
 #endif
 
@@ -5147,7 +5153,7 @@ insertchar(c, flags, second_indent)
 	 * when 'formatexpr' isn't set or it returns non-zero. */
 #if defined(FEAT_EVAL)
 	if (*curbuf->b_p_fex == NUL
-				|| fex_format(curwin->w_cursor.lnum, 1L) != 0)
+			     || fex_format(curwin->w_cursor.lnum, 1L, c) != 0)
 #endif
 	    internal_format(textwidth, second_indent, flags, c == NUL);
     }
@@ -7243,6 +7249,9 @@ ins_reg()
     int		need_redraw = FALSE;
     int		regname;
     int		literally = 0;
+#ifdef FEAT_VISUAL
+    int		vis_active = VIsual_active;
+#endif
 
     /*
      * If we are going to wait for a character, show a '"'.
@@ -7344,6 +7353,12 @@ ins_reg()
     /* If the inserted register is empty, we need to remove the '"' */
     if (need_redraw || stuff_empty())
 	edit_unputchar();
+
+#ifdef FEAT_VISUAL
+    /* Disallow starting Visual mode here, would get a weird mode. */
+    if (!vis_active && VIsual_active)
+	end_visual_mode();
+#endif
 }
 
 /*
@@ -8954,6 +8969,13 @@ ins_eol(c)
      * in open_line().
      */
 
+#ifdef FEAT_VIRTUALEDIT
+    /* Put cursor on NUL if on the last char and coladd is 1 (happens after
+     * CTRL-O). */
+    if (virtual_active() && curwin->w_cursor.coladd > 0)
+	coladvance(getviscol());
+#endif
+
 #ifdef FEAT_RIGHTLEFT
 # ifdef FEAT_FKMAP
     if (p_altkeymap && p_fkmap)
--- a/src/eval.c
+++ b/src/eval.c
@@ -341,6 +341,7 @@ static struct vimvar
     {VV_NAME("swapname",	 VAR_STRING), VV_RO},
     {VV_NAME("swapchoice",	 VAR_STRING), 0},
     {VV_NAME("swapcommand",	 VAR_STRING), VV_RO},
+    {VV_NAME("char",		 VAR_STRING), VV_RO},
 };
 
 /* shorthand */
@@ -9000,6 +9001,7 @@ f_feedkeys(argvars, rettv)
     char_u	*keys, *flags;
     char_u	nbuf[NUMBUFLEN];
     int		typed = FALSE;
+    char_u	*keys_esc;
 
     rettv->vval.v_number = 0;
     keys = get_tv_string(&argvars[0]);
@@ -9019,9 +9021,16 @@ f_feedkeys(argvars, rettv)
 	    }
 	}
 
-	ins_typebuf(keys, (remap ? REMAP_YES : REMAP_NONE),
+	/* Need to escape K_SPECIAL and CSI before putting the string in the
+	 * typeahead buffer. */
+	keys_esc = vim_strsave_escape_csi(keys);
+	if (keys_esc != NULL)
+	{
+	    ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE),
 					       typebuf.tb_len, !typed, FALSE);
-	typebuf_was_filled = TRUE;
+	    vim_free(keys_esc);
+	    typebuf_was_filled = TRUE;
+	}
     }
 }
 
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1824,8 +1824,8 @@ do_one_cmd(cmdlinep, sourcing,
 #ifdef FEAT_AUTOCMD
 			if (cmdmod.save_ei == NULL)
 			{
-			    /* Set 'eventignore' to "all".  Don't free the
-			     * existing option value, we restore it later. */
+			    /* Set 'eventignore' to "all". Restore the
+			     * existing option value later. */
 			    cmdmod.save_ei = vim_strsave(p_ei);
 			    set_string_option_direct((char_u *)"ei", -1,
 					 (char_u *)"all", OPT_FREE, SID_NONE);
--- a/src/feature.h
+++ b/src/feature.h
@@ -753,7 +753,8 @@
 /*
  * GUI tabline
  */
-#if defined(FEAT_WINDOWS) && (defined(FEAT_GUI_GTK) \
+#if defined(FEAT_WINDOWS) && defined(FEAT_NORMAL) \
+    && (defined(FEAT_GUI_GTK) \
 	|| (defined(FEAT_GUI_MOTIF) && defined(HAVE_XM_NOTEBOOK_H)) \
 	|| (defined(FEAT_GUI_MSWIN) && (!defined(_MSC_VER) || _MSC_VER > 1020)))
 # define FEAT_GUI_TABLINE
@@ -1202,7 +1203,7 @@
  */
 #if (defined(FEAT_GUI_MOTIF) || defined(FEAT_GUI_ATHENA) \
 	|| defined(FEAT_GUI_GTK) || defined(FEAT_GUI_W32)) \
-	&& (   (defined(FEAT_TOOLBAR) \
+	&& (   ((defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)) \
 		&& !defined(FEAT_GUI_GTK) && !defined(FEAT_GUI_W32)) \
 	    || defined(FEAT_SUN_WORKSHOP) \
 	    || defined(FEAT_NETBEANS_INTG) || defined(FEAT_EVAL))
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -829,7 +829,8 @@ readfile(fname, sfname, from, lines_to_s
 	    /* When the file is utf-8 but a character doesn't fit in
 	     * 'encoding' don't retry.  In help text editing utf-8 bytes
 	     * doesn't make sense. */
-	    keep_dest_enc = TRUE;
+	    if (!enc_utf8)
+		keep_dest_enc = TRUE;
 	}
 	fenc_alloced = FALSE;
     }
@@ -7485,12 +7486,13 @@ event_ignored(event)
 {
     char_u	*p = p_ei;
 
-    if (STRICMP(p_ei, "all") == 0)
-	return TRUE;
-
-    while (*p)
+    while (*p != NUL)
+    {
+	if (STRNICMP(p, "all", 3) == 0 && (p[3] == NUL || p[3] == ','))
+	    return TRUE;
 	if (event_name2nr(p, &p) == event)
 	    return TRUE;
+    }
 
     return FALSE;
 }
@@ -7503,12 +7505,17 @@ check_ei()
 {
     char_u	*p = p_ei;
 
-    if (STRICMP(p_ei, "all") == 0)
-	return OK;
-
     while (*p)
-	if (event_name2nr(p, &p) == NUM_EVENTS)
+    {
+	if (STRNICMP(p, "all", 3) == 0 && (p[3] == NUL || p[3] == ','))
+	{
+	    p += 3;
+	    if (*p == ',')
+		++p;
+	}
+	else if (event_name2nr(p, &p) == NUM_EVENTS)
 	    return FAIL;
+    }
 
     return OK;
 }
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -4301,11 +4301,29 @@ eval_map_expr(str)
 {
     char_u	*res;
     char_u	*p;
-    char_u	*s, *d;
 
     p = eval_to_string(str, NULL, FALSE);
     if (p == NULL)
 	return NULL;
+    res = vim_strsave_escape_csi(p);
+    vim_free(p);
+
+    return res;
+}
+#endif
+
+#if defined(FEAT_EVAL) || defined(PROTO)
+/*
+ * Copy "p" to allocated memory, escaping K_SPECIAL and CSI so that the result
+ * can be put in the typeahead buffer.
+ * Returns NULL when out of memory.
+ */
+    char_u *
+vim_strsave_escape_csi(p)
+    char_u *p;
+{
+    char_u	*res;
+    char_u	*s, *d;
 
     /* Need a buffer to hold up to three times as much. */
     res = alloc((unsigned)(STRLEN(p) * 3) + 1);
@@ -4331,9 +4349,6 @@ eval_map_expr(str)
 	}
 	*d = NUL;
     }
-
-    vim_free(p);
-
     return res;
 }
 #endif
--- a/src/gui.c
+++ b/src/gui.c
@@ -3507,14 +3507,19 @@ send_tabline_event(nr)
 
     if (nr == tabpage_index(curtab))
 	return FALSE;
+
+    /* Don't put events in the input queue now. */
+    if (hold_gui_events
 # ifdef FEAT_CMDWIN
-    if (cmdwin_type != 0)
+	    || cmdwin_type != 0
+# endif
+	    )
     {
 	/* Set it back to the current tab page. */
 	gui_mch_set_curtab(tabpage_index(curtab));
 	return FALSE;
     }
-# endif
+
     string[0] = CSI;
     string[1] = KS_TABLINE;
     string[2] = KE_FILLER;
@@ -3534,6 +3539,10 @@ send_tabline_menu_event(tabidx, event)
 {
     char_u	    string[3];
 
+    /* Don't put events in the input queue now. */
+    if (hold_gui_events)
+	return;
+
     string[0] = CSI;
     string[1] = KS_TABMENU;
     string[2] = KE_FILLER;
--- a/src/gui.h
+++ b/src/gui.h
@@ -21,6 +21,14 @@
 #endif
 
 #ifdef FEAT_GUI_GTK
+# ifdef VMS /* undef MIN and MAX because Intrinsic.h redefines them anyway */
+#  ifdef MAX
+#   undef MAX
+#  endif
+#  ifdef MIN
+#   undef MIN
+#  endif
+# endif
 # include <X11/Intrinsic.h>
 # include <gtk/gtk.h>
 #endif
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -3183,6 +3183,15 @@ on_tabline_menu(GtkWidget *widget, GdkEv
 	GtkWidget	*page;
 	GtkWidget	*label;
 
+	/* When ignoring events return TRUE so that the selected page doesn't
+	 * change. */
+	if (hold_gui_events
+# ifdef FEAT_CMDWIN
+		|| cmdwin_type != 0
+# endif
+	   )
+	    return TRUE;
+
 	/* Find out where the click was. */
 	for (clicked_page = 1;  ; ++clicked_page)
 	{
@@ -3217,6 +3226,7 @@ on_tabline_menu(GtkWidget *widget, GdkEv
 		gtk_main_quit();
 	}
     }
+
     /* We didn't handle the event. */
     return FALSE;
 }
--- a/src/gui_motif.c
+++ b/src/gui_motif.c
@@ -88,6 +88,7 @@ static void scroll_cb __ARGS((Widget w, 
 static void tabline_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
 static void tabline_button_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
 static void tabline_menu_cb __ARGS((Widget w, XtPointer	closure, XEvent	*e, Boolean *continue_dispatch));
+static void tabline_balloon_cb __ARGS((BalloonEval *beval, int state));
 #endif
 #ifdef FEAT_TOOLBAR
 # ifdef FEAT_FOOTER
@@ -252,6 +253,14 @@ tabline_menu_cb(w, closure, e, continue_
     if (event->button != Button3)
 	return;
 
+    /* When ignoring events don't show the menu. */
+    if (hold_gui_events
+# ifdef FEAT_CMDWIN
+	    || cmdwin_type != 0
+# endif
+       )
+	return;
+
     if (event->subwindow != None)
     {
 	tab_w = XtWindowToWidget(XtDisplay(w), event->subwindow);
@@ -267,6 +276,28 @@ tabline_menu_cb(w, closure, e, continue_
     XmMenuPosition(tabLine_menu, (XButtonPressedEvent *)e) ;
     XtManageChild(tabLine_menu);
 }
+
+/*ARGSUSED*/
+    static void
+tabline_balloon_cb(beval, state)
+    BalloonEval	*beval;
+    int		state;
+{
+    int		nr;
+    tabpage_T	*tp;
+
+    if (beval->target == (Widget)0)
+	return;
+
+    XtVaGetValues(beval->target, XmNpageNumber, &nr, NULL);
+    tp = find_tabpage(nr);
+    if (tp == NULL)
+	return;
+
+    get_tabline_label(tp, TRUE);
+    gui_mch_post_balloon(beval, NameBuff);
+}
+
 #endif
 
 /*
@@ -1365,9 +1396,9 @@ gui_mch_add_menu_item(menu, idx)
 	if (xms != NULL)
 	    XmStringFree(xms);
 
-#ifdef FEAT_BEVAL
+# ifdef FEAT_BEVAL
 	gui_mch_menu_set_tip(menu);
-#endif
+# endif
 
 	menu->parent = parent;
 	menu->submenu_id = NULL;
@@ -3024,8 +3055,7 @@ gui_mch_show_toolbar(int showit)
 			int	    n = 0;
 
 			/* Enable/Disable tooltip (OK to enable while
-			 * currently enabled)
-			 */
+			 * currently enabled). */
 			if (cur->tip != NULL)
 			    (*action)(cur->tip);
 			if (!menu_is_separator(cur->name))
@@ -3326,6 +3356,7 @@ gui_mch_update_tabline(void)
     int			last_page, tab_count;
     XmString		label_str;
     char		*label_cstr;
+    BalloonEval		*beval;
 
     if (tabLine == (Widget)0)
 	return;
@@ -3338,7 +3369,7 @@ gui_mch_update_tabline(void)
 
 	page_status = XmNotebookGetPageInfo(tabLine, nr, &page_info);
 	if (page_status == XmPAGE_INVALID
-	    || page_info.major_tab_widget == (Widget)0)
+		|| page_info.major_tab_widget == (Widget)0)
 	{
 	    /* Add the tab */
 	    n = 0;
@@ -3349,6 +3380,9 @@ gui_mch_update_tabline(void)
 	    XtSetArg(args[n], XmNshadowThickness , 1); n++;
 	    tab = XmCreatePushButton(tabLine, "-Empty-", args, n);
 	    XtManageChild(tab);
+	    beval = gui_mch_create_beval_area(tab, NULL, tabline_balloon_cb,
+									NULL);
+	    XtVaSetValues(tab, XmNuserData, beval, NULL);
 	}
 	else
 	    tab = page_info.major_tab_widget;
@@ -3387,6 +3421,9 @@ gui_mch_update_tabline(void)
 	    && page_info.page_number == nr
 	    && page_info.major_tab_widget != (Widget)0)
 	{
+	    XtVaGetValues(page_info.major_tab_widget, XmNuserData, &beval, NULL);
+	    if (beval != NULL)
+		gui_mch_destroy_beval_area(beval);
 	    XtUnmanageChild(page_info.major_tab_widget);
 	    XtDestroyWidget(page_info.major_tab_widget);
 	}
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -2209,6 +2209,14 @@ show_tabline_popup_menu(void)
     long	    rval;
     POINT	    pt;
 
+    /* When ignoring events don't show the menu. */
+    if (hold_gui_events
+# ifdef FEAT_CMDWIN
+	    || cmdwin_type != 0
+# endif
+       )
+	return;
+
     tab_pmenu = CreatePopupMenu();
     if (tab_pmenu == NULL)
 	return;
--- a/src/normal.c
+++ b/src/normal.c
@@ -3209,9 +3209,7 @@ end_visual_mode()
 	clear_showcmd();
 #endif
 
-    /* Don't leave the cursor past the end of the line */
-    if (curwin->w_cursor.col > 0 && *ml_get_cursor() == NUL)
-	--curwin->w_cursor.col;
+    adjust_cursor_eol();
 }
 
 /*
--- a/src/ops.c
+++ b/src/ops.c
@@ -3728,8 +3728,18 @@ end:
 	vim_free(y_array);
 
     /* If the cursor is past the end of the line put it at the end. */
-    if (gchar_cursor() == NUL
-	    && curwin->w_cursor.col > 0
+    adjust_cursor_eol();
+}
+
+/*
+ * When the cursor is on the NUL past the end of the line and it should not be
+ * there move it left.
+ */
+    void
+adjust_cursor_eol()
+{
+    if (curwin->w_cursor.col > 0
+	    && gchar_cursor() == NUL
 #ifdef FEAT_VIRTUALEDIT
 	    && (ve_flags & VE_ONEMORE) == 0
 #endif
@@ -3737,6 +3747,7 @@ end:
     {
 	/* Put the cursor on the last character in the line. */
 	dec_cursor();
+
 #ifdef FEAT_VIRTUALEDIT
 	if (ve_flags == VE_ALL)
 	{
@@ -4326,24 +4337,38 @@ op_formatexpr(oap)
 	redraw_curbuf_later(INVERTED);
 # endif
 
-    (void)fex_format(oap->start.lnum, oap->line_count);
+    (void)fex_format(oap->start.lnum, oap->line_count, NUL);
 }
 
     int
-fex_format(lnum, count)
+fex_format(lnum, count, c)
     linenr_T	lnum;
     long	count;
+    int		c;	/* character to be inserted */
 {
     int		use_sandbox = was_set_insecurely((char_u *)"formatexpr",
 								   OPT_LOCAL);
     int		r;
+    char_u	buf[NUMBUFLEN];
 
     /*
      * Set v:lnum to the first line number and v:count to the number of lines.
+     * Set v:char to the character to be inserted (can be NUL).
      */
     set_vim_var_nr(VV_LNUM, lnum);
     set_vim_var_nr(VV_COUNT, count);
 
+#ifdef FEAT_MBYTE
+    if (has_mbyte)
+	buf[(*mb_char2bytes)(c, buf)] = NUL;
+    else
+#endif
+    {
+	buf[0] = c;
+	buf[1] = NUL;
+    }
+    set_vim_var_string(VV_CHAR, buf, -1);
+
     /*
      * Evaluate the function.
      */
@@ -4352,6 +4377,9 @@ fex_format(lnum, count)
     r = eval_to_number(curbuf->b_p_fex);
     if (use_sandbox)
 	--sandbox;
+
+    set_vim_var_string(VV_CHAR, NULL, -1);
+
     return r;
 }
 #endif
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -2695,6 +2695,9 @@ serverInitMessaging(void)
 			 s_hinst, NULL);
 }
 
+/* Used by serverSendToVim() to find an alternate server name. */
+static char_u *altname_buf_ptr = NULL;
+
 /*
  * Get the title of the window "hwnd", which is the Vim server name, in
  * "name[namelen]" and return the length.
@@ -2732,6 +2735,15 @@ enumWindowsGetServer(HWND hwnd, LPARAM l
 	return FALSE;
     }
 
+    /* If we are looking for an alternate server, remember this name. */
+    if (altname_buf_ptr != NULL
+	    && STRNICMP(server, id->name, STRLEN(id->name)) == 0
+	    && vim_isdigit(server[STRLEN(id->name)]))
+    {
+	STRCPY(altname_buf_ptr, server);
+	altname_buf_ptr = NULL;	    /* don't use another name */
+    }
+
     /* Otherwise, keep looking */
     return TRUE;
 }
@@ -2871,10 +2883,22 @@ serverSendToVim(name, cmd, result, ptarg
     int		 asExpr;		/* Expression or keys? */
     int		 silent;		/* don't complain about no server */
 {
-    HWND	target = findServer(name);
+    HWND	target;
     COPYDATASTRUCT data;
     char_u	*retval = NULL;
     int		retcode = 0;
+    char_u	altname_buf[MAX_PATH];
+
+    /* If the server name does not end in a digit then we look for an
+     * alternate name.  e.g. when "name" is GVIM the we may find GVIM2. */
+    if (STRLEN(name) > 1 && !vim_isdigit(name[STRLEN(name) - 1]))
+	altname_buf_ptr = altname_buf;
+    altname_buf[0] = NUL;
+    target = findServer(name);
+    altname_buf_ptr = NULL;
+    if (target == 0 && altname_buf[0] != NUL)
+	/* Use another server name we found. */
+	target = findServer(altname_buf);
 
     if (target == 0)
     {
--- a/src/proto/buffer.pro
+++ b/src/proto/buffer.pro
@@ -1,69 +1,69 @@
 /* buffer.c */
-extern int open_buffer __ARGS((int read_stdin, exarg_T *eap));
-extern int buf_valid __ARGS((buf_T *buf));
-extern void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
-extern void buf_clear_file __ARGS((buf_T *buf));
-extern void buf_freeall __ARGS((buf_T *buf, int del_buf, int wipe_buf));
-extern void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
-extern void handle_swap_exists __ARGS((buf_T *old_curbuf));
-extern char_u *do_bufdel __ARGS((int command, char_u *arg, int addr_count, int start_bnr, int end_bnr, int forceit));
-extern int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
-extern void set_curbuf __ARGS((buf_T *buf, int action));
-extern void enter_buffer __ARGS((buf_T *buf));
-extern buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int flags));
-extern void free_buf_options __ARGS((buf_T *buf, int free_p_ff));
-extern int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit));
-extern void buflist_getfpos __ARGS((void));
-extern buf_T *buflist_findname_exp __ARGS((char_u *fname));
-extern buf_T *buflist_findname __ARGS((char_u *ffname));
-extern int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
-extern int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
-extern buf_T *buflist_findnr __ARGS((int nr));
-extern char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
-extern void get_winopts __ARGS((buf_T *buf));
-extern pos_T *buflist_findfpos __ARGS((buf_T *buf));
-extern linenr_T buflist_findlnum __ARGS((buf_T *buf));
-extern void buflist_list __ARGS((exarg_T *eap));
-extern int buflist_name_nr __ARGS((int fnum, char_u **fname, linenr_T *lnum));
-extern int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int message));
-extern void buf_set_name __ARGS((int fnum, char_u *name));
-extern void buf_name_changed __ARGS((buf_T *buf));
-extern buf_T *setaltfname __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum));
-extern char_u *getaltfname __ARGS((int errmsg));
-extern int buflist_add __ARGS((char_u *fname, int flags));
-extern void buflist_slash_adjust __ARGS((void));
-extern void buflist_altfpos __ARGS((void));
-extern int otherfile __ARGS((char_u *ffname));
-extern void buf_setino __ARGS((buf_T *buf));
-extern void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
-extern void col_print __ARGS((char_u *buf, int col, int vcol));
-extern void maketitle __ARGS((void));
-extern void resettitle __ARGS((void));
-extern void free_titles __ARGS((void));
-extern int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
-extern void get_rel_pos __ARGS((win_T *wp, char_u *str));
-extern int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
-extern char_u *fix_fname __ARGS((char_u *fname));
-extern void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
-extern char_u *alist_name __ARGS((aentry_T *aep));
-extern void do_arg_all __ARGS((int count, int forceit, int keep_tabs));
-extern void ex_buffer_all __ARGS((exarg_T *eap));
-extern void do_modelines __ARGS((int flags));
-extern int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing));
-extern void write_viminfo_bufferlist __ARGS((FILE *fp));
-extern char *buf_spname __ARGS((buf_T *buf));
-extern void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
-extern int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
-extern int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
-extern linenr_T buf_delsign __ARGS((buf_T *buf, int id));
-extern int buf_findsign __ARGS((buf_T *buf, int id));
-extern int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
-extern int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
-extern int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
-extern void buf_delete_all_signs __ARGS((void));
-extern void sign_list_placed __ARGS((buf_T *rbuf));
-extern void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
-extern void set_buflisted __ARGS((int on));
-extern int buf_contents_changed __ARGS((buf_T *buf));
-extern void wipe_buffer __ARGS((buf_T *buf, int aucmd));
+int open_buffer __ARGS((int read_stdin, exarg_T *eap));
+int buf_valid __ARGS((buf_T *buf));
+void close_buffer __ARGS((win_T *win, buf_T *buf, int action));
+void buf_clear_file __ARGS((buf_T *buf));
+void buf_freeall __ARGS((buf_T *buf, int del_buf, int wipe_buf));
+void goto_buffer __ARGS((exarg_T *eap, int start, int dir, int count));
+void handle_swap_exists __ARGS((buf_T *old_curbuf));
+char_u *do_bufdel __ARGS((int command, char_u *arg, int addr_count, int start_bnr, int end_bnr, int forceit));
+int do_buffer __ARGS((int action, int start, int dir, int count, int forceit));
+void set_curbuf __ARGS((buf_T *buf, int action));
+void enter_buffer __ARGS((buf_T *buf));
+buf_T *buflist_new __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum, int flags));
+void free_buf_options __ARGS((buf_T *buf, int free_p_ff));
+int buflist_getfile __ARGS((int n, linenr_T lnum, int options, int forceit));
+void buflist_getfpos __ARGS((void));
+buf_T *buflist_findname_exp __ARGS((char_u *fname));
+buf_T *buflist_findname __ARGS((char_u *ffname));
+int buflist_findpat __ARGS((char_u *pattern, char_u *pattern_end, int unlisted, int diffmode));
+int ExpandBufnames __ARGS((char_u *pat, int *num_file, char_u ***file, int options));
+buf_T *buflist_findnr __ARGS((int nr));
+char_u *buflist_nr2name __ARGS((int n, int fullname, int helptail));
+void get_winopts __ARGS((buf_T *buf));
+pos_T *buflist_findfpos __ARGS((buf_T *buf));
+linenr_T buflist_findlnum __ARGS((buf_T *buf));
+void buflist_list __ARGS((exarg_T *eap));
+int buflist_name_nr __ARGS((int fnum, char_u **fname, linenr_T *lnum));
+int setfname __ARGS((buf_T *buf, char_u *ffname, char_u *sfname, int message));
+void buf_set_name __ARGS((int fnum, char_u *name));
+void buf_name_changed __ARGS((buf_T *buf));
+buf_T *setaltfname __ARGS((char_u *ffname, char_u *sfname, linenr_T lnum));
+char_u *getaltfname __ARGS((int errmsg));
+int buflist_add __ARGS((char_u *fname, int flags));
+void buflist_slash_adjust __ARGS((void));
+void buflist_altfpos __ARGS((void));
+int otherfile __ARGS((char_u *ffname));
+void buf_setino __ARGS((buf_T *buf));
+void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+void col_print __ARGS((char_u *buf, int col, int vcol));
+void maketitle __ARGS((void));
+void resettitle __ARGS((void));
+void free_titles __ARGS((void));
+int build_stl_str_hl __ARGS((win_T *wp, char_u *out, size_t outlen, char_u *fmt, int use_sandbox, int fillchar, int maxwidth, struct stl_hlrec *hltab, struct stl_hlrec *tabtab));
+void get_rel_pos __ARGS((win_T *wp, char_u *str));
+int append_arg_number __ARGS((win_T *wp, char_u *buf, int add_file, int maxlen));
+char_u *fix_fname __ARGS((char_u *fname));
+void fname_expand __ARGS((buf_T *buf, char_u **ffname, char_u **sfname));
+char_u *alist_name __ARGS((aentry_T *aep));
+void do_arg_all __ARGS((int count, int forceit, int keep_tabs));
+void ex_buffer_all __ARGS((exarg_T *eap));
+void do_modelines __ARGS((int flags));
+int read_viminfo_bufferlist __ARGS((vir_T *virp, int writing));
+void write_viminfo_bufferlist __ARGS((FILE *fp));
+char *buf_spname __ARGS((buf_T *buf));
+void buf_addsign __ARGS((buf_T *buf, int id, linenr_T lnum, int typenr));
+int buf_change_sign_type __ARGS((buf_T *buf, int markId, int typenr));
+int_u buf_getsigntype __ARGS((buf_T *buf, linenr_T lnum, int type));
+linenr_T buf_delsign __ARGS((buf_T *buf, int id));
+int buf_findsign __ARGS((buf_T *buf, int id));
+int buf_findsign_id __ARGS((buf_T *buf, linenr_T lnum));
+int buf_findsigntype_id __ARGS((buf_T *buf, linenr_T lnum, int typenr));
+int buf_signcount __ARGS((buf_T *buf, linenr_T lnum));
+void buf_delete_all_signs __ARGS((void));
+void sign_list_placed __ARGS((buf_T *rbuf));
+void sign_mark_adjust __ARGS((linenr_T line1, linenr_T line2, long amount, long amount_after));
+void set_buflisted __ARGS((int on));
+int buf_contents_changed __ARGS((buf_T *buf));
+void wipe_buffer __ARGS((buf_T *buf, int aucmd));
 /* vim: set ft=c : */
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -1,56 +1,56 @@
 /* charset.c */
-extern int init_chartab __ARGS((void));
-extern int buf_init_chartab __ARGS((buf_T *buf, int global));
-extern void trans_characters __ARGS((char_u *buf, int bufsize));
-extern char_u *transstr __ARGS((char_u *s));
-extern char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
-extern char_u *transchar __ARGS((int c));
-extern char_u *transchar_byte __ARGS((int c));
-extern void transchar_nonprint __ARGS((char_u *buf, int c));
-extern void transchar_hex __ARGS((char_u *buf, int c));
-extern int byte2cells __ARGS((int b));
-extern int char2cells __ARGS((int c));
-extern int ptr2cells __ARGS((char_u *p));
-extern int vim_strsize __ARGS((char_u *s));
-extern int vim_strnsize __ARGS((char_u *s, int len));
-extern int chartabsize __ARGS((char_u *p, colnr_T col));
-extern int linetabsize __ARGS((char_u *s));
-extern int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
-extern int vim_isIDc __ARGS((int c));
-extern int vim_iswordc __ARGS((int c));
-extern int vim_iswordp __ARGS((char_u *p));
-extern int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
-extern int vim_isfilec __ARGS((int c));
-extern int vim_isprintc __ARGS((int c));
-extern int vim_isprintc_strict __ARGS((int c));
-extern int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
-extern int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
-extern int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
-extern int in_win_border __ARGS((win_T *wp, colnr_T vcol));
-extern void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-extern colnr_T getvcol_nolist __ARGS((pos_T *posp));
-extern void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
-extern void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
-extern char_u *skipwhite __ARGS((char_u *p));
-extern char_u *skipdigits __ARGS((char_u *p));
-extern char_u *skiphex __ARGS((char_u *p));
-extern char_u *skiptodigit __ARGS((char_u *p));
-extern char_u *skiptohex __ARGS((char_u *p));
-extern int vim_isdigit __ARGS((int c));
-extern int vim_isxdigit __ARGS((int c));
-extern int vim_islower __ARGS((int c));
-extern int vim_isupper __ARGS((int c));
-extern int vim_toupper __ARGS((int c));
-extern int vim_tolower __ARGS((int c));
-extern char_u *skiptowhite __ARGS((char_u *p));
-extern char_u *skiptowhite_esc __ARGS((char_u *p));
-extern long getdigits __ARGS((char_u **pp));
-extern int vim_isblankline __ARGS((char_u *lbuf));
-extern void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
-extern int hex2nr __ARGS((int c));
-extern int hexhex2nr __ARGS((char_u *p));
-extern int rem_backslash __ARGS((char_u *str));
-extern void backslash_halve __ARGS((char_u *p));
-extern char_u *backslash_halve_save __ARGS((char_u *p));
-extern void ebcdic2ascii __ARGS((char_u *buffer, int len));
+int init_chartab __ARGS((void));
+int buf_init_chartab __ARGS((buf_T *buf, int global));
+void trans_characters __ARGS((char_u *buf, int bufsize));
+char_u *transstr __ARGS((char_u *s));
+char_u *str_foldcase __ARGS((char_u *str, int orglen, char_u *buf, int buflen));
+char_u *transchar __ARGS((int c));
+char_u *transchar_byte __ARGS((int c));
+void transchar_nonprint __ARGS((char_u *buf, int c));
+void transchar_hex __ARGS((char_u *buf, int c));
+int byte2cells __ARGS((int b));
+int char2cells __ARGS((int c));
+int ptr2cells __ARGS((char_u *p));
+int vim_strsize __ARGS((char_u *s));
+int vim_strnsize __ARGS((char_u *s, int len));
+int chartabsize __ARGS((char_u *p, colnr_T col));
+int linetabsize __ARGS((char_u *s));
+int win_linetabsize __ARGS((win_T *wp, char_u *p, colnr_T len));
+int vim_isIDc __ARGS((int c));
+int vim_iswordc __ARGS((int c));
+int vim_iswordp __ARGS((char_u *p));
+int vim_iswordc_buf __ARGS((char_u *p, buf_T *buf));
+int vim_isfilec __ARGS((int c));
+int vim_isprintc __ARGS((int c));
+int vim_isprintc_strict __ARGS((int c));
+int lbr_chartabsize __ARGS((unsigned char *s, colnr_T col));
+int lbr_chartabsize_adv __ARGS((char_u **s, colnr_T col));
+int win_lbr_chartabsize __ARGS((win_T *wp, char_u *s, colnr_T col, int *headp));
+int in_win_border __ARGS((win_T *wp, colnr_T vcol));
+void getvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+colnr_T getvcol_nolist __ARGS((pos_T *posp));
+void getvvcol __ARGS((win_T *wp, pos_T *pos, colnr_T *start, colnr_T *cursor, colnr_T *end));
+void getvcols __ARGS((win_T *wp, pos_T *pos1, pos_T *pos2, colnr_T *left, colnr_T *right));
+char_u *skipwhite __ARGS((char_u *p));
+char_u *skipdigits __ARGS((char_u *p));
+char_u *skiphex __ARGS((char_u *p));
+char_u *skiptodigit __ARGS((char_u *p));
+char_u *skiptohex __ARGS((char_u *p));
+int vim_isdigit __ARGS((int c));
+int vim_isxdigit __ARGS((int c));
+int vim_islower __ARGS((int c));
+int vim_isupper __ARGS((int c));
+int vim_toupper __ARGS((int c));
+int vim_tolower __ARGS((int c));
+char_u *skiptowhite __ARGS((char_u *p));
+char_u *skiptowhite_esc __ARGS((char_u *p));
+long getdigits __ARGS((char_u **pp));
+int vim_isblankline __ARGS((char_u *lbuf));
+void vim_str2nr __ARGS((char_u *start, int *hexp, int *len, int dooct, int dohex, long *nptr, unsigned long *unptr));
+int hex2nr __ARGS((int c));
+int hexhex2nr __ARGS((char_u *p));
+int rem_backslash __ARGS((char_u *str));
+void backslash_halve __ARGS((char_u *p));
+char_u *backslash_halve_save __ARGS((char_u *p));
+void ebcdic2ascii __ARGS((char_u *buffer, int len));
 /* vim: set ft=c : */
--- a/src/proto/getchar.pro
+++ b/src/proto/getchar.pro
@@ -1,63 +1,64 @@
 /* getchar.c */
-extern void free_buff __ARGS((struct buffheader *buf));
-extern char_u *get_recorded __ARGS((void));
-extern char_u *get_inserted __ARGS((void));
-extern int stuff_empty __ARGS((void));
-extern void typeahead_noflush __ARGS((int c));
-extern void flush_buffers __ARGS((int typeahead));
-extern void ResetRedobuff __ARGS((void));
-extern void saveRedobuff __ARGS((void));
-extern void restoreRedobuff __ARGS((void));
-extern void AppendToRedobuff __ARGS((char_u *s));
-extern void AppendToRedobuffLit __ARGS((char_u *str, int len));
-extern void AppendCharToRedobuff __ARGS((int c));
-extern void AppendNumberToRedobuff __ARGS((long n));
-extern void stuffReadbuff __ARGS((char_u *s));
-extern void stuffReadbuffLen __ARGS((char_u *s, long len));
-extern void stuffReadbuffSpec __ARGS((char_u *s));
-extern void stuffcharReadbuff __ARGS((int c));
-extern void stuffnumReadbuff __ARGS((long n));
-extern int start_redo __ARGS((long count, int old_redo));
-extern int start_redo_ins __ARGS((void));
-extern void stop_redo_ins __ARGS((void));
-extern int ins_typebuf __ARGS((char_u *str, int noremap, int offset, int nottyped, int silent));
-extern int typebuf_changed __ARGS((int tb_change_cnt));
-extern int typebuf_typed __ARGS((void));
-extern int typebuf_maplen __ARGS((void));
-extern void del_typebuf __ARGS((int len, int offset));
-extern int alloc_typebuf __ARGS((void));
-extern void free_typebuf __ARGS((void));
-extern int save_typebuf __ARGS((void));
-extern void save_typeahead __ARGS((tasave_T *tp));
-extern void restore_typeahead __ARGS((tasave_T *tp));
-extern void openscript __ARGS((char_u *name, int directly));
-extern void close_all_scripts __ARGS((void));
-extern int using_script __ARGS((void));
-extern void before_blocking __ARGS((void));
-extern void updatescript __ARGS((int c));
-extern int vgetc __ARGS((void));
-extern int safe_vgetc __ARGS((void));
-extern int vpeekc __ARGS((void));
-extern int vpeekc_nomap __ARGS((void));
-extern int vpeekc_any __ARGS((void));
-extern int char_avail __ARGS((void));
-extern void vungetc __ARGS((int c));
-extern int inchar __ARGS((char_u *buf, int maxlen, long wait_time, int tb_change_cnt));
-extern int fix_input_buffer __ARGS((char_u *buf, int len, int script));
-extern int input_available __ARGS((void));
-extern int do_map __ARGS((int maptype, char_u *arg, int mode, int abbrev));
-extern int get_map_mode __ARGS((char_u **cmdp, int forceit));
-extern void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr));
-extern void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr));
-extern int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr));
-extern int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr));
-extern char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx));
-extern int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file));
-extern int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol));
-extern int makemap __ARGS((FILE *fd, buf_T *buf));
-extern int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
-extern void check_map_keycodes __ARGS((void));
-extern char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr));
-extern void init_mappings __ARGS((void));
-extern void add_map __ARGS((char_u *map, int mode));
+void free_buff __ARGS((struct buffheader *buf));
+char_u *get_recorded __ARGS((void));
+char_u *get_inserted __ARGS((void));
+int stuff_empty __ARGS((void));
+void typeahead_noflush __ARGS((int c));
+void flush_buffers __ARGS((int typeahead));
+void ResetRedobuff __ARGS((void));
+void saveRedobuff __ARGS((void));
+void restoreRedobuff __ARGS((void));
+void AppendToRedobuff __ARGS((char_u *s));
+void AppendToRedobuffLit __ARGS((char_u *str, int len));
+void AppendCharToRedobuff __ARGS((int c));
+void AppendNumberToRedobuff __ARGS((long n));
+void stuffReadbuff __ARGS((char_u *s));
+void stuffReadbuffLen __ARGS((char_u *s, long len));
+void stuffReadbuffSpec __ARGS((char_u *s));
+void stuffcharReadbuff __ARGS((int c));
+void stuffnumReadbuff __ARGS((long n));
+int start_redo __ARGS((long count, int old_redo));
+int start_redo_ins __ARGS((void));
+void stop_redo_ins __ARGS((void));
+int ins_typebuf __ARGS((char_u *str, int noremap, int offset, int nottyped, int silent));
+int typebuf_changed __ARGS((int tb_change_cnt));
+int typebuf_typed __ARGS((void));
+int typebuf_maplen __ARGS((void));
+void del_typebuf __ARGS((int len, int offset));
+int alloc_typebuf __ARGS((void));
+void free_typebuf __ARGS((void));
+int save_typebuf __ARGS((void));
+void save_typeahead __ARGS((tasave_T *tp));
+void restore_typeahead __ARGS((tasave_T *tp));
+void openscript __ARGS((char_u *name, int directly));
+void close_all_scripts __ARGS((void));
+int using_script __ARGS((void));
+void before_blocking __ARGS((void));
+void updatescript __ARGS((int c));
+int vgetc __ARGS((void));
+int safe_vgetc __ARGS((void));
+int vpeekc __ARGS((void));
+int vpeekc_nomap __ARGS((void));
+int vpeekc_any __ARGS((void));
+int char_avail __ARGS((void));
+void vungetc __ARGS((int c));
+int inchar __ARGS((char_u *buf, int maxlen, long wait_time, int tb_change_cnt));
+int fix_input_buffer __ARGS((char_u *buf, int len, int script));
+int input_available __ARGS((void));
+int do_map __ARGS((int maptype, char_u *arg, int mode, int abbrev));
+int get_map_mode __ARGS((char_u **cmdp, int forceit));
+void map_clear __ARGS((char_u *cmdp, char_u *arg, int forceit, int abbr));
+void map_clear_int __ARGS((buf_T *buf, int mode, int local, int abbr));
+int map_to_exists __ARGS((char_u *str, char_u *modechars, int abbr));
+int map_to_exists_mode __ARGS((char_u *rhs, int mode, int abbr));
+char_u *set_context_in_map_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit, int isabbrev, int isunmap, cmdidx_T cmdidx));
+int ExpandMappings __ARGS((regmatch_T *regmatch, int *num_file, char_u ***file));
+int check_abbr __ARGS((int c, char_u *ptr, int col, int mincol));
+char_u *vim_strsave_escape_csi __ARGS((char_u *p));
+int makemap __ARGS((FILE *fd, buf_T *buf));
+int put_escstr __ARGS((FILE *fd, char_u *strstart, int what));
+void check_map_keycodes __ARGS((void));
+char_u *check_map __ARGS((char_u *keys, int mode, int exact, int ign_mod, int abbr));
+void init_mappings __ARGS((void));
+void add_map __ARGS((char_u *map, int mode));
 /* vim: set ft=c : */
--- a/src/proto/normal.pro
+++ b/src/proto/normal.pro
@@ -1,26 +1,26 @@
 /* normal.c */
-extern void init_normal_cmds __ARGS((void));
-extern void normal_cmd __ARGS((oparg_T *oap, int toplevel));
-extern void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
-extern int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
-extern void check_visual_highlight __ARGS((void));
-extern void end_visual_mode __ARGS((void));
-extern void reset_VIsual_and_resel __ARGS((void));
-extern void reset_VIsual __ARGS((void));
-extern int find_ident_under_cursor __ARGS((char_u **string, int find_type));
-extern int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
-extern void clear_showcmd __ARGS((void));
-extern int add_to_showcmd __ARGS((int c));
-extern void add_to_showcmd_c __ARGS((int c));
-extern void push_showcmd __ARGS((void));
-extern void pop_showcmd __ARGS((void));
-extern void do_check_scrollbind __ARGS((int check));
-extern void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
-extern int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
-extern void scroll_redraw __ARGS((int up, long count));
-extern void handle_tabmenu __ARGS((void));
-extern void do_nv_ident __ARGS((int c1, int c2));
-extern int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
-extern void start_selection __ARGS((void));
-extern void may_start_select __ARGS((int c));
+void init_normal_cmds __ARGS((void));
+void normal_cmd __ARGS((oparg_T *oap, int toplevel));
+void do_pending_operator __ARGS((cmdarg_T *cap, int old_col, int gui_yank));
+int do_mouse __ARGS((oparg_T *oap, int c, int dir, long count, int fixindent));
+void check_visual_highlight __ARGS((void));
+void end_visual_mode __ARGS((void));
+void reset_VIsual_and_resel __ARGS((void));
+void reset_VIsual __ARGS((void));
+int find_ident_under_cursor __ARGS((char_u **string, int find_type));
+int find_ident_at_pos __ARGS((win_T *wp, linenr_T lnum, colnr_T startcol, char_u **string, int find_type));
+void clear_showcmd __ARGS((void));
+int add_to_showcmd __ARGS((int c));
+void add_to_showcmd_c __ARGS((int c));
+void push_showcmd __ARGS((void));
+void pop_showcmd __ARGS((void));
+void do_check_scrollbind __ARGS((int check));
+void check_scrollbind __ARGS((linenr_T topline_diff, long leftcol_diff));
+int find_decl __ARGS((char_u *ptr, int len, int locally, int thisblock, int searchflags));
+void scroll_redraw __ARGS((int up, long count));
+void handle_tabmenu __ARGS((void));
+void do_nv_ident __ARGS((int c1, int c2));
+int get_visual_text __ARGS((cmdarg_T *cap, char_u **pp, int *lenp));
+void start_selection __ARGS((void));
+void may_start_select __ARGS((int c));
 /* vim: set ft=c : */
--- a/src/proto/ops.pro
+++ b/src/proto/ops.pro
@@ -1,60 +1,61 @@
 /* ops.c */
-extern int get_op_type __ARGS((int char1, int char2));
-extern int op_on_lines __ARGS((int op));
-extern int get_op_char __ARGS((int optype));
-extern int get_extra_op_char __ARGS((int optype));
-extern void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
-extern void shift_line __ARGS((int left, int round, int amount));
-extern void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
-extern int get_expr_register __ARGS((void));
-extern void set_expr_line __ARGS((char_u *new_line));
-extern char_u *get_expr_line __ARGS((void));
-extern char_u *get_expr_line_src __ARGS((void));
-extern int valid_yank_reg __ARGS((int regname, int writing));
-extern void get_yank_register __ARGS((int regname, int writing));
-extern int may_get_selection __ARGS((int regname));
-extern void *get_register __ARGS((int name, int copy));
-extern void put_register __ARGS((int name, void *reg));
-extern int yank_register_mline __ARGS((int regname));
-extern int do_record __ARGS((int c));
-extern int do_execreg __ARGS((int regname, int colon, int addcr));
-extern int insert_reg __ARGS((int regname, int literally));
-extern int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
-extern int cmdline_paste_reg __ARGS((int regname, int literally));
-extern void adjust_clip_reg __ARGS((int *rp));
-extern int op_delete __ARGS((oparg_T *oap));
-extern int op_replace __ARGS((oparg_T *oap, int c));
-extern void op_tilde __ARGS((oparg_T *oap));
-extern int swapchar __ARGS((int op_type, pos_T *pos));
-extern void op_insert __ARGS((oparg_T *oap, long count1));
-extern int op_change __ARGS((oparg_T *oap));
-extern void init_yank __ARGS((void));
-extern void clear_registers __ARGS((void));
-extern int op_yank __ARGS((oparg_T *oap, int deleting, int mess));
-extern void do_put __ARGS((int regname, int dir, long count, int flags));
-extern int preprocs_left __ARGS((void));
-extern int get_register_name __ARGS((int num));
-extern void ex_display __ARGS((exarg_T *eap));
-extern void do_do_join __ARGS((long count, int insert_space));
-extern int do_join __ARGS((int insert_space));
-extern void op_format __ARGS((oparg_T *oap, int keep_cursor));
-extern void op_formatexpr __ARGS((oparg_T *oap));
-extern int fex_format __ARGS((linenr_T lnum, long count));
-extern void format_lines __ARGS((linenr_T line_count));
-extern int paragraph_start __ARGS((linenr_T lnum));
-extern int do_addsub __ARGS((int command, linenr_T Prenum1));
-extern int read_viminfo_register __ARGS((vir_T *virp, int force));
-extern void write_viminfo_registers __ARGS((FILE *fp));
-extern void x11_export_final_selection __ARGS((void));
-extern void clip_free_selection __ARGS((VimClipboard *cbd));
-extern void clip_get_selection __ARGS((VimClipboard *cbd));
-extern void clip_yank_selection __ARGS((int type, char_u *str, long len, VimClipboard *cbd));
-extern int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd));
-extern void dnd_yank_drag_data __ARGS((char_u *str, long len));
-extern char_u get_reg_type __ARGS((int regname, long *reglen));
-extern char_u *get_reg_contents __ARGS((int regname, int allowexpr, int expr_src));
-extern void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append));
-extern void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len));
-extern void clear_oparg __ARGS((oparg_T *oap));
-extern void cursor_pos_info __ARGS((void));
+int get_op_type __ARGS((int char1, int char2));
+int op_on_lines __ARGS((int op));
+int get_op_char __ARGS((int optype));
+int get_extra_op_char __ARGS((int optype));
+void op_shift __ARGS((oparg_T *oap, int curs_top, int amount));
+void shift_line __ARGS((int left, int round, int amount));
+void op_reindent __ARGS((oparg_T *oap, int (*how)(void)));
+int get_expr_register __ARGS((void));
+void set_expr_line __ARGS((char_u *new_line));
+char_u *get_expr_line __ARGS((void));
+char_u *get_expr_line_src __ARGS((void));
+int valid_yank_reg __ARGS((int regname, int writing));
+void get_yank_register __ARGS((int regname, int writing));
+int may_get_selection __ARGS((int regname));
+void *get_register __ARGS((int name, int copy));
+void put_register __ARGS((int name, void *reg));
+int yank_register_mline __ARGS((int regname));
+int do_record __ARGS((int c));
+int do_execreg __ARGS((int regname, int colon, int addcr));
+int insert_reg __ARGS((int regname, int literally));
+int get_spec_reg __ARGS((int regname, char_u **argp, int *allocated, int errmsg));
+int cmdline_paste_reg __ARGS((int regname, int literally));
+void adjust_clip_reg __ARGS((int *rp));
+int op_delete __ARGS((oparg_T *oap));
+int op_replace __ARGS((oparg_T *oap, int c));
+void op_tilde __ARGS((oparg_T *oap));
+int swapchar __ARGS((int op_type, pos_T *pos));
+void op_insert __ARGS((oparg_T *oap, long count1));
+int op_change __ARGS((oparg_T *oap));
+void init_yank __ARGS((void));
+void clear_registers __ARGS((void));
+int op_yank __ARGS((oparg_T *oap, int deleting, int mess));
+void do_put __ARGS((int regname, int dir, long count, int flags));
+void adjust_cursor_eol __ARGS((void));
+int preprocs_left __ARGS((void));
+int get_register_name __ARGS((int num));
+void ex_display __ARGS((exarg_T *eap));
+void do_do_join __ARGS((long count, int insert_space));
+int do_join __ARGS((int insert_space));
+void op_format __ARGS((oparg_T *oap, int keep_cursor));
+void op_formatexpr __ARGS((oparg_T *oap));
+int fex_format __ARGS((linenr_T lnum, long count, int c));
+void format_lines __ARGS((linenr_T line_count));
+int paragraph_start __ARGS((linenr_T lnum));
+int do_addsub __ARGS((int command, linenr_T Prenum1));
+int read_viminfo_register __ARGS((vir_T *virp, int force));
+void write_viminfo_registers __ARGS((FILE *fp));
+void x11_export_final_selection __ARGS((void));
+void clip_free_selection __ARGS((VimClipboard *cbd));
+void clip_get_selection __ARGS((VimClipboard *cbd));
+void clip_yank_selection __ARGS((int type, char_u *str, long len, VimClipboard *cbd));
+int clip_convert_selection __ARGS((char_u **str, long_u *len, VimClipboard *cbd));
+void dnd_yank_drag_data __ARGS((char_u *str, long len));
+char_u get_reg_type __ARGS((int regname, long *reglen));
+char_u *get_reg_contents __ARGS((int regname, int allowexpr, int expr_src));
+void write_reg_contents __ARGS((int name, char_u *str, int maxlen, int must_append));
+void write_reg_contents_ex __ARGS((int name, char_u *str, int maxlen, int must_append, int yank_type, long block_len));
+void clear_oparg __ARGS((oparg_T *oap));
+void cursor_pos_info __ARGS((void));
 /* vim: set ft=c : */
--- a/src/spell.c
+++ b/src/spell.c
@@ -9333,7 +9333,7 @@ spell_add_word(word, len, bad, index, un
 		    {
 			fputc('#', fd);
 			if (undo)
-			smsg((char_u *)_("Word removed from %s"), NameBuff);
+			    smsg((char_u *)_("Word removed from %s"), NameBuff);
 		    }
 		    fseek(fd, fpos_next, SEEK_SET);
 		}
@@ -9341,8 +9341,7 @@ spell_add_word(word, len, bad, index, un
 	    fclose(fd);
 	}
     }
-
-    if (!undo)
+    else
     {
 	fd = mch_fopen((char *)fname, "a");
 	if (fd == NULL && new_spf)
@@ -12860,8 +12859,12 @@ score_combine(su)
 	}
     }
 
-    if (slang == NULL)	/* just in case */
+    if (slang == NULL)	/* Using "double" without sound folding. */
+    {
+	(void)cleanup_suggestions(&su->su_ga, su->su_maxscore,
+							     su->su_maxcount);
 	return;
+    }
 
     /* Add the alternate score to su_sga. */
     for (i = 0; i < su->su_sga.ga_len; ++i)
@@ -13122,7 +13125,8 @@ add_sound_suggest(su, goodword, score, l
     hi = hash_lookup(&slang->sl_sounddone, goodword, hash);
     if (HASHITEM_EMPTY(hi))
     {
-	sft = (sftword_T *)alloc((unsigned)(sizeof(sftword_T) + STRLEN(goodword)));
+	sft = (sftword_T *)alloc((unsigned)(sizeof(sftword_T)
+							 + STRLEN(goodword)));
 	if (sft != NULL)
 	{
 	    sft->sft_score = score;
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -6327,12 +6327,18 @@ init_highlight(both, reset)
 	do_highlight((char_u *)pp[i], reset, TRUE);
 
     /* Reverse looks ugly, but grey may not work for 8 colors.  Thus let it
-     * depend on the number of colors available. */
+     * depend on the number of colors available.
+     * With 8 colors brown is equal to yellow, need to use black for Search fg
+     * to avoid Statement highlighted text disappears. */
     if (t_colors > 8)
 	do_highlight((char_u *)(*p_bg == 'l' ? "Visual ctermbg=LightGrey"
 				   : "Visual ctermbg=DarkGrey"), FALSE, TRUE);
     else
+    {
 	do_highlight((char_u *)"Visual cterm=reverse", FALSE, TRUE);
+	if (*p_bg == 'l')
+	    do_highlight((char_u *)"Search ctermfg=black", FALSE, TRUE);
+    }
 
 #ifdef FEAT_SYN_HL
     /*
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70f"
 #define VIM_VERSION_SHORT	"7.0f"
-#define VIM_VERSION_MEDIUM	"7.0f01 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0f01 BETA (2006 Apr 25)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0f01 BETA (2006 Apr 25, compiled "
+#define VIM_VERSION_MEDIUM	"7.0f02 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0f02 BETA (2006 Apr 26)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0f02 BETA (2006 Apr 26, compiled "
--- a/src/vim.h
+++ b/src/vim.h
@@ -1665,7 +1665,8 @@ int vim_memcmp __ARGS((void *, void *, s
 #define VV_SWAPNAME	45
 #define VV_SWAPCHOICE	46
 #define VV_SWAPCOMMAND	47
-#define VV_LEN		48	/* number of v: vars */
+#define VV_CHAR		48
+#define VV_LEN		49	/* number of v: vars */
 
 #ifdef FEAT_CLIPBOARD