changeset 714:0f9f4761ad9c v7.0216

updated for version 7.0216
author vimboss
date Mon, 06 Mar 2006 23:29:24 +0000
parents 0c381fb7846c
children b526e10493b1
files Filelist Makefile runtime/autoload/htmlcomplete.vim runtime/autoload/phpcomplete.vim runtime/doc/change.txt runtime/doc/editing.txt runtime/doc/eval.txt runtime/doc/if_mzsch.txt runtime/doc/if_ole.txt runtime/doc/if_perl.txt runtime/doc/if_ruby.txt runtime/doc/if_tcl.txt runtime/doc/index.txt runtime/doc/insert.txt runtime/doc/map.txt runtime/doc/mbyte.txt runtime/doc/options.txt runtime/doc/pattern.txt runtime/doc/quickref.txt runtime/doc/remote.txt runtime/doc/spell.txt runtime/doc/starting.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/various.txt runtime/doc/version7.txt runtime/filetype.vim runtime/ftplugin/php.vim runtime/lang/menu_de_de.latin1.vim runtime/menu.vim runtime/optwin.vim runtime/syntax/logtalk.vim runtime/syntax/rd.vim runtime/syntax/rhelp.vim runtime/syntax/sshconfig.vim runtime/syntax/sshdconfig.vim src/GvimExt/Makefile src/GvimExt/gvimext.h src/GvimExt/gvimext.rc src/INSTALLpc.txt src/Make_mvc.mak src/dosinst.h src/edit.c src/eval.c src/ex_cmds.c src/ex_cmds.h src/ex_cmds2.c src/ex_docmd.c src/ex_getln.c src/feature.h src/fileio.c src/globals.h src/gui.h src/gui_beval.c src/gui_gtk_x11.c src/gui_w32.c src/if_cscope.c src/if_mzsch.c src/if_ole.cpp src/if_perl.xs src/if_ruby.c src/if_sniff.c src/if_tcl.c src/main.c src/mbyte.c src/memfile.c src/memline.c src/message.c src/misc1.c src/msvcsetup.bat src/netbeans.c src/normal.c src/ops.c src/option.c src/option.h src/os_msdos.c src/os_mswin.c src/os_win16.c src/os_win32.c src/proto/eval.pro src/proto/mbyte.pro src/proto/spell.pro src/regexp.c src/screen.c src/spell.c src/tag.c src/testdir/test58.in src/testdir/test59.in src/ui.c src/version.h src/vim.h src/vim.rc src/vimio.h src/xxd/Make_mvc.mak src/xxd/xxd.c
diffstat 95 files changed, 9798 insertions(+), 1335 deletions(-) [+]
line wrap: on
line diff
--- a/Filelist
+++ b/Filelist
@@ -248,6 +248,7 @@ SRC_DOS =	\
 		src/Make_mvc.mak \
 		src/Make_w16.mak \
 		src/bigvim.bat \
+		src/msvcsetup.bat \
 		src/dimm.idl \
 		src/dlldata.c \
 		src/dosinst.c \
@@ -285,6 +286,7 @@ SRC_DOS =	\
 		src/uninstal.c \
 		src/vim.def \
 		src/vim.rc \
+		src/vimio.h \
 		src/gvim.exe.mnf \
 		src/vim16.def \
 		src/vim16.rc \
--- a/Makefile
+++ b/Makefile
@@ -128,21 +128,24 @@ MINOR = 0aa
 # - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
 #   "uninstald32.exe".
 # Win32 console version:
-# - Set environment for Visual C++ 5.0: "vcvars32"
+# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat"
 # - "nmake -f Make_mvc.mak"
 # - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
 # - Rename the executables to "vimw32.exe", "xxdw32.exe".
+# - Rename ObjC/vim.pdb to vimw32.pdb.
 # - When building the Win32s version later, delete vimrun.exe, install.exe and
 #   uninstal.exe.  Otherwise rename executables to installw32.exe and
 #   uninstalw32.exe.
 # Win32 GUI version:
 # - "nmake -f Make_mvc.mak GUI=yes.
 # - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
+# - Move ObjC/gvim.pdb to here.
 # - Delete vimrun.exe, install.exe and uninstall.exe.
 # - Copy "GvimExt/gvimext.dll" to here.
 # Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
 # - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
 # - Rename "gvim.exe" to "gvim_ole.exe".
+# - Rename ObjC/gvim.pdb to "gvim_ole.pdb".
 # - Delete install.exe and uninstall.exe.
 # - If building the Win32s version delete vimrun.exe.
 # Win32s GUI version:
@@ -430,6 +433,7 @@ dosbin_gvim: dist no_title.vim dist/$(CO
 	cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
 	cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
 	cd dist && zip -9 -rD -z gvim$(VERSION).zip vim <$(COMMENT_GVIM)
+	cp gvim.pdb dist/gvim$(VERSION).pdb
 
 # make Win32 console
 dosbin_w32: dist no_title.vim dist/$(COMMENT_W32)
@@ -446,6 +450,7 @@ dosbin_w32: dist no_title.vim dist/$(COM
 	cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
 	cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
 	cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32)
+	cp vimw32.pdb dist/vim$(VERSION)w32.pdb
 
 # make 32bit DOS
 dosbin_d32: dist no_title.vim dist/$(COMMENT_D32)
@@ -500,6 +505,7 @@ dosbin_ole: dist no_title.vim dist/$(COM
 	cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll
 	cp src/VisVim/README_VisVim.txt dist/vim/$(VIMRTDIR)
 	cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE)
+	cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb
 
 # make Win32s gvim
 dosbin_s: dist no_title.vim dist/$(COMMENT_W32S)
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	XHTML 1.0 Strict
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Feb 18
+" Last Change:	2006 Mar 5
 
 function! htmlcomplete#CompleteTags(findstart, base)
   if a:findstart
@@ -138,7 +138,8 @@ function! htmlcomplete#CompleteTags(find
 		unlet! b:entitiescompl
 
 		if !exists("g:xmldata_xhtml10s")
-			runtime! autoload/xml/xhtml10s.vim
+			"runtime! autoload/xml/xhtml10s.vim
+			call htmlcomplete#LoadData()
 		endif
 
 	    let entities =  g:xmldata_xhtml10s['vimxmlentities']
@@ -496,7 +497,8 @@ function! htmlcomplete#CompleteTags(find
 
 		" Load data {{{
 		if !exists("g:xmldata_xhtml10s")
-			runtime! autoload/xml/xhtml10s.vim
+			"runtime! autoload/xml/xhtml10s.vim
+			call htmlcomplete#LoadData()
 		endif
 		" }}}
 		"
@@ -537,18 +539,26 @@ function! htmlcomplete#CompleteTags(find
 	" Close tag {{{
 	let b:unaryTagsStack = "base meta link hr br param img area input col"
 	if context =~ '^\/'
-		let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
-		return [opentag.">"]
+		if context =~ '^\/.'
+			return []
+		else
+			let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+			return [opentag.">"]
+		endif
 	endif
 	" Load data {{{
 	if !exists("g:xmldata_xhtml10s")
-		runtime! autoload/xml/xhtml10s.vim
+		"runtime! autoload/xml/xhtml10s.vim
+		call htmlcomplete#LoadData()
 	endif
 	" }}}
 	" Tag completion {{{
 	" Deal with tag completion.
 	let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
-	if opentag == ''
+	" MM: TODO: GLOT works always the same but with some weird situation it
+	" behaves as intended in HTML but screws in PHP
+	let g:ot = opentag
+	if opentag == '' || &ft == 'php' && !has_key(g:xmldata_xhtml10s, opentag)
 		" Hack for sometimes failing GetLastOpenTag.
 		" As far as I tested fail isn't GLOT fault but problem
 		" of invalid document - not properly closed tags and other mish-mash.
@@ -560,7 +570,6 @@ function! htmlcomplete#CompleteTags(find
 	endif
 	" }}}
 
-
 	for m in sort(tags)
 		if m =~ '^'.context
 			call add(res, m)
@@ -587,8 +596,4055 @@ function! htmlcomplete#CompleteTags(find
 	endif
 	return final_menu
 
-
 	" }}}
   endif
 endfunction
+function! htmlcomplete#LoadData()
+let g:xmldata_xhtml10s = {
+\ 'vimxmlentities' : ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"],
+\ 'vimxmlattrinfo' : {
+\ 'accept' : ['ContentType', ''],
+\ 'accesskey' : ['Character', ''],
+\ 'action' : ['*URI', ''],
+\ 'align' : ['String', ''],
+\ 'alt' : ['*Text', ''],
+\ 'archive' : ['UriList', ''],
+\ 'axis' : ['CDATA', ''],
+\ 'border' : ['Pixels', ''],
+\ 'cellpadding' : ['Length', ''],
+\ 'cellspacing' : ['Length', ''],
+\ 'char' : ['Character', ''],
+\ 'charoff' : ['Length', ''],
+\ 'charset' : ['LangCode', ''],
+\ 'checked' : ['Bool', ''],
+\ 'class' : ['CDATA', 'Name of class, used for connecting element with style'],
+\ 'codetype' : ['ContentType', ''],
+\ 'cols' : ['*Number', ''],
+\ 'colspan' : ['Number', ''],
+\ 'content' : ['*CDATA', ''],
+\ 'coords' : ['Coords', ''],
+\ 'data' : ['URI', ''],
+\ 'datetime' : ['DateTime', ''],
+\ 'declare' : ['Bool', ''],
+\ 'defer' : ['Bool', ''],
+\ 'dir' : ['String', ''],
+\ 'disabled' : ['Bool', ''],
+\ 'enctype' : ['ContentType', ''],
+\ 'for' : ['ID', ''],
+\ 'headers' : ['IDREFS', ''],
+\ 'height' : ['Number', ''],
+\ 'href' : ['*URI', ''],
+\ 'hreflang' : ['LangCode', ''],
+\ 'id' : ['ID', 'Unique string'],
+\ 'ismap' : ['Bool', ''],
+\ 'label' : ['*Text', ''],
+\ 'lang' : ['LangCode', ''],
+\ 'longdesc' : ['URI', ''],
+\ 'maxlength' : ['Number', ''],
+\ 'media' : ['MediaDesc', ''],
+\ 'method' : ['String', ''],
+\ 'multiple' : ['Bool', ''],
+\ 'name' : ['CDATA', ''],
+\ 'nohref' : ['Bool', ''],
+\ 'onblur' : ['Script', ''],
+\ 'onchange' : ['Script', ''],
+\ 'onclick' : ['Script', ''],
+\ 'ondblclick' : ['Script', ''],
+\ 'onfocus' : ['Script', ''],
+\ 'onkeydown' : ['Script', ''],
+\ 'onkeypress' : ['Script', ''],
+\ 'onkeyup' : ['Script', ''],
+\ 'onload' : ['Script', ''],
+\ 'onmousedown' : ['Script', ''],
+\ 'onmousemove' : ['Script', ''],
+\ 'onmouseout' : ['Script', ''],
+\ 'onmouseover' : ['Script', ''],
+\ 'onmouseup' : ['Script', ''],
+\ 'onreset' : ['Script', ''],
+\ 'onselect' : ['Script', ''],
+\ 'onsubmit' : ['Script', ''],
+\ 'onunload' : ['Script', ''],
+\ 'profile' : ['URI', ''],
+\ 'readonly' : ['Bool', ''],
+\ 'rel' : ['LinkTypes', ''],
+\ 'rev' : ['LinkTypes', ''],
+\ 'rows' : ['*Number', ''],
+\ 'rules' : ['String', ''],
+\ 'scheme' : ['CDATA', ''],
+\ 'selected' : ['Bool', ''],
+\ 'shape' : ['Shape', ''],
+\ 'size' : ['CDATA', ''],
+\ 'span' : ['Number', ''],
+\ 'src' : ['*URI', ''],
+\ 'standby' : ['Text', ''],
+\ 'style' : ['StyleSheet', ''],
+\ 'summary' : ['*Text', ''],
+\ 'tabindex' : ['Number', ''],
+\ 'title' : ['Text', ''],
+\ 'type' : ['*ContentType', ''],
+\ 'usemap' : ['URI', ''],
+\ 'valign' : ['String', ''],
+\ 'valuetype' : ['String', ''],
+\ 'width' : ['Number', ''],
+\ 'xmlns' : ['URI', '']
+\ },
+\ 'vimxmltaginfo' : {
+\ 'base' : ['/>', ''],
+\ 'meta' : ['/>', ''],
+\ 'link' : ['/>', ''],
+\ 'img' : ['/>', ''],
+\ 'hr' : ['/>', ''],
+\ 'br' : ['/>', ''],
+\ 'param' : ['/>', ''],
+\ 'area' : ['/>', ''],
+\ 'input' : ['/>', ''],
+\ 'col' : ['/>', '']
+\ },
+\ 'tr' : [
+\ [
+\ 'th',
+\ 'td'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'charoff' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'align' : [
+\ 'left',
+\ 'center',
+\ 'right',
+\ 'justify',
+\ 'char'
+\ ],
+\ 'valign' : [
+\ 'top',
+\ 'middle',
+\ 'bottom',
+\ 'baseline'
+\ ],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'char' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'input' : [[],
+\ {
+\ 'ondblclick' : [],
+\ 'onchange' : [],
+\ 'readonly' : [
+\  'BOOL'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'src' : [],
+\ 'value' : [],
+\ 'name' : [],
+\ 'checked' : [
+\ 'BOOL'
+\ ],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'type' : [
+\ 'text',
+\ 'password',
+\ 'checkbox',
+\ 'radio',
+\ 'submit',
+\ 'reset',
+\ 'file',
+\ 'hidden',
+\ 'image',
+\ 'button'
+\ ],
+\ 'accesskey' : [],
+\ 'disabled' : [
+\  'BOOL'
+\ ],
+\ 'usemap' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'size' : [],
+\ 'onblur' : [],
+\ 'onfocus' : [],
+\ 'maxlength' : [],
+\ 'onselect' : [],
+\ 'accept' : [],
+\ 'alt' : [],
+\ 'tabindex' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'xml:lang' : []
+\ }
+\ ],
+\ 'table' : [
+\ [
+\ 'caption',
+\ 'col',
+\ 'colgroup',
+\ 'thead',
+\ 'tfoot',
+\ 'tbody',
+\ 'tr'
+\ ],
+\ {
+\ 'width' : [],
+\ 'frame' : [
+\ 'void',
+\ 'above',
+\ 'below',
+\ 'hsides',
+\ 'lhs',
+\ 'rhs',
+\ 'vsides',
+\ 'box',
+\ 'border'
+\ ],
+\ 'ondblclick' : [],
+\ 'rules' : [
+\ 'none',
+\ 'groups',
+\ 'rows',
+\ 'cols',
+\ 'all'
+\ ],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'summary' : [],
+\ 'onkeyup' : [],
+\ 'cellspacing' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'border' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'cellpadding' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'form' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onsubmit' : [],
+\ 'enctype' : [
+\ '',
+\ 'application/x-www-form-urlencoded',
+\ ],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onreset' : [],
+\ 'onmouseup' : [],
+\ 'method' : [
+\ 'get',
+\ 'post'
+\ ],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'accept' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'accept-charset' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'action' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'h5' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'meta' : [[],
+\ {
+\ 'http-equiv' : [],
+\ 'lang' : [],
+\ 'name' : [],
+\ 'scheme' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ]
+\ }
+\ ],
+\ 'map' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript',
+\ 'area'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'name' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'style' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'title' : [],
+\ 'onclick' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'tfoot' : [
+\ [
+\ 'tr'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'charoff' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'align' : [
+\ 'left',
+\ 'center',
+\ 'right',
+\ 'justify',
+\ 'char'
+\ ],
+\ 'valign' : [
+\ 'top',
+\ 'middle',
+\ 'bottom',
+\ 'baseline'
+\ ],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'char' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'caption' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'code' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'base' : [[],
+\ {
+\ 'href' : []
+\ }
+\ ],
+\ 'br' : [[],
+\ {
+\ 'style' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'id' : []
+\ }
+\ ],
+\ 'acronym' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'strong' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'h4' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'em' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'b' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'q' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : [],
+\ 'cite' : []
+\ }
+\ ],
+\ 'span' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'title' : [
+\ {
+\ 'lang' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ]
+\ }
+\ ],
+\ 'small' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'area' : [[],
+\ {
+\ 'accesskey' : [],
+\ 'coords' : [],
+\ 'ondblclick' : [],
+\ 'onblur' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onfocus' : [],
+\ 'nohref' : [
+\ 'BOOL'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'href' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'alt' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'shape' : [
+\ 'rect',
+\ 'circle',
+\ 'poly',
+\ 'default'
+\ ]
+\ }
+\ ],
+\ 'body' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onunload' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onload' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'ol' : [
+\ [
+\ 'li'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'html' : [
+\ [
+\ 'head',
+\ 'body'
+\ ],
+\ {
+\ 'xmlns' : [
+\ 'http://www.w3.org/1999/xhtml',
+\ ],
+\ 'lang' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ]
+\ }
+\ ],
+\ 'var' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'ul' : [
+\ [
+\ 'li'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'del' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'datetime' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'cite' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'blockquote' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\  'ltr',
+\  'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : [],
+\ 'cite' : []
+\ }
+\ ],
+\ 'style' : [[],
+\ {
+\ 'lang' : [],
+\ 'media' : [],
+\ 'title' : [],
+\ 'type' : [],
+\ 'xml:space' : [
+\ 'preserve'
+\ ],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ]
+\ }
+\ ],
+\ 'dfn' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'h3' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'textarea' : [[], 
+\ {
+\ 'accesskey' : [],
+\ 'disabled' : [
+\ 'disabled'
+\ ],
+\ 'ondblclick' : [],
+\ 'rows' : [],
+\ 'onblur' : [],
+\ 'cols' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onchange' : [],
+\ 'onfocus' : [],
+\ 'readonly' : [
+\ 'BOOL'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onselect' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'name' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'a' : [
+\ [
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'accesskey' : [],
+\ 'rel' : [],
+\ 'coords' : [],
+\ 'ondblclick' : [],
+\ 'onblur' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onfocus' : [],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'href' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'lang' : [],
+\ 'name' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'charset' : [],
+\ 'hreflang' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'rev' : [],
+\ 'shape' : [
+\ 'rect',
+\ 'circle',
+\ 'poly',
+\ 'default'
+\ ],
+\ 'type' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'img' : [[],
+\ {
+\ 'width' : [],
+\ 'ismap' : [
+\ 'BOOL'
+\ ],
+\ 'usemap' : [],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'alt' : [],
+\ 'longdesc' : [],
+\ 'src' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'height' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'tt' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'thead' : [
+\ [
+\ 'tr'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'charoff' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'align' : [
+\ 'left',
+\ 'center',
+\ 'right',
+\ 'justify',
+\ 'char'
+\ ],
+\ 'valign' : [
+\ 'top',
+\ 'middle',
+\ 'bottom',
+\ 'baseline'
+\ ],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'char' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'abbr' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'h6' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'sup' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'address' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'param' : [[],
+\ {
+\ 'value' : [],
+\ 'name' : [],
+\ 'type' : [],
+\ 'valuetype' : [
+\ 'data',
+\ 'ref',
+\ 'object'
+\ ],
+\ 'id' : []
+\ }
+\ ],
+\ 'th' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'headers' : [],
+\ 'ondblclick' : [],
+\ 'axis' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'abbr' : [],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'h1' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'head' : [
+\ [
+\ 'script',
+\ 'style',
+\ 'meta',
+\ 'link',
+\ 'object',
+\ 'title',
+\ 'script',
+\ 'style',
+\ 'meta',
+\ 'link',
+\ 'object',
+\ 'base',
+\ 'script',
+\ 'style',
+\ 'meta',
+\ 'link',
+\ 'object',
+\ 'base',
+\ 'script',
+\ 'style',
+\ 'meta',
+\ 'link',
+\ 'object',
+\ 'title',
+\ 'script',
+\ 'style',
+\ 'meta',
+\ 'link',
+\ 'object'
+\ ],
+\ {
+\ 'profile' : [],
+\ 'lang' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ]
+\ }
+\ ],
+\ 'tbody' : [
+\ [
+\ 'tr'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'charoff' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'align' : [
+\ 'left',
+\ 'center',
+\ 'right',
+\ 'justify',
+\ 'char'
+\ ],
+\ 'valign' : [
+\ 'top',
+\ 'middle',
+\ 'bottom',
+\ 'baseline'
+\ ],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'char' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'legend' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'accesskey' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'dd' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'hr' : [[],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'li' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'td' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'headers' : [],
+\ 'ondblclick' : [],
+\ 'axis' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'abbr' : [],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'label' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'for' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'dl' : [
+\ [
+\ 'dt',
+\ 'dd'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'kbd' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'div' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'object' : [
+\ [
+\ 'param',
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'width' : [],
+\ 'usemap' : [],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'standby' : [],
+\ 'archive' : [],
+\ 'lang' : [],
+\ 'classid' : [],
+\ 'name' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'data' : [],
+\ 'height' : [],
+\ 'xml:lang' : [],
+\ 'codetype' : [],
+\ 'declare' : [
+\  'BOOL'
+\ ],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'type' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'codebase' : []
+\ }
+\ ],
+\ 'dt' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'pre' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'xml:space' : [
+\ 'preserve'
+\ ],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'samp' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'col' : [[],
+\ {
+\ 'disabled' : [
+\ 'disabled'
+\ ],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'value' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'label' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'selected' : [
+\ 'BOOL'
+\ ]
+\ }
+\ ],
+\ 'cite' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'i' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'select' : [
+\ [
+\ 'optgroup',
+\ 'option'
+\ ],
+\ {
+\ 'disabled' : [
+\ 'BOOL'
+\ ],
+\ 'ondblclick' : [],
+\ 'onblur' : [],
+\ 'size' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onchange' : [],
+\ 'onfocus' : [],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'name' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'multiple' : [
+\ 'multiple'
+\ ],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'link' : [[],
+\ {
+\ 'rel' : [],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'media' : [],
+\ 'href' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'charset' : [],
+\ 'hreflang' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'rev' : [],
+\ 'type' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'script' : [[],
+\ {
+\ 'defer' : [
+\ 'BOOL'
+\ ],
+\ 'src' : [],
+\ 'type' : [],
+\ 'charset' : [],
+\ 'xml:space' : [
+\  'preserve'
+\  ]
+\ }
+\ ],
+\ 'bdo' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'colgroup' : [
+\ [
+\ 'col'
+\ ],
+\ {
+\ 'width' : [],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'charoff' : [],
+\ 'onmouseover' : [],
+\ 'align' : [
+\  'left',
+\  'center',
+\  'right',
+\  'justify',
+\  'char'
+\ ],
+\ 'lang' : [],
+\ 'valign' : [
+\ 'top',
+\ 'middle',
+\ 'bottom',
+\ 'baseline'
+\ ],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'char' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : [],
+\ 'span' : [
+\ '',
+\ '1',
+\ ]
+\ }
+\ ],
+\ 'h2' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'ins' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'ondblclick' : [],
+\ 'datetime' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'cite' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'p' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'sub' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'big' : [
+\ [
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'fieldset' : [
+\ [
+\ 'legend',
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'a',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'input',
+\ 'select',
+\ 'textarea',
+\ 'label',
+\ 'button',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'noscript' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'fieldset',
+\ 'table',
+\ 'form',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'onmouseout' : [],
+\ 'onmousemove' : [],
+\ 'style' : [],
+\ 'ondblclick' : [],
+\ 'xml:lang' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onkeypress' : [],
+\ 'onmousedown' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'class' : [],
+\ 'title' : [],
+\ 'onclick' : []
+\ }
+\ ],
+\ 'button' : [
+\ [
+\ 'p',
+\ 'h1',
+\ 'h2',
+\ 'h3',
+\ 'h4',
+\ 'h5',
+\ 'h6',
+\ 'div',
+\ 'ul',
+\ 'ol',
+\ 'dl',
+\ 'pre',
+\ 'hr',
+\ 'blockquote',
+\ 'address',
+\ 'table',
+\ 'br',
+\ 'span',
+\ 'bdo',
+\ 'object',
+\ 'img',
+\ 'map',
+\ 'tt',
+\ 'i',
+\ 'b',
+\ 'big',
+\ 'small',
+\ 'em',
+\ 'strong',
+\ 'dfn',
+\ 'code',
+\ 'q',
+\ 'sub',
+\ 'sup',
+\ 'samp',
+\ 'kbd',
+\ 'var',
+\ 'cite',
+\ 'abbr',
+\ 'acronym',
+\ 'ins',
+\ 'del',
+\ 'script',
+\ 'noscript'
+\ ],
+\ {
+\ 'accesskey' : [],
+\ 'disabled' : [
+\ 'disabled'
+\ ],
+\ 'ondblclick' : [],
+\ 'onblur' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onfocus' : [],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'tabindex' : [],
+\ 'lang' : [],
+\ 'value' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'name' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'type' : [
+\ 'button',
+\ 'submit',
+\ 'reset'
+\ ],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ],
+\ 'optgroup' : [
+\ [
+\ 'option'
+\ ],
+\ {
+\ 'disabled' : [
+\ 'disabled'
+\ ],
+\ 'ondblclick' : [],
+\ 'dir' : [
+\ 'ltr',
+\ 'rtl'
+\ ],
+\ 'onkeydown' : [],
+\ 'onkeyup' : [],
+\ 'onmouseup' : [],
+\ 'id' : [],
+\ 'onmouseover' : [],
+\ 'lang' : [],
+\ 'style' : [],
+\ 'onmousemove' : [],
+\ 'onmouseout' : [],
+\ 'xml:lang' : [],
+\ 'onmousedown' : [],
+\ 'onkeypress' : [],
+\ 'label' : [],
+\ 'onclick' : [],
+\ 'title' : [],
+\ 'class' : []
+\ }
+\ ]
+\ }
+endfunction
 " vim:set foldmethod=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/autoload/phpcomplete.vim
@@ -0,0 +1,3602 @@
+" Vim completion script
+" Language:	PHP
+" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change:	2006 Mar 5
+"
+"
+"  - outside of <?php?> getting parent tag may cause problems. Heh, even in
+"    perfect conditions GetLastOpenTag doesn't cooperate... Inside of
+"    phpStrings this can be even a bonus but outside of <?php?> it is not the
+"    best situation
+" - Switching to HTML completion (SQL) inside of phpStrings
+
+function! phpcomplete#CompletePHP(findstart, base)
+	if a:findstart
+		unlet! b:php_menu
+		" Check if we are inside of PHP markup
+		let pos = getpos('.')
+		let phpbegin = searchpairpos('<?', '', '?>', 'bWn','synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
+		let phpend = searchpairpos('<?', '', '?>', 'Wn','synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
+		" TODO: deal with opened <? but without closing ?>
+
+		if phpbegin == [0,0] && phpend == [0,0]
+			" We are outside of any PHP markup. Complete HTML
+			let htmlbegin = htmlcomplete#CompleteTags(1, '')
+			let cursor_col = pos[2]
+			let base = getline('.')[htmlbegin : cursor_col]
+			let b:php_menu = htmlcomplete#CompleteTags(0, base)
+			return htmlbegin
+		"elseif phpbegin[0] < pos[1] || phpbegin[0] == pos[1] && phpbegin[1] < pos[2]
+		else
+			
+			" locate the start of the word
+			let line = getline('.')
+			let start = col('.') - 1
+			let curline = line('.')
+			let compl_begin = col('.') - 2
+			while start >= 0 && line[start - 1] =~ '[a-zA-Z_0-9\x7f-\xff$]'
+				let start -= 1
+			endwhile
+			let b:compl_context = getline('.')[0:compl_begin]
+			return start
+
+			" We can be also inside of phpString with HTML tags. Deal with
+			" it later.
+		endif
+	else
+		" If exists b:php_menu it means completion was already constructed we
+		" don't need to do anything more
+		if exists("b:php_menu")
+			return b:php_menu
+		endif
+		" Initialize base return lists
+		let res = []
+		let res2 = []
+		" a:base is very short - we need context
+		if exists("b:compl_context")
+			let context = b:compl_context
+			unlet! b:compl_context
+		endif
+
+		if a:base =~ '^\$'
+			" Complete variables
+			let b:php_builtin_vars = ['$GLOBALS', '$_SERVER', '$_GET', '$_POST', '$_COOKIE', 
+				\ '$_FILES', '$_ENV', '$_REQUEST', '$_SESSION', '$HTTP_SERVER_VARS',
+				\ '$HTTP_ENV_VARS', '$HTTP_COOKIE_VARS', '$HTTP_GET_VARS', '$HTTP_POST_VARS',
+				\ '$HTTP_POST_FILES', '$HTTP_SESSION_VARS', '$php_errormsg'
+				\ ]
+
+			" Internal solution for current file.
+			let file = getline(1, '$')
+			let jfile = join(file, ' ')
+			let int_values = split(jfile, '\ze\$')
+			call map(int_values, 'matchstr(v:val, "^\\$[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*")')
+			"call map(int_values, '"$".v:val')
+			"
+			let int_values += b:php_builtin_vars
+
+			
+			for m in sort(int_values)
+				if m =~ '^'.a:base
+					call add(res, m)
+				elseif m =~ a:base
+					call add(res2, m)
+				endif
+			endfor
+
+			let int_list = res + res2
+
+			let int_dict = []
+			for i in int_list
+				let int_dict += [{'word':i}]
+			endfor
+
+			" ctags has good support for PHP, use tags file for external
+			" variables
+			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+			if fnames != ''
+				let sbase = substitute(a:base, '^\$', '', '')
+				exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
+				let qflist = getqflist()
+				let ext_dict = []
+				for field in qflist
+					" Add space to make more space between 'word' and 'menu'
+					let m_menu = ' '.matchstr(field['text'], '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s\+\zs\f\+\ze')
+					let item = '$'.matchstr(field['text'], '^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
+					
+					let ext_dict += [{'word':item, 'menu':m_menu}]
+				endfor
+			else
+				let ext_dict = []
+			endif
+
+			let b:php_menu = int_dict + ext_dict
+
+		else
+			" Complete everything else - 
+			"  + functions,  DONE
+			"  + keywords of language DONE
+			"  - classes (after new), 
+			"  - defines (constant definitions),
+			if !exists('b:php_builtin_functions')
+				call phpcomplete#LoadData()
+			endif
+
+			" Internal solution for current file.
+			let file = getline(1, '$')
+			call filter(file, 'v:val =~ "function [a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
+			let jfile = join(file, ' ')
+			let int_values = split(jfile, 'function\s\+')
+			let int_functions = {}
+			for i in int_values
+				let f_name = matchstr(i, '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
+				let f_args = matchstr(i, '^&\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)')
+				let int_functions[f_name.'('] = f_args
+			endfor
+
+			" Prepare list from tags file
+			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+				if fnames != ''
+				exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
+				let qflist = getqflist()
+				let ext_funcs = {}
+				for field in qflist
+					" File name
+					let item = matchstr(field['text'], '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
+					let fname = matchstr(field['text'], '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s\+\zs\f\+\ze')
+					let prototype = matchstr(field['text'], 'function\s\+[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*(\zs.\{-}\ze)')
+					let ext_funcs[item.'('] = prototype.' - '.fname
+				endfor
+			else
+				let ext_funcs = {}
+			endif
+
+			" Keywords/reserved words, all other special things {{{
+			" Later it is possible to add some help to values
+			let keywords = {
+				\ 'PHP_SELF':'',
+				\ 'argv':'',
+			    \ 'argc':'',
+				\ 'GATEWAY_INTERFACE':'',
+				\ 'SERVER_ADDR':'',
+				\ 'SERVER_NAME':'',
+				\ 'SERVER_SOFTWARE':'',
+				\ 'SERVER_PROTOCOL':'',
+ 				\ 'REQUEST_METHOD':'',
+				\ 'REQUEST_TIME':'',
+				\ 'QUERY_STRING':'',
+ 				\ 'DOCUMENT_ROOT':'',
+				\ 'HTTP_ACCEPT':'',
+				\ 'HTTP_ACCEPT_CHARSET':'',
+ 				\ 'HTTP_ACCEPT_ENCODING':'',
+				\ 'HTTP_ACCEPT_LANGUAGE':'',
+				\ 'HTTP_CONNECTION':'',
+ 				\ 'HTTP_POST':'',
+				\ 'HTTP_REFERER':'',
+				\ 'HTTP_USER_AGENT':'',
+				\ 'HTTPS':'',
+ 				\ 'REMOTE_ADDR':'',
+				\ 'REMOTE_HOST':'',
+				\ 'REMOTE_PORT':'',
+				\ 'SCRIPT_FILENAME':'',
+ 				\ 'SERVER_ADMIN':'',
+				\ 'SERVER_PORT':'',
+				\ 'SERVER_SIGNATURE':'',
+ 				\ 'PATH_TRANSLATED':'',
+				\ 'SCRIPT_NAME':'',
+				\ 'REQUEST_URI':'',
+				\ 'PHP_AUTH_DIGEST':'',
+ 				\ 'PHP_AUTH_USER':'',
+				\ 'PHP_AUTH_PW':'',
+				\ 'AUTH_TYPE':'',
+				\ 'and':'',
+				\ 'or':'',
+				\ 'xor':'',
+				\ '__FILE__':'',
+				\ 'exception':'',
+				\ '__LINE__':'',
+				\ 'as':'',
+				\ 'break':'',
+				\ 'case':'',
+				\ 'class':'',
+				\ 'const':'',
+				\ 'continue':'',
+				\ 'declare':'',
+				\ 'default':'',
+				\ 'do':'',
+				\ 'else':'',
+				\ 'elseif':'',
+				\ 'enddeclare':'',
+				\ 'endfor':'',
+				\ 'endforeach':'',
+				\ 'endif':'',
+				\ 'endswitch':'',
+				\ 'endwhile':'',
+				\ 'extends':'',
+				\ 'for':'',
+				\ 'foreach':'',
+				\ 'function':'',
+				\ 'global':'',
+				\ 'if':'',
+				\ 'new':'',
+				\ 'static':'',
+				\ 'switch':'',
+				\ 'use':'',
+				\ 'var':'',
+				\ 'while':'',
+				\ '__FUNCTION__':'',
+				\ '__CLASS__':'',
+				\ '__METHOD__':'',
+				\ 'final':'',
+				\ 'php_user_filter':'',
+				\ 'interface':'',
+				\ 'implements':'',
+				\ 'public':'',
+				\ 'private':'',
+				\ 'protected':'',
+				\ 'abstract':'',
+				\ 'clone':'',
+				\ 'try':'',
+				\ 'catch':'',
+				\ 'throw':'',
+				\ 'cfunction':'',
+				\ 'old_function':'',
+				\ 'this':''
+				\ }
+			" }}}
+			
+
+			" One big dictionary
+			call extend(int_functions, b:php_builtin_functions)
+			call extend(int_functions, ext_funcs)
+			call extend(int_functions, keywords)
+			let g:fi = copy(int_functions)
+
+			for m in sort(keys(int_functions))
+				if m =~ '^'.a:base
+					call add(res, m)
+				elseif m =~ a:base
+					call add(res2, m)
+				endif
+			endfor
+
+			let int_list = res + res2
+
+			let other_list = []
+			for i in int_list
+				let other_list += [{'word':i, 'menu':int_functions[i]}]
+			endfor
+
+			let b:php_menu = other_list
+
+		endif
+
+		" Real completion
+		return b:php_menu
+	endif
+endfunction
+
+function! phpcomplete#LoadData() " {{{
+let b:php_builtin_functions =
+\ {'abs(': 'mixed number | number',
+\ 'acos(': 'float arg | float',
+\ 'acosh(': 'float arg | float',
+\ 'addcslashes(': 'string str, string charlist | string',
+\ 'addslashes(': 'string str | string',
+\ 'aggregate(': 'object object, string class_name | void',
+\ 'aggregate_info(': 'object object | array',
+\ 'aggregate_methods(': 'object object, string class_name | void',
+\ 'aggregate_methods_by_list(': 'object object, string class_name, array methods_list [, bool exclude] | void',
+\ 'aggregate_methods_by_regexp(': 'object object, string class_name, string regexp [, bool exclude] | void',
+\ 'aggregate_properties(': 'object object, string class_name | void',
+\ 'aggregate_properties_by_list(': 'object object, string class_name, array properties_list [, bool exclude] | void',
+\ 'aggregate_properties_by_regexp(': 'object object, string class_name, string regexp [, bool exclude] | void',
+\ 'apache_child_terminate(': 'void  | bool',
+\ 'apache_getenv(': 'string variable [, bool walk_to_top] | string',
+\ 'apache_get_modules(': 'void  | array',
+\ 'apache_get_version(': 'void  | string',
+\ 'apache_lookup_uri(': 'string filename | object',
+\ 'apache_note(': 'string note_name [, string note_value] | string',
+\ 'apache_request_headers(': 'void  | array',
+\ 'apache_reset_timeout(': 'void  | bool',
+\ 'apache_response_headers(': 'void  | array',
+\ 'apache_setenv(': 'string variable, string value [, bool walk_to_top] | int',
+\ 'apd_breakpoint(': 'int debug_level | void',
+\ 'apd_callstack(': 'void  | array',
+\ 'apd_clunk(': 'string warning [, string delimiter] | void',
+\ 'apd_continue(': 'int debug_level | void',
+\ 'apd_croak(': 'string warning [, string delimiter] | void',
+\ 'apd_dump_function_table(': 'void  | void',
+\ 'apd_dump_persistent_resources(': 'void  | array',
+\ 'apd_dump_regular_resources(': 'void  | array',
+\ 'apd_echo(': 'string output | void',
+\ 'apd_get_active_symbols(': ' | array',
+\ 'apd_set_pprof_trace(': '[string dump_directory] | void',
+\ 'apd_set_session(': 'int debug_level | void',
+\ 'apd_set_session_trace(': 'int debug_level [, string dump_directory] | void',
+\ 'apd_set_socket_session_trace(': 'string ip_address_or_unix_socket_file, int socket_type, int port, int debug_level | bool',
+\ 'array(': '[mixed ...] | array',
+\ 'array_change_key_case(': 'array input [, int case] | array',
+\ 'array_chunk(': 'array input, int size [, bool preserve_keys] | array',
+\ 'array_combine(': 'array keys, array values | array',
+\ 'array_count_values(': 'array input | array',
+\ 'array_diff(': 'array array1, array array2 [, array ...] | array',
+\ 'array_diff_assoc(': 'array array1, array array2 [, array ...] | array',
+\ 'array_diff_key(': 'array array1, array array2 [, array ...] | array',
+\ 'array_diff_uassoc(': 'array array1, array array2 [, array ..., callback key_compare_func] | array',
+\ 'array_diff_ukey(': 'array array1, array array2 [, array ..., callback key_compare_func] | array',
+\ 'array_fill(': 'int start_index, int num, mixed value | array',
+\ 'array_filter(': 'array input [, callback callback] | array',
+\ 'array_flip(': 'array trans | array',
+\ 'array_intersect(': 'array array1, array array2 [, array ...] | array',
+\ 'array_intersect_assoc(': 'array array1, array array2 [, array ...] | array',
+\ 'array_intersect_key(': 'array array1, array array2 [, array ...] | array',
+\ 'array_intersect_uassoc(': 'array array1, array array2 [, array ..., callback key_compare_func] | array',
+\ 'array_intersect_ukey(': 'array array1, array array2 [, array ..., callback key_compare_func] | array',
+\ 'array_key_exists(': 'mixed key, array search | bool',
+\ 'array_keys(': 'array input [, mixed search_value [, bool strict]] | array',
+\ 'array_map(': 'callback callback, array arr1 [, array ...] | array',
+\ 'array_merge(': 'array array1 [, array array2 [, array ...]] | array',
+\ 'array_merge_recursive(': 'array array1, array array2 [, array ...] | array',
+\ 'array_multisort(': 'array ar1 [, mixed arg [, mixed ... [, array ...]]] | bool',
+\ 'array_pad(': 'array input, int pad_size, mixed pad_value | array',
+\ 'array_pop(': 'array &array | mixed',
+\ 'array_push(': 'array &array, mixed var [, mixed ...] | int',
+\ 'array_rand(': 'array input [, int num_req] | mixed',
+\ 'array_reduce(': 'array input, callback function [, int initial] | mixed',
+\ 'array_reverse(': 'array array [, bool preserve_keys] | array',
+\ 'array_search(': 'mixed needle, array haystack [, bool strict] | mixed',
+\ 'array_shift(': 'array &array | mixed',
+\ 'array_slice(': 'array array, int offset [, int length [, bool preserve_keys]] | array',
+\ 'array_splice(': 'array &input, int offset [, int length [, array replacement]] | array',
+\ 'array_sum(': 'array array | number',
+\ 'array_udiff(': 'array array1, array array2 [, array ..., callback data_compare_func] | array',
+\ 'array_udiff_assoc(': 'array array1, array array2 [, array ..., callback data_compare_func] | array',
+\ 'array_udiff_uassoc(': 'array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func] | array',
+\ 'array_uintersect(': 'array array1, array array2 [, array ..., callback data_compare_func] | array',
+\ 'array_uintersect_assoc(': 'array array1, array array2 [, array ..., callback data_compare_func] | array',
+\ 'array_uintersect_uassoc(': 'array array1, array array2 [, array ..., callback data_compare_func, callback key_compare_func] | array',
+\ 'array_unique(': 'array array | array',
+\ 'array_unshift(': 'array &array, mixed var [, mixed ...] | int',
+\ 'array_values(': 'array input | array',
+\ 'array_walk(': 'array &array, callback funcname [, mixed userdata] | bool',
+\ 'array_walk_recursive(': 'array &input, callback funcname [, mixed userdata] | bool',
+\ 'arsort(': 'array &array [, int sort_flags] | bool',
+\ 'ascii2ebcdic(': 'string ascii_str | int',
+\ 'asin(': 'float arg | float',
+\ 'asinh(': 'float arg | float',
+\ 'asort(': 'array &array [, int sort_flags] | bool',
+\ 'aspell_check(': 'int dictionary_link, string word | bool',
+\ 'aspell_check_raw(': 'int dictionary_link, string word | bool',
+\ 'aspell_new(': 'string master [, string personal] | int',
+\ 'aspell_suggest(': 'int dictionary_link, string word | array',
+\ 'assert(': 'mixed assertion | int',
+\ 'assert_options(': 'int what [, mixed value] | mixed',
+\ 'atan(': 'float arg | float',
+\ 'atan2(': 'float y, float x | float',
+\ 'atanh(': 'float arg | float',
+\ 'base64_decode(': 'string encoded_data | string',
+\ 'base64_encode(': 'string data | string',
+\ 'base_convert(': 'string number, int frombase, int tobase | string',
+\ 'basename(': 'string path [, string suffix] | string',
+\ 'bcadd(': 'string left_operand, string right_operand [, int scale] | string',
+\ 'bccomp(': 'string left_operand, string right_operand [, int scale] | int',
+\ 'bcdiv(': 'string left_operand, string right_operand [, int scale] | string',
+\ 'bcmod(': 'string left_operand, string modulus | string',
+\ 'bcmul(': 'string left_operand, string right_operand [, int scale] | string',
+\ 'bcompiler_load(': 'string filename | bool',
+\ 'bcompiler_load_exe(': 'string filename | bool',
+\ 'bcompiler_parse_class(': 'string class, string callback | bool',
+\ 'bcompiler_read(': 'resource filehandle | bool',
+\ 'bcompiler_write_class(': 'resource filehandle, string className [, string extends] | bool',
+\ 'bcompiler_write_constant(': 'resource filehandle, string constantName | bool',
+\ 'bcompiler_write_exe_footer(': 'resource filehandle, int startpos | bool',
+\ 'bcompiler_write_file(': 'resource filehandle, string filename | bool',
+\ 'bcompiler_write_footer(': 'resource filehandle | bool',
+\ 'bcompiler_write_function(': 'resource filehandle, string functionName | bool',
+\ 'bcompiler_write_functions_from_file(': 'resource filehandle, string fileName | bool',
+\ 'bcompiler_write_header(': 'resource filehandle [, string write_ver] | bool',
+\ 'bcpow(': 'string x, string y [, int scale] | string',
+\ 'bcpowmod(': 'string x, string y, string modulus [, int scale] | string',
+\ 'bcscale(': 'int scale | bool',
+\ 'bcsqrt(': 'string operand [, int scale] | string',
+\ 'bcsub(': 'string left_operand, string right_operand [, int scale] | string',
+\ 'bin2hex(': 'string str | string',
+\ 'bindec(': 'string binary_string | number',
+\ 'bindtextdomain(': 'string domain, string directory | string',
+\ 'bind_textdomain_codeset(': 'string domain, string codeset | string',
+\ 'bzclose(': 'resource bz | int',
+\ 'bzcompress(': 'string source [, int blocksize [, int workfactor]] | string',
+\ 'bzdecompress(': 'string source [, int small] | string',
+\ 'bzerrno(': 'resource bz | int',
+\ 'bzerror(': 'resource bz | array',
+\ 'bzerrstr(': 'resource bz | string',
+\ 'bzflush(': 'resource bz | int',
+\ 'bzopen(': 'string filename, string mode | resource',
+\ 'bzread(': 'resource bz [, int length] | string',
+\ 'bzwrite(': 'resource bz, string data [, int length] | int',
+\ 'cal_days_in_month(': 'int calendar, int month, int year | int',
+\ 'cal_from_jd(': 'int jd, int calendar | array',
+\ 'cal_info(': '[int calendar] | array',
+\ 'call_user_func(': 'callback function [, mixed parameter [, mixed ...]] | mixed',
+\ 'call_user_func_array(': 'callback function, array param_arr | mixed',
+\ 'call_user_method(': 'string method_name, object &obj [, mixed parameter [, mixed ...]] | mixed',
+\ 'call_user_method_array(': 'string method_name, object &obj, array paramarr | mixed',
+\ 'cal_to_jd(': 'int calendar, int month, int day, int year | int',
+\ 'ccvs_add(': 'string session, string invoice, string argtype, string argval | string',
+\ 'ccvs_auth(': 'string session, string invoice | string',
+\ 'ccvs_command(': 'string session, string type, string argval | string',
+\ 'ccvs_count(': 'string session, string type | int',
+\ 'ccvs_delete(': 'string session, string invoice | string',
+\ 'ccvs_done(': 'string sess | string',
+\ 'ccvs_init(': 'string name | string',
+\ 'ccvs_lookup(': 'string session, string invoice, int inum | string',
+\ 'ccvs_new(': 'string session, string invoice | string',
+\ 'ccvs_report(': 'string session, string type | string',
+\ 'ccvs_return(': 'string session, string invoice | string',
+\ 'ccvs_reverse(': 'string session, string invoice | string',
+\ 'ccvs_sale(': 'string session, string invoice | string',
+\ 'ccvs_status(': 'string session, string invoice | string',
+\ 'ccvs_textvalue(': 'string session | string',
+\ 'ccvs_void(': 'string session, string invoice | string',
+\ 'ceil(': 'float value | float',
+\ 'chdir(': 'string directory | bool',
+\ 'checkdate(': 'int month, int day, int year | bool',
+\ 'checkdnsrr(': 'string host [, string type] | int',
+\ 'chgrp(': 'string filename, mixed group | bool',
+\ 'chmod(': 'string filename, int mode | bool',
+\ 'chown(': 'string filename, mixed user | bool',
+\ 'chr(': 'int ascii | string',
+\ 'chroot(': 'string directory | bool',
+\ 'chunk_split(': 'string body [, int chunklen [, string end]] | string',
+\ 'class_exists(': 'string class_name [, bool autoload] | bool',
+\ 'class_implements(': 'object class | array',
+\ 'classkit_import(': 'string filename | array',
+\ 'classkit_method_add(': 'string classname, string methodname, string args, string code [, int flags] | bool',
+\ 'classkit_method_copy(': 'string dClass, string dMethod, string sClass [, string sMethod] | bool',
+\ 'classkit_method_redefine(': 'string classname, string methodname, string args, string code [, int flags] | bool',
+\ 'classkit_method_remove(': 'string classname, string methodname | bool',
+\ 'classkit_method_rename(': 'string classname, string methodname, string newname | bool',
+\ 'class_parents(': 'object class | array',
+\ 'clearstatcache(': 'void  | void',
+\ 'closedir(': 'resource dir_handle | void',
+\ 'closelog(': 'void  | int',
+\ 'com_addref(': 'void  | void',
+\ 'com_create_guid(': 'void  | string',
+\ 'com_event_sink(': 'variant comobject, object sinkobject [, mixed sinkinterface] | bool',
+\ 'com_get(': 'resource com_object, string property | mixed',
+\ 'com_get_active_object(': 'string progid [, int code_page] | variant',
+\ 'com_invoke(': 'resource com_object, string function_name [, mixed function_parameters] | mixed',
+\ 'com_isenum(': 'variant com_module | bool',
+\ 'com_load(': 'string module_name [, string server_name [, int codepage]] | resource',
+\ 'com_load_typelib(': 'string typelib_name [, bool case_insensitive] | bool',
+\ 'com_message_pump(': '[int timeoutms] | bool',
+\ 'compact(': 'mixed varname [, mixed ...] | array',
+\ 'com_print_typeinfo(': 'object comobject [, string dispinterface [, bool wantsink]] | bool',
+\ 'com_release(': 'void  | void',
+\ 'com_set(': 'resource com_object, string property, mixed value | void',
+\ 'connection_aborted(': 'void  | int',
+\ 'connection_status(': 'void  | int',
+\ 'connection_timeout(': 'void  | bool',
+\ 'constant(': 'string name | mixed',
+\ 'convert_cyr_string(': 'string str, string from, string to | string',
+\ 'convert_uudecode(': 'string data | string',
+\ 'convert_uuencode(': 'string data | string',
+\ 'copy(': 'string source, string dest | bool',
+\ 'cos(': 'float arg | float',
+\ 'cosh(': 'float arg | float',
+\ 'count(': 'mixed var [, int mode] | int',
+\ 'count_chars(': 'string string [, int mode] | mixed',
+\ 'cpdf_add_annotation(': 'int pdf_document, float llx, float lly, float urx, float ury, string title, string content [, int mode] | bool',
+\ 'cpdf_add_outline(': 'int pdf_document, int lastoutline, int sublevel, int open, int pagenr, string text | int',
+\ 'cpdf_arc(': 'int pdf_document, float x_coor, float y_coor, float radius, float start, float end [, int mode] | bool',
+\ 'cpdf_begin_text(': 'int pdf_document | bool',
+\ 'cpdf_circle(': 'int pdf_document, float x_coor, float y_coor, float radius [, int mode] | bool',
+\ 'cpdf_clip(': 'int pdf_document | bool',
+\ 'cpdf_close(': 'int pdf_document | bool',
+\ 'cpdf_closepath(': 'int pdf_document | bool',
+\ 'cpdf_closepath_fill_stroke(': 'int pdf_document | bool',
+\ 'cpdf_closepath_stroke(': 'int pdf_document | bool',
+\ 'cpdf_continue_text(': 'int pdf_document, string text | bool',
+\ 'cpdf_curveto(': 'int pdf_document, float x1, float y1, float x2, float y2, float x3, float y3 [, int mode] | bool',
+\ 'cpdf_end_text(': 'int pdf_document | bool',
+\ 'cpdf_fill(': 'int pdf_document | bool',
+\ 'cpdf_fill_stroke(': 'int pdf_document | bool',
+\ 'cpdf_finalize(': 'int pdf_document | bool',
+\ 'cpdf_finalize_page(': 'int pdf_document, int page_number | bool',
+\ 'cpdf_global_set_document_limits(': 'int maxpages, int maxfonts, int maximages, int maxannotations, int maxobjects | bool',
+\ 'cpdf_import_jpeg(': 'int pdf_document, string file_name, float x_coor, float y_coor, float angle, float width, float height, float x_scale, float y_scale, int gsave [, int mode] | int',
+\ 'cpdf_lineto(': 'int pdf_document, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_moveto(': 'int pdf_document, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_newpath(': 'int pdf_document | bool',
+\ 'cpdf_open(': 'int compression [, string filename [, array doc_limits]] | int',
+\ 'cpdf_output_buffer(': 'int pdf_document | bool',
+\ 'cpdf_page_init(': 'int pdf_document, int page_number, int orientation, float height, float width [, float unit] | bool',
+\ 'cpdf_place_inline_image(': 'int pdf_document, int image, float x_coor, float y_coor, float angle, float width, float height, int gsave [, int mode] | bool',
+\ 'cpdf_rect(': 'int pdf_document, float x_coor, float y_coor, float width, float height [, int mode] | bool',
+\ 'cpdf_restore(': 'int pdf_document | bool',
+\ 'cpdf_rlineto(': 'int pdf_document, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_rmoveto(': 'int pdf_document, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_rotate(': 'int pdf_document, float angle | bool',
+\ 'cpdf_rotate_text(': 'int pdfdoc, float angle | bool',
+\ 'cpdf_save(': 'int pdf_document | bool',
+\ 'cpdf_save_to_file(': 'int pdf_document, string filename | bool',
+\ 'cpdf_scale(': 'int pdf_document, float x_scale, float y_scale | bool',
+\ 'cpdf_set_action_url(': 'int pdfdoc, float xll, float yll, float xur, float xur, string url [, int mode] | bool',
+\ 'cpdf_set_char_spacing(': 'int pdf_document, float space | bool',
+\ 'cpdf_set_creator(': 'int pdf_document, string creator | bool',
+\ 'cpdf_set_current_page(': 'int pdf_document, int page_number | bool',
+\ 'cpdf_setdash(': 'int pdf_document, float white, float black | bool',
+\ 'cpdf_setflat(': 'int pdf_document, float value | bool',
+\ 'cpdf_set_font(': 'int pdf_document, string font_name, float size, string encoding | bool',
+\ 'cpdf_set_font_directories(': 'int pdfdoc, string pfmdir, string pfbdir | bool',
+\ 'cpdf_set_font_map_file(': 'int pdfdoc, string filename | bool',
+\ 'cpdf_setgray(': 'int pdf_document, float gray_value | bool',
+\ 'cpdf_setgray_fill(': 'int pdf_document, float value | bool',
+\ 'cpdf_setgray_stroke(': 'int pdf_document, float gray_value | bool',
+\ 'cpdf_set_horiz_scaling(': 'int pdf_document, float scale | bool',
+\ 'cpdf_set_keywords(': 'int pdf_document, string keywords | bool',
+\ 'cpdf_set_leading(': 'int pdf_document, float distance | bool',
+\ 'cpdf_setlinecap(': 'int pdf_document, int value | bool',
+\ 'cpdf_setlinejoin(': 'int pdf_document, int value | bool',
+\ 'cpdf_setlinewidth(': 'int pdf_document, float width | bool',
+\ 'cpdf_setmiterlimit(': 'int pdf_document, float value | bool',
+\ 'cpdf_set_page_animation(': 'int pdf_document, int transition, float duration, float direction, int orientation, int inout | bool',
+\ 'cpdf_setrgbcolor(': 'int pdf_document, float red_value, float green_value, float blue_value | bool',
+\ 'cpdf_setrgbcolor_fill(': 'int pdf_document, float red_value, float green_value, float blue_value | bool',
+\ 'cpdf_setrgbcolor_stroke(': 'int pdf_document, float red_value, float green_value, float blue_value | bool',
+\ 'cpdf_set_subject(': 'int pdf_document, string subject | bool',
+\ 'cpdf_set_text_matrix(': 'int pdf_document, array matrix | bool',
+\ 'cpdf_set_text_pos(': 'int pdf_document, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_set_text_rendering(': 'int pdf_document, int rendermode | bool',
+\ 'cpdf_set_text_rise(': 'int pdf_document, float value | bool',
+\ 'cpdf_set_title(': 'int pdf_document, string title | bool',
+\ 'cpdf_set_viewer_preferences(': 'int pdfdoc, array preferences | bool',
+\ 'cpdf_set_word_spacing(': 'int pdf_document, float space | bool',
+\ 'cpdf_show(': 'int pdf_document, string text | bool',
+\ 'cpdf_show_xy(': 'int pdf_document, string text, float x_coor, float y_coor [, int mode] | bool',
+\ 'cpdf_stringwidth(': 'int pdf_document, string text | float',
+\ 'cpdf_stroke(': 'int pdf_document | bool',
+\ 'cpdf_text(': 'int pdf_document, string text [, float x_coor, float y_coor [, int mode [, float orientation [, int alignmode]]]] | bool',
+\ 'cpdf_translate(': 'int pdf_document, float x_coor, float y_coor | bool',
+\ 'crack_check(': 'resource dictionary, string password | bool',
+\ 'crack_closedict(': '[resource dictionary] | bool',
+\ 'crack_getlastmessage(': 'void  | string',
+\ 'crack_opendict(': 'string dictionary | resource',
+\ 'crc32(': 'string str | int',
+\ 'create_function(': 'string args, string code | string',
+\ 'crypt(': 'string str [, string salt] | string',
+\ 'ctype_alnum(': 'string text | bool',
+\ 'ctype_alpha(': 'string text | bool',
+\ 'ctype_cntrl(': 'string text | bool',
+\ 'ctype_digit(': 'string text | bool',
+\ 'ctype_graph(': 'string text | bool',
+\ 'ctype_lower(': 'string text | bool',
+\ 'ctype_print(': 'string text | bool',
+\ 'ctype_punct(': 'string text | bool',
+\ 'ctype_space(': 'string text | bool',
+\ 'ctype_upper(': 'string text | bool',
+\ 'ctype_xdigit(': 'string text | bool',
+\ 'curl_close(': 'resource ch | void',
+\ 'curl_copy_handle(': 'resource ch | resource',
+\ 'curl_errno(': 'resource ch | int',
+\ 'curl_error(': 'resource ch | string',
+\ 'curl_exec(': 'resource ch | mixed',
+\ 'curl_getinfo(': 'resource ch [, int opt] | string',
+\ 'curl_init(': '[string url] | resource',
+\ 'curl_multi_add_handle(': 'resource mh, resource ch | int',
+\ 'curl_multi_close(': 'resource mh | void',
+\ 'curl_multi_exec(': 'resource mh, int &still_running | int',
+\ 'curl_multi_getcontent(': 'resource ch | string',
+\ 'curl_multi_info_read(': 'resource mh | array',
+\ 'curl_multi_init(': 'void  | resource',
+\ 'curl_multi_remove_handle(': 'resource mh, resource ch | int',
+\ 'curl_multi_select(': 'resource mh [, float timeout] | int',
+\ 'curl_setopt(': 'resource ch, int option, mixed value | bool',
+\ 'curl_version(': '[int version] | string',
+\ 'current(': 'array &array | mixed',
+\ 'cybercash_base64_decode(': 'string inbuff | string',
+\ 'cybercash_base64_encode(': 'string inbuff | string',
+\ 'cybercash_decr(': 'string wmk, string sk, string inbuff | array',
+\ 'cybercash_encr(': 'string wmk, string sk, string inbuff | array',
+\ 'cyrus_authenticate(': 'resource connection [, string mechlist [, string service [, string user [, int minssf [, int maxssf [, string authname [, string password]]]]]]] | bool',
+\ 'cyrus_bind(': 'resource connection, array callbacks | bool',
+\ 'cyrus_close(': 'resource connection | bool',
+\ 'cyrus_connect(': '[string host [, string port [, int flags]]] | resource',
+\ 'cyrus_query(': 'resource connection, string query | bool',
+\ 'cyrus_unbind(': 'resource connection, string trigger_name | bool',
+\ 'date(': 'string format [, int timestamp] | string',
+\ 'date_sunrise(': 'int timestamp [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]] | mixed',
+\ 'date_sunset(': 'int timestamp [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]] | mixed',
+\ 'dba_close(': 'resource handle | void',
+\ 'dba_delete(': 'string key, resource handle | bool',
+\ 'dba_exists(': 'string key, resource handle | bool',
+\ 'dba_fetch(': 'string key, resource handle | string',
+\ 'dba_firstkey(': 'resource handle | string',
+\ 'dba_handlers(': '[bool full_info] | array',
+\ 'dba_insert(': 'string key, string value, resource handle | bool',
+\ 'dba_key_split(': 'mixed key | mixed',
+\ 'dba_list(': 'void  | array',
+\ 'dba_nextkey(': 'resource handle | string',
+\ 'dba_open(': 'string path, string mode, string handler [, ...] | resource',
+\ 'dba_optimize(': 'resource handle | bool',
+\ 'dba_popen(': 'string path, string mode, string handler [, ...] | resource',
+\ 'dba_replace(': 'string key, string value, resource handle | bool',
+\ 'dbase_add_record(': 'int dbase_identifier, array record | bool',
+\ 'dbase_close(': 'int dbase_identifier | bool',
+\ 'dbase_create(': 'string filename, array fields | int',
+\ 'dbase_delete_record(': 'int dbase_identifier, int record_number | bool',
+\ 'dbase_get_header_info(': 'int dbase_identifier | array',
+\ 'dbase_get_record(': 'int dbase_identifier, int record_number | array',
+\ 'dbase_get_record_with_names(': 'int dbase_identifier, int record_number | array',
+\ 'dbase_numfields(': 'int dbase_identifier | int',
+\ 'dbase_numrecords(': 'int dbase_identifier | int',
+\ 'dbase_open(': 'string filename, int mode | int',
+\ 'dbase_pack(': 'int dbase_identifier | bool',
+\ 'dbase_replace_record(': 'int dbase_identifier, array record, int record_number | bool',
+\ 'dba_sync(': 'resource handle | bool',
+\ 'dblist(': 'void  | string',
+\ 'dbmclose(': 'resource dbm_identifier | bool',
+\ 'dbmdelete(': 'resource dbm_identifier, string key | bool',
+\ 'dbmexists(': 'resource dbm_identifier, string key | bool',
+\ 'dbmfetch(': 'resource dbm_identifier, string key | string',
+\ 'dbmfirstkey(': 'resource dbm_identifier | string',
+\ 'dbminsert(': 'resource dbm_identifier, string key, string value | int',
+\ 'dbmnextkey(': 'resource dbm_identifier, string key | string',
+\ 'dbmopen(': 'string filename, string flags | resource',
+\ 'dbmreplace(': 'resource dbm_identifier, string key, string value | int',
+\ 'dbplus_add(': 'resource relation, array tuple | int',
+\ 'dbplus_aql(': 'string query [, string server [, string dbpath]] | resource',
+\ 'dbplus_chdir(': '[string newdir] | string',
+\ 'dbplus_close(': 'resource relation | int',
+\ 'dbplus_curr(': 'resource relation, array &tuple | int',
+\ 'dbplus_errcode(': '[int errno] | string',
+\ 'dbplus_errno(': 'void  | int',
+\ 'dbplus_find(': 'resource relation, array constraints, mixed tuple | int',
+\ 'dbplus_first(': 'resource relation, array &tuple | int',
+\ 'dbplus_flush(': 'resource relation | int',
+\ 'dbplus_freealllocks(': 'void  | int',
+\ 'dbplus_freelock(': 'resource relation, string tname | int',
+\ 'dbplus_freerlocks(': 'resource relation | int',
+\ 'dbplus_getlock(': 'resource relation, string tname | int',
+\ 'dbplus_getunique(': 'resource relation, int uniqueid | int',
+\ 'dbplus_info(': 'resource relation, string key, array &result | int',
+\ 'dbplus_last(': 'resource relation, array &tuple | int',
+\ 'dbplus_lockrel(': 'resource relation | int',
+\ 'dbplus_next(': 'resource relation, array &tuple | int',
+\ 'dbplus_open(': 'string name | resource',
+\ 'dbplus_prev(': 'resource relation, array &tuple | int',
+\ 'dbplus_rchperm(': 'resource relation, int mask, string user, string group | int',
+\ 'dbplus_rcreate(': 'string name, mixed domlist [, bool overwrite] | resource',
+\ 'dbplus_rcrtexact(': 'string name, resource relation [, bool overwrite] | resource',
+\ 'dbplus_rcrtlike(': 'string name, resource relation [, int overwrite] | resource',
+\ 'dbplus_resolve(': 'string relation_name | int',
+\ 'dbplus_restorepos(': 'resource relation, array tuple | int',
+\ 'dbplus_rkeys(': 'resource relation, mixed domlist | resource',
+\ 'dbplus_ropen(': 'string name | resource',
+\ 'dbplus_rquery(': 'string query [, string dbpath] | int',
+\ 'dbplus_rrename(': 'resource relation, string name | int',
+\ 'dbplus_rsecindex(': 'resource relation, mixed domlist, int type | resource',
+\ 'dbplus_runlink(': 'resource relation | int',
+\ 'dbplus_rzap(': 'resource relation | int',
+\ 'dbplus_savepos(': 'resource relation | int',
+\ 'dbplus_setindex(': 'resource relation, string idx_name | int',
+\ 'dbplus_setindexbynumber(': 'resource relation, int idx_number | int',
+\ 'dbplus_sql(': 'string query [, string server [, string dbpath]] | resource',
+\ 'dbplus_tcl(': 'int sid, string script | int',
+\ 'dbplus_tremove(': 'resource relation, array tuple [, array &current] | int',
+\ 'dbplus_undo(': 'resource relation | int',
+\ 'dbplus_undoprepare(': 'resource relation | int',
+\ 'dbplus_unlockrel(': 'resource relation | int',
+\ 'dbplus_unselect(': 'resource relation | int',
+\ 'dbplus_update(': 'resource relation, array old, array new | int',
+\ 'dbplus_xlockrel(': 'resource relation | int',
+\ 'dbplus_xunlockrel(': 'resource relation | int',
+\ 'dbx_close(': 'object link_identifier | bool',
+\ 'dbx_compare(': 'array row_a, array row_b, string column_key [, int flags] | int',
+\ 'dbx_connect(': 'mixed module, string host, string database, string username, string password [, int persistent] | object',
+\ 'dbx_error(': 'object link_identifier | string',
+\ 'dbx_escape_string(': 'object link_identifier, string text | string',
+\ 'dbx_fetch_row(': 'object result_identifier | object',
+\ 'dbx_query(': 'object link_identifier, string sql_statement [, int flags] | object',
+\ 'dbx_sort(': 'object result, string user_compare_function | bool',
+\ 'dcgettext(': 'string domain, string message, int category | string',
+\ 'dcngettext(': 'string domain, string msgid1, string msgid2, int n, int category | string',
+\ 'deaggregate(': 'object object [, string class_name] | void',
+\ 'debug_backtrace(': 'void  | array',
+\ 'debugger_off(': 'void  | int',
+\ 'debugger_on(': 'string address | int',
+\ 'debug_print_backtrace(': 'void  | void',
+\ 'debug_zval_dump(': 'mixed variable | void',
+\ 'decbin(': 'int number | string',
+\ 'dechex(': 'int number | string',
+\ 'decoct(': 'int number | string',
+\ 'define(': 'string name, mixed value [, bool case_insensitive] | bool',
+\ 'defined(': 'string name | bool',
+\ 'define_syslog_variables(': 'void  | void',
+\ 'deg2rad(': 'float number | float',
+\ 'delete(': 'string file | void',
+\ 'dgettext(': 'string domain, string message | string',
+\ 'dio_close(': 'resource fd | void',
+\ 'dio_fcntl(': 'resource fd, int cmd [, mixed args] | mixed',
+\ 'dio_open(': 'string filename, int flags [, int mode] | resource',
+\ 'dio_read(': 'resource fd [, int n] | string',
+\ 'dio_seek(': 'resource fd, int pos [, int whence] | int',
+\ 'dio_stat(': 'resource fd | array',
+\ 'dio_tcsetattr(': 'resource fd, array options | void',
+\ 'dio_truncate(': 'resource fd, int offset | bool',
+\ 'dio_write(': 'resource fd, string data [, int len] | int',
+\ 'dirname(': 'string path | string',
+\ 'disk_free_space(': 'string directory | float',
+\ 'disk_total_space(': 'string directory | float',
+\ 'dl(': 'string library | int',
+\ 'dngettext(': 'string domain, string msgid1, string msgid2, int n | string',
+\ 'dns_check_record(': 'string host [, string type] | int',
+\ 'dns_get_mx(': 'string hostname, array &mxhosts [, array &weight] | int',
+\ 'dns_get_record(': 'string hostname [, int type [, array &authns, array &addtl]] | array',
+\ 'dom_import_simplexml(': 'SimpleXMLElement node | DOMElement',
+\ 'domxml_new_doc(': 'string version | domdocument',
+\ 'domxml_open_file(': 'string filename [, int mode [, array &error]] | domdocument',
+\ 'domxml_open_mem(': 'string str [, int mode [, array &error]] | domdocument',
+\ 'domxml_version(': 'void  | string',
+\ 'domxml_xmltree(': 'string str | domdocument',
+\ 'domxml_xslt_stylesheet(': 'string xsl_document | XsltStylesheet',
+\ 'domxml_xslt_stylesheet_doc(': 'domdocument DocDocumentObject | XsltStylesheet',
+\ 'domxml_xslt_stylesheet_file(': 'string xsl_file | XsltStylesheet',
+\ 'dotnet_load(': 'string assembly_name [, string datatype_name [, int codepage]] | int',
+\ 'each(': 'array &array | array',
+\ 'easter_date(': '[int year] | int',
+\ 'easter_days(': '[int year [, int method]] | int',
+\ 'ebcdic2ascii(': 'string ebcdic_str | int',
+\ 'echo(': 'string arg1 [, string ...] | void',
+\ 'empty(': 'mixed var | bool',
+\ 'end(': 'array &array | mixed',
+\ 'ereg(': 'string pattern, string string [, array &regs] | int',
+\ 'eregi(': 'string pattern, string string [, array &regs] | int',
+\ 'eregi_replace(': 'string pattern, string replacement, string string | string',
+\ 'ereg_replace(': 'string pattern, string replacement, string string | string',
+\ 'error_log(': 'string message [, int message_type [, string destination [, string extra_headers]]] | int',
+\ 'error_reporting(': '[int level] | int',
+\ 'escapeshellarg(': 'string arg | string',
+\ 'escapeshellcmd(': 'string command | string',
+\ 'eval(': 'string code_str | mixed',
+\ 'exec(': 'string command [, array &output [, int &return_var]] | string',
+\ 'exif_imagetype(': 'string filename | int',
+\ 'exif_read_data(': 'string filename [, string sections [, bool arrays [, bool thumbnail]]] | array',
+\ 'exif_tagname(': 'string index | string',
+\ 'exif_thumbnail(': 'string filename [, int &width [, int &height [, int &imagetype]]] | string',
+\ 'exit(': '[string status] | void',
+\ 'exp(': 'float arg | float',
+\ 'explode(': 'string separator, string string [, int limit] | array',
+\ 'expm1(': 'float number | float',
+\ 'extension_loaded(': 'string name | bool',
+\ 'extract(': 'array var_array [, int extract_type [, string prefix]] | int',
+\ 'ezmlm_hash(': 'string addr | int',
+\ 'fam_cancel_monitor(': 'resource fam, resource fam_monitor | bool',
+\ 'fam_close(': 'resource fam | void',
+\ 'fam_monitor_collection(': 'resource fam, string dirname, int depth, string mask | resource',
+\ 'fam_monitor_directory(': 'resource fam, string dirname | resource',
+\ 'fam_monitor_file(': 'resource fam, string filename | resource',
+\ 'fam_next_event(': 'resource fam | array',
+\ 'fam_open(': '[string appname] | resource',
+\ 'fam_pending(': 'resource fam | bool',
+\ 'fam_resume_monitor(': 'resource fam, resource fam_monitor | bool',
+\ 'fam_suspend_monitor(': 'resource fam, resource fam_monitor | bool',
+\ 'fbsql_affected_rows(': '[resource link_identifier] | int',
+\ 'fbsql_autocommit(': 'resource link_identifier [, bool OnOff] | bool',
+\ 'fbsql_blob_size(': 'string blob_handle [, resource link_identifier] | int',
+\ 'fbsql_change_user(': 'string user, string password [, string database [, resource link_identifier]] | resource',
+\ 'fbsql_clob_size(': 'string clob_handle [, resource link_identifier] | int',
+\ 'fbsql_close(': '[resource link_identifier] | bool',
+\ 'fbsql_commit(': '[resource link_identifier] | bool',
+\ 'fbsql_connect(': '[string hostname [, string username [, string password]]] | resource',
+\ 'fbsql_create_blob(': 'string blob_data [, resource link_identifier] | string',
+\ 'fbsql_create_clob(': 'string clob_data [, resource link_identifier] | string',
+\ 'fbsql_create_db(': 'string database_name [, resource link_identifier [, string database_options]] | bool',
+\ 'fbsql_database(': 'resource link_identifier [, string database] | string',
+\ 'fbsql_database_password(': 'resource link_identifier [, string database_password] | string',
+\ 'fbsql_data_seek(': 'resource result_identifier, int row_number | bool',
+\ 'fbsql_db_query(': 'string database, string query [, resource link_identifier] | resource',
+\ 'fbsql_db_status(': 'string database_name [, resource link_identifier] | int',
+\ 'fbsql_drop_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'fbsql_errno(': '[resource link_identifier] | int',
+\ 'fbsql_error(': '[resource link_identifier] | string',
+\ 'fbsql_fetch_array(': 'resource result [, int result_type] | array',
+\ 'fbsql_fetch_assoc(': 'resource result | array',
+\ 'fbsql_fetch_field(': 'resource result [, int field_offset] | object',
+\ 'fbsql_fetch_lengths(': 'resource result | array',
+\ 'fbsql_fetch_object(': 'resource result [, int result_type] | object',
+\ 'fbsql_fetch_row(': 'resource result | array',
+\ 'fbsql_field_flags(': 'resource result [, int field_offset] | string',
+\ 'fbsql_field_len(': 'resource result [, int field_offset] | int',
+\ 'fbsql_field_name(': 'resource result [, int field_index] | string',
+\ 'fbsql_field_seek(': 'resource result [, int field_offset] | bool',
+\ 'fbsql_field_table(': 'resource result [, int field_offset] | string',
+\ 'fbsql_field_type(': 'resource result [, int field_offset] | string',
+\ 'fbsql_free_result(': 'resource result | bool',
+\ 'fbsql_get_autostart_info(': '[resource link_identifier] | array',
+\ 'fbsql_hostname(': 'resource link_identifier [, string host_name] | string',
+\ 'fbsql_insert_id(': '[resource link_identifier] | int',
+\ 'fbsql_list_dbs(': '[resource link_identifier] | resource',
+\ 'fbsql_list_fields(': 'string database_name, string table_name [, resource link_identifier] | resource',
+\ 'fbsql_list_tables(': 'string database [, resource link_identifier] | resource',
+\ 'fbsql_next_result(': 'resource result_id | bool',
+\ 'fbsql_num_fields(': 'resource result | int',
+\ 'fbsql_num_rows(': 'resource result | int',
+\ 'fbsql_password(': 'resource link_identifier [, string password] | string',
+\ 'fbsql_pconnect(': '[string hostname [, string username [, string password]]] | resource',
+\ 'fbsql_query(': 'string query [, resource link_identifier [, int batch_size]] | resource',
+\ 'fbsql_read_blob(': 'string blob_handle [, resource link_identifier] | string',
+\ 'fbsql_read_clob(': 'string clob_handle [, resource link_identifier] | string',
+\ 'fbsql_result(': 'resource result [, int row [, mixed field]] | mixed',
+\ 'fbsql_rollback(': '[resource link_identifier] | bool',
+\ 'fbsql_select_db(': '[string database_name [, resource link_identifier]] | bool',
+\ 'fbsql_set_lob_mode(': 'resource result, string database_name | bool',
+\ 'fbsql_set_password(': 'resource link_identifier, string user, string password, string old_password | bool',
+\ 'fbsql_set_transaction(': 'resource link_identifier, int Locking, int Isolation | void',
+\ 'fbsql_start_db(': 'string database_name [, resource link_identifier [, string database_options]] | bool',
+\ 'fbsql_stop_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'fbsql_tablename(': 'resource result, int i | string',
+\ 'fbsql_username(': 'resource link_identifier [, string username] | string',
+\ 'fbsql_warnings(': '[bool OnOff] | bool',
+\ 'fclose(': 'resource handle | bool',
+\ 'fdf_add_doc_javascript(': 'resource fdfdoc, string script_name, string script_code | bool',
+\ 'fdf_add_template(': 'resource fdfdoc, int newpage, string filename, string template, int rename | bool',
+\ 'fdf_close(': 'resource fdf_document | bool',
+\ 'fdf_create(': 'void  | resource',
+\ 'fdf_enum_values(': 'resource fdfdoc, callback function [, mixed userdata] | bool',
+\ 'fdf_errno(': 'void  | int',
+\ 'fdf_error(': '[int error_code] | string',
+\ 'fdf_get_ap(': 'resource fdf_document, string field, int face, string filename | bool',
+\ 'fdf_get_attachment(': 'resource fdf_document, string fieldname, string savepath | array',
+\ 'fdf_get_encoding(': 'resource fdf_document | string',
+\ 'fdf_get_file(': 'resource fdf_document | string',
+\ 'fdf_get_flags(': 'resource fdfdoc, string fieldname, int whichflags | int',
+\ 'fdf_get_opt(': 'resource fdfdof, string fieldname [, int element] | mixed',
+\ 'fdf_get_status(': 'resource fdf_document | string',
+\ 'fdf_get_value(': 'resource fdf_document, string fieldname [, int which] | string',
+\ 'fdf_get_version(': '[resource fdf_document] | string',
+\ 'fdf_header(': 'void  | bool',
+\ 'fdf_next_field_name(': 'resource fdf_document [, string fieldname] | string',
+\ 'fdf_open(': 'string filename | resource',
+\ 'fdf_open_string(': 'string fdf_data | resource',
+\ 'fdf_remove_item(': 'resource fdfdoc, string fieldname, int item | bool',
+\ 'fdf_save(': 'resource fdf_document [, string filename] | bool',
+\ 'fdf_save_string(': 'resource fdf_document | string',
+\ 'fdf_set_ap(': 'resource fdf_document, string field_name, int face, string filename, int page_number | bool',
+\ 'fdf_set_encoding(': 'resource fdf_document, string encoding | bool',
+\ 'fdf_set_file(': 'resource fdf_document, string url [, string target_frame] | bool',
+\ 'fdf_set_flags(': 'resource fdf_document, string fieldname, int whichFlags, int newFlags | bool',
+\ 'fdf_set_javascript_action(': 'resource fdf_document, string fieldname, int trigger, string script | bool',
+\ 'fdf_set_on_import_javascript(': 'resource fdfdoc, string script [, bool before_data_import] | bool',
+\ 'fdf_set_opt(': 'resource fdf_document, string fieldname, int element, string str1, string str2 | bool',
+\ 'fdf_set_status(': 'resource fdf_document, string status | bool',
+\ 'fdf_set_submit_form_action(': 'resource fdf_document, string fieldname, int trigger, string script, int flags | bool',
+\ 'fdf_set_target_frame(': 'resource fdf_document, string frame_name | bool',
+\ 'fdf_set_value(': 'resource fdf_document, string fieldname, mixed value [, int isName] | bool',
+\ 'fdf_set_version(': 'resource fdf_document, string version | string',
+\ 'feof(': 'resource handle | bool',
+\ 'fflush(': 'resource handle | bool',
+\ 'fgetc(': 'resource handle | string',
+\ 'fgetcsv(': 'resource handle [, int length [, string delimiter [, string enclosure]]] | array',
+\ 'fgets(': 'resource handle [, int length] | string',
+\ 'fgetss(': 'resource handle [, int length [, string allowable_tags]] | string',
+\ 'file(': 'string filename [, int use_include_path [, resource context]] | array',
+\ 'fileatime(': 'string filename | int',
+\ 'filectime(': 'string filename | int',
+\ 'file_exists(': 'string filename | bool',
+\ 'file_get_contents(': 'string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] | string',
+\ 'filegroup(': 'string filename | int',
+\ 'fileinode(': 'string filename | int',
+\ 'filemtime(': 'string filename | int',
+\ 'fileowner(': 'string filename | int',
+\ 'fileperms(': 'string filename | int',
+\ 'filepro(': 'string directory | bool',
+\ 'filepro_fieldcount(': 'void  | int',
+\ 'filepro_fieldname(': 'int field_number | string',
+\ 'filepro_fieldtype(': 'int field_number | string',
+\ 'filepro_fieldwidth(': 'int field_number | int',
+\ 'filepro_retrieve(': 'int row_number, int field_number | string',
+\ 'filepro_rowcount(': 'void  | int',
+\ 'file_put_contents(': 'string filename, mixed data [, int flags [, resource context]] | int',
+\ 'filesize(': 'string filename | int',
+\ 'filetype(': 'string filename | string',
+\ 'floatval(': 'mixed var | float',
+\ 'flock(': 'resource handle, int operation [, int &wouldblock] | bool',
+\ 'floor(': 'float value | float',
+\ 'flush(': 'void  | void',
+\ 'fmod(': 'float x, float y | float',
+\ 'fnmatch(': 'string pattern, string string [, int flags] | bool',
+\ 'fopen(': 'string filename, string mode [, bool use_include_path [, resource zcontext]] | resource',
+\ 'fpassthru(': 'resource handle | int',
+\ 'fprintf(': 'resource handle, string format [, mixed args [, mixed ...]] | int',
+\ 'fputcsv(': 'resource handle [, array fields [, string delimiter [, string enclosure]]] | int',
+\ 'fread(': 'resource handle, int length | string',
+\ 'frenchtojd(': 'int month, int day, int year | int',
+\ 'fribidi_log2vis(': 'string str, string direction, int charset | string',
+\ 'fscanf(': 'resource handle, string format [, mixed &...] | mixed',
+\ 'fseek(': 'resource handle, int offset [, int whence] | int',
+\ 'fsockopen(': 'string target, int port [, int &errno [, string &errstr [, float timeout]]] | resource',
+\ 'fstat(': 'resource handle | array',
+\ 'ftell(': 'resource handle | int',
+\ 'ftok(': 'string pathname, string proj | int',
+\ 'ftp_alloc(': 'resource ftp_stream, int filesize [, string &result] | bool',
+\ 'ftp_cdup(': 'resource ftp_stream | bool',
+\ 'ftp_chdir(': 'resource ftp_stream, string directory | bool',
+\ 'ftp_chmod(': 'resource ftp_stream, int mode, string filename | int',
+\ 'ftp_close(': 'resource ftp_stream | bool',
+\ 'ftp_connect(': 'string host [, int port [, int timeout]] | resource',
+\ 'ftp_delete(': 'resource ftp_stream, string path | bool',
+\ 'ftp_exec(': 'resource ftp_stream, string command | bool',
+\ 'ftp_fget(': 'resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos] | bool',
+\ 'ftp_fput(': 'resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] | bool',
+\ 'ftp_get(': 'resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] | bool',
+\ 'ftp_get_option(': 'resource ftp_stream, int option | mixed',
+\ 'ftp_login(': 'resource ftp_stream, string username, string password | bool',
+\ 'ftp_mdtm(': 'resource ftp_stream, string remote_file | int',
+\ 'ftp_mkdir(': 'resource ftp_stream, string directory | string',
+\ 'ftp_nb_continue(': 'resource ftp_stream | int',
+\ 'ftp_nb_fget(': 'resource ftp_stream, resource handle, string remote_file, int mode [, int resumepos] | int',
+\ 'ftp_nb_fput(': 'resource ftp_stream, string remote_file, resource handle, int mode [, int startpos] | int',
+\ 'ftp_nb_get(': 'resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos] | int',
+\ 'ftp_nb_put(': 'resource ftp_stream, string remote_file, string local_file, int mode [, int startpos] | int',
+\ 'ftp_nlist(': 'resource ftp_stream, string directory | array',
+\ 'ftp_pasv(': 'resource ftp_stream, bool pasv | bool',
+\ 'ftp_put(': 'resource ftp_stream, string remote_file, string local_file, int mode [, int startpos] | bool',
+\ 'ftp_pwd(': 'resource ftp_stream | string',
+\ 'ftp_raw(': 'resource ftp_stream, string command | array',
+\ 'ftp_rawlist(': 'resource ftp_stream, string directory [, bool recursive] | array',
+\ 'ftp_rename(': 'resource ftp_stream, string oldname, string newname | bool',
+\ 'ftp_rmdir(': 'resource ftp_stream, string directory | bool',
+\ 'ftp_set_option(': 'resource ftp_stream, int option, mixed value | bool',
+\ 'ftp_site(': 'resource ftp_stream, string command | bool',
+\ 'ftp_size(': 'resource ftp_stream, string remote_file | int',
+\ 'ftp_ssl_connect(': 'string host [, int port [, int timeout]] | resource',
+\ 'ftp_systype(': 'resource ftp_stream | string',
+\ 'ftruncate(': 'resource handle, int size | bool',
+\ 'func_get_arg(': 'int arg_num | mixed',
+\ 'func_get_args(': 'void  | array',
+\ 'func_num_args(': 'void  | int',
+\ 'function_exists(': 'string function_name | bool',
+\ 'fwrite(': 'resource handle, string string [, int length] | int',
+\ 'gd_info(': 'void  | array',
+\ 'getallheaders(': 'void  | array',
+\ 'get_browser(': '[string user_agent [, bool return_array]] | object',
+\ 'get_cfg_var(': 'string varname | string',
+\ 'get_class(': 'object obj | string',
+\ 'get_class_methods(': 'mixed class_name | array',
+\ 'get_class_vars(': 'string class_name | array',
+\ 'get_current_user(': 'void  | string',
+\ 'getcwd(': 'void  | string',
+\ 'getdate(': '[int timestamp] | array',
+\ 'get_declared_classes(': 'void  | array',
+\ 'get_declared_interfaces(': 'void  | array',
+\ 'get_defined_constants(': '[mixed categorize] | array',
+\ 'get_defined_functions(': 'void  | array',
+\ 'get_defined_vars(': 'void  | array',
+\ 'getenv(': 'string varname | string',
+\ 'get_extension_funcs(': 'string module_name | array',
+\ 'get_headers(': 'string url [, int format] | array',
+\ 'gethostbyaddr(': 'string ip_address | string',
+\ 'gethostbyname(': 'string hostname | string',
+\ 'gethostbynamel(': 'string hostname | array',
+\ 'get_html_translation_table(': '[int table [, int quote_style]] | array',
+\ 'getimagesize(': 'string filename [, array &imageinfo] | array',
+\ 'get_included_files(': 'void  | array',
+\ 'get_include_path(': 'void  | string',
+\ 'getlastmod(': 'void  | int',
+\ 'get_loaded_extensions(': 'void  | array',
+\ 'get_magic_quotes_gpc(': 'void  | int',
+\ 'get_magic_quotes_runtime(': 'void  | int',
+\ 'get_meta_tags(': 'string filename [, bool use_include_path] | array',
+\ 'getmxrr(': 'string hostname, array &mxhosts [, array &weight] | bool',
+\ 'getmygid(': 'void  | int',
+\ 'getmyinode(': 'void  | int',
+\ 'getmypid(': 'void  | int',
+\ 'getmyuid(': 'void  | int',
+\ 'get_object_vars(': 'object obj | array',
+\ 'getopt(': 'string options [, array longopts] | array',
+\ 'get_parent_class(': 'mixed obj | string',
+\ 'getprotobyname(': 'string name | int',
+\ 'getprotobynumber(': 'int number | string',
+\ 'getrandmax(': 'void  | int',
+\ 'get_resource_type(': 'resource handle | string',
+\ 'getrusage(': '[int who] | array',
+\ 'getservbyname(': 'string service, string protocol | int',
+\ 'getservbyport(': 'int port, string protocol | string',
+\ 'gettext(': 'string message | string',
+\ 'gettimeofday(': '[bool return_float] | mixed',
+\ 'gettype(': 'mixed var | string',
+\ 'glob(': 'string pattern [, int flags] | array',
+\ 'gmdate(': 'string format [, int timestamp] | string',
+\ 'gmmktime(': '[int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] | int',
+\ 'gmp_abs(': 'resource a | resource',
+\ 'gmp_add(': 'resource a, resource b | resource',
+\ 'gmp_and(': 'resource a, resource b | resource',
+\ 'gmp_clrbit(': 'resource &a, int index | void',
+\ 'gmp_cmp(': 'resource a, resource b | int',
+\ 'gmp_com(': 'resource a | resource',
+\ 'gmp_divexact(': 'resource n, resource d | resource',
+\ 'gmp_div_q(': 'resource a, resource b [, int round] | resource',
+\ 'gmp_div_qr(': 'resource n, resource d [, int round] | array',
+\ 'gmp_div_r(': 'resource n, resource d [, int round] | resource',
+\ 'gmp_fact(': 'int a | resource',
+\ 'gmp_gcd(': 'resource a, resource b | resource',
+\ 'gmp_gcdext(': 'resource a, resource b | array',
+\ 'gmp_hamdist(': 'resource a, resource b | int',
+\ 'gmp_init(': 'mixed number [, int base] | resource',
+\ 'gmp_intval(': 'resource gmpnumber | int',
+\ 'gmp_invert(': 'resource a, resource b | resource',
+\ 'gmp_jacobi(': 'resource a, resource p | int',
+\ 'gmp_legendre(': 'resource a, resource p | int',
+\ 'gmp_mod(': 'resource n, resource d | resource',
+\ 'gmp_mul(': 'resource a, resource b | resource',
+\ 'gmp_neg(': 'resource a | resource',
+\ 'gmp_or(': 'resource a, resource b | resource',
+\ 'gmp_perfect_square(': 'resource a | bool',
+\ 'gmp_popcount(': 'resource a | int',
+\ 'gmp_pow(': 'resource base, int exp | resource',
+\ 'gmp_powm(': 'resource base, resource exp, resource mod | resource',
+\ 'gmp_prob_prime(': 'resource a [, int reps] | int',
+\ 'gmp_random(': 'int limiter | resource',
+\ 'gmp_scan0(': 'resource a, int start | int',
+\ 'gmp_scan1(': 'resource a, int start | int',
+\ 'gmp_setbit(': 'resource &a, int index [, bool set_clear] | void',
+\ 'gmp_sign(': 'resource a | int',
+\ 'gmp_sqrt(': 'resource a | resource',
+\ 'gmp_sqrtrem(': 'resource a | array',
+\ 'gmp_strval(': 'resource gmpnumber [, int base] | string',
+\ 'gmp_sub(': 'resource a, resource b | resource',
+\ 'gmp_xor(': 'resource a, resource b | resource',
+\ 'gmstrftime(': 'string format [, int timestamp] | string',
+\ 'gregoriantojd(': 'int month, int day, int year | int',
+\ 'gzclose(': 'resource zp | bool',
+\ 'gzcompress(': 'string data [, int level] | string',
+\ 'gzdeflate(': 'string data [, int level] | string',
+\ 'gzencode(': 'string data [, int level [, int encoding_mode]] | string',
+\ 'gzeof(': 'resource zp | int',
+\ 'gzfile(': 'string filename [, int use_include_path] | array',
+\ 'gzgetc(': 'resource zp | string',
+\ 'gzgets(': 'resource zp, int length | string',
+\ 'gzgetss(': 'resource zp, int length [, string allowable_tags] | string',
+\ 'gzinflate(': 'string data [, int length] | string',
+\ 'gzopen(': 'string filename, string mode [, int use_include_path] | resource',
+\ 'gzpassthru(': 'resource zp | int',
+\ 'gzread(': 'resource zp, int length | string',
+\ 'gzrewind(': 'resource zp | bool',
+\ 'gzseek(': 'resource zp, int offset | int',
+\ 'gztell(': 'resource zp | int',
+\ 'gzuncompress(': 'string data [, int length] | string',
+\ 'gzwrite(': 'resource zp, string string [, int length] | int',
+\ 'header(': 'string string [, bool replace [, int http_response_code]] | void',
+\ 'headers_list(': 'void  | array',
+\ 'headers_sent(': '[string &file [, int &line]] | bool',
+\ 'hebrev(': 'string hebrew_text [, int max_chars_per_line] | string',
+\ 'hebrevc(': 'string hebrew_text [, int max_chars_per_line] | string',
+\ 'hexdec(': 'string hex_string | number',
+\ 'highlight_file(': 'string filename [, bool return] | mixed',
+\ 'highlight_string(': 'string str [, bool return] | mixed',
+\ 'htmlentities(': 'string string [, int quote_style [, string charset]] | string',
+\ 'html_entity_decode(': 'string string [, int quote_style [, string charset]] | string',
+\ 'htmlspecialchars(': 'string string [, int quote_style [, string charset]] | string',
+\ 'htmlspecialchars_decode(': 'string string [, int quote_style] | string',
+\ 'http_build_query(': 'array formdata [, string numeric_prefix] | string',
+\ 'hw_api_attribute(': '[string name [, string value]] | HW_API_Attribute',
+\ 'hwapi_hgcsp(': 'string hostname [, int port] | HW_API',
+\ 'hw_api_content(': 'string content, string mimetype | HW_API_Content',
+\ 'hw_api_object(': 'array parameter | hw_api_object',
+\ 'hw_array2objrec(': 'array object_array | string',
+\ 'hw_changeobject(': 'int link, int objid, array attributes | void',
+\ 'hw_children(': 'int connection, int objectID | array',
+\ 'hw_childrenobj(': 'int connection, int objectID | array',
+\ 'hw_close(': 'int connection | int',
+\ 'hw_connect(': 'string host, int port, string username, string password | int',
+\ 'hw_connection_info(': 'int link | void',
+\ 'hw_cp(': 'int connection, array object_id_array, int destination_id | int',
+\ 'hw_deleteobject(': 'int connection, int object_to_delete | int',
+\ 'hw_docbyanchor(': 'int connection, int anchorID | int',
+\ 'hw_docbyanchorobj(': 'int connection, int anchorID | string',
+\ 'hw_document_attributes(': 'int hw_document | string',
+\ 'hw_document_bodytag(': 'int hw_document [, string prefix] | string',
+\ 'hw_document_content(': 'int hw_document | string',
+\ 'hw_document_setcontent(': 'int hw_document, string content | string',
+\ 'hw_document_size(': 'int hw_document | int',
+\ 'hw_dummy(': 'int link, int id, int msgid | string',
+\ 'hw_edittext(': 'int connection, int hw_document | int',
+\ 'hw_error(': 'int connection | int',
+\ 'hw_errormsg(': 'int connection | string',
+\ 'hw_free_document(': 'int hw_document | int',
+\ 'hw_getanchors(': 'int connection, int objectID | array',
+\ 'hw_getanchorsobj(': 'int connection, int objectID | array',
+\ 'hw_getandlock(': 'int connection, int objectID | string',
+\ 'hw_getchildcoll(': 'int connection, int objectID | array',
+\ 'hw_getchildcollobj(': 'int connection, int objectID | array',
+\ 'hw_getchilddoccoll(': 'int connection, int objectID | array',
+\ 'hw_getchilddoccollobj(': 'int connection, int objectID | array',
+\ 'hw_getobject(': 'int connection, mixed objectID [, string query] | array',
+\ 'hw_getobjectbyquery(': 'int connection, string query, int max_hits | array',
+\ 'hw_getobjectbyquerycoll(': 'int connection, int objectID, string query, int max_hits | array',
+\ 'hw_getobjectbyquerycollobj(': 'int connection, int objectID, string query, int max_hits | array',
+\ 'hw_getobjectbyqueryobj(': 'int connection, string query, int max_hits | array',
+\ 'hw_getparents(': 'int connection, int objectID | array',
+\ 'hw_getparentsobj(': 'int connection, int objectID | array',
+\ 'hw_getrellink(': 'int link, int rootid, int sourceid, int destid | string',
+\ 'hw_getremote(': 'int connection, int objectID | int',
+\ 'hw_getremotechildren(': 'int connection, string object_record | int',
+\ 'hw_getsrcbydestobj(': 'int connection, int objectID | array',
+\ 'hw_gettext(': 'int connection, int objectID [, mixed rootID/prefix] | int',
+\ 'hw_getusername(': 'int connection | string',
+\ 'hw_identify(': 'int link, string username, string password | int',
+\ 'hw_incollections(': 'int connection, array object_id_array, array collection_id_array, int return_collections | array',
+\ 'hw_info(': 'int connection | string',
+\ 'hw_inscoll(': 'int connection, int objectID, array object_array | int',
+\ 'hw_insdoc(': 'resource connection, int parentID, string object_record [, string text] | int',
+\ 'hw_insertanchors(': 'int hwdoc, array anchorecs, array dest [, array urlprefixes] | string',
+\ 'hw_insertdocument(': 'int connection, int parent_id, int hw_document | int',
+\ 'hw_insertobject(': 'int connection, string object_rec, string parameter | int',
+\ 'hw_mapid(': 'int connection, int server_id, int object_id | int',
+\ 'hw_modifyobject(': 'int connection, int object_to_change, array remove, array add [, int mode] | int',
+\ 'hw_mv(': 'int connection, array object_id_array, int source_id, int destination_id | int',
+\ 'hw_new_document(': 'string object_record, string document_data, int document_size | int',
+\ 'hw_objrec2array(': 'string object_record [, array format] | array',
+\ 'hw_output_document(': 'int hw_document | int',
+\ 'hw_pconnect(': 'string host, int port, string username, string password | int',
+\ 'hw_pipedocument(': 'int connection, int objectID [, array url_prefixes] | int',
+\ 'hw_root(': ' | int',
+\ 'hw_setlinkroot(': 'int link, int rootid | void',
+\ 'hw_stat(': 'int link | string',
+\ 'hw_unlock(': 'int connection, int objectID | int',
+\ 'hw_who(': 'int connection | int',
+\ 'hypot(': 'float x, float y | float',
+\ 'ibase_add_user(': 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]] | bool',
+\ 'ibase_affected_rows(': '[resource link_identifier] | int',
+\ 'ibase_backup(': 'resource service_handle, string source_db, string dest_file [, int options [, bool verbose]] | mixed',
+\ 'ibase_blob_add(': 'resource blob_handle, string data | bool',
+\ 'ibase_blob_cancel(': 'resource blob_handle | bool',
+\ 'ibase_blob_close(': 'resource blob_handle | mixed',
+\ 'ibase_blob_create(': '[resource link_identifier] | resource',
+\ 'ibase_blob_echo(': 'resource link_identifier, string blob_id | bool',
+\ 'ibase_blob_get(': 'resource blob_handle, int len | string',
+\ 'ibase_blob_import(': 'resource link_identifier, resource file_handle | string',
+\ 'ibase_blob_info(': 'resource link_identifier, string blob_id | array',
+\ 'ibase_blob_open(': 'resource link_identifier, string blob_id | resource',
+\ 'ibase_close(': '[resource connection_id] | bool',
+\ 'ibase_commit(': '[resource link_or_trans_identifier] | bool',
+\ 'ibase_commit_ret(': '[resource link_or_trans_identifier] | bool',
+\ 'ibase_connect(': 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]] | resource',
+\ 'ibase_db_info(': 'resource service_handle, string db, int action [, int argument] | string',
+\ 'ibase_delete_user(': 'resource service_handle, string user_name | bool',
+\ 'ibase_drop_db(': '[resource connection] | bool',
+\ 'ibase_errcode(': 'void  | int',
+\ 'ibase_errmsg(': 'void  | string',
+\ 'ibase_execute(': 'resource query [, mixed bind_arg [, mixed ...]] | resource',
+\ 'ibase_fetch_assoc(': 'resource result [, int fetch_flag] | array',
+\ 'ibase_fetch_object(': 'resource result_id [, int fetch_flag] | object',
+\ 'ibase_fetch_row(': 'resource result_identifier [, int fetch_flag] | array',
+\ 'ibase_field_info(': 'resource result, int field_number | array',
+\ 'ibase_free_event_handler(': 'resource event | bool',
+\ 'ibase_free_query(': 'resource query | bool',
+\ 'ibase_free_result(': 'resource result_identifier | bool',
+\ 'ibase_gen_id(': 'string generator [, int increment [, resource link_identifier]] | int',
+\ 'ibase_maintain_db(': 'resource service_handle, string db, int action [, int argument] | bool',
+\ 'ibase_modify_user(': 'resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]] | bool',
+\ 'ibase_name_result(': 'resource result, string name | bool',
+\ 'ibase_num_fields(': 'resource result_id | int',
+\ 'ibase_num_params(': 'resource query | int',
+\ 'ibase_param_info(': 'resource query, int param_number | array',
+\ 'ibase_pconnect(': 'string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]] | resource',
+\ 'ibase_prepare(': 'string query | resource',
+\ 'ibase_query(': '[resource link_identifier, string query [, int bind_args]] | resource',
+\ 'ibase_restore(': 'resource service_handle, string source_file, string dest_db [, int options [, bool verbose]] | mixed',
+\ 'ibase_rollback(': '[resource link_or_trans_identifier] | bool',
+\ 'ibase_rollback_ret(': '[resource link_or_trans_identifier] | bool',
+\ 'ibase_server_info(': 'resource service_handle, int action | string',
+\ 'ibase_service_attach(': 'string host, string dba_username, string dba_password | resource',
+\ 'ibase_service_detach(': 'resource service_handle | bool',
+\ 'ibase_set_event_handler(': 'callback event_handler, string event_name1 [, string event_name2 [, string ...]] | resource',
+\ 'ibase_timefmt(': 'string format [, int columntype] | int',
+\ 'ibase_trans(': '[int trans_args [, resource link_identifier]] | resource',
+\ 'ibase_wait_event(': 'string event_name1 [, string event_name2 [, string ...]] | string',
+\ 'icap_close(': 'int icap_stream [, int flags] | int',
+\ 'icap_create_calendar(': 'int stream_id, string calendar | string',
+\ 'icap_delete_calendar(': 'int stream_id, string calendar | string',
+\ 'icap_delete_event(': 'int stream_id, int uid | string',
+\ 'icap_fetch_event(': 'int stream_id, int event_id [, int options] | int',
+\ 'icap_list_alarms(': 'int stream_id, array date, array time | int',
+\ 'icap_list_events(': 'int stream_id, int begin_date [, int end_date] | array',
+\ 'icap_open(': 'string calendar, string username, string password, string options | resource',
+\ 'icap_rename_calendar(': 'int stream_id, string old_name, string new_name | string',
+\ 'icap_reopen(': 'int stream_id, string calendar [, int options] | int',
+\ 'icap_snooze(': 'int stream_id, int uid | string',
+\ 'icap_store_event(': 'int stream_id, object event | string',
+\ 'iconv(': 'string in_charset, string out_charset, string str | string',
+\ 'iconv_get_encoding(': '[string type] | mixed',
+\ 'iconv_mime_decode(': 'string encoded_header [, int mode [, string charset]] | string',
+\ 'iconv_mime_decode_headers(': 'string encoded_headers [, int mode [, string charset]] | array',
+\ 'iconv_mime_encode(': 'string field_name, string field_value [, array preferences] | string',
+\ 'iconv_set_encoding(': 'string type, string charset | bool',
+\ 'iconv_strlen(': 'string str [, string charset] | int',
+\ 'iconv_strpos(': 'string haystack, string needle [, int offset [, string charset]] | int',
+\ 'iconv_strrpos(': 'string haystack, string needle [, string charset] | string',
+\ 'iconv_substr(': 'string str, int offset [, int length [, string charset]] | string',
+\ 'id3_get_frame_long_name(': 'string frameId | string',
+\ 'id3_get_frame_short_name(': 'string frameId | string',
+\ 'id3_get_genre_id(': 'string genre | int',
+\ 'id3_get_genre_list(': 'void  | array',
+\ 'id3_get_genre_name(': 'int genre_id | string',
+\ 'id3_get_tag(': 'string filename [, int version] | array',
+\ 'id3_get_version(': 'string filename | int',
+\ 'id3_remove_tag(': 'string filename [, int version] | bool',
+\ 'id3_set_tag(': 'string filename, array tag [, int version] | bool',
+\ 'idate(': 'string format [, int timestamp] | int',
+\ 'ifx_affected_rows(': 'int result_id | int',
+\ 'ifx_blobinfile_mode(': 'int mode | void',
+\ 'ifx_byteasvarchar(': 'int mode | void',
+\ 'ifx_close(': '[int link_identifier] | int',
+\ 'ifx_connect(': '[string database [, string userid [, string password]]] | int',
+\ 'ifx_copy_blob(': 'int bid | int',
+\ 'ifx_create_blob(': 'int type, int mode, string param | int',
+\ 'ifx_create_char(': 'string param | int',
+\ 'ifx_do(': 'int result_id | int',
+\ 'ifx_error(': 'void  | string',
+\ 'ifx_errormsg(': '[int errorcode] | string',
+\ 'ifx_fetch_row(': 'int result_id [, mixed position] | array',
+\ 'ifx_fieldproperties(': 'int result_id | array',
+\ 'ifx_fieldtypes(': 'int result_id | array',
+\ 'ifx_free_blob(': 'int bid | int',
+\ 'ifx_free_char(': 'int bid | int',
+\ 'ifx_free_result(': 'int result_id | int',
+\ 'ifx_get_blob(': 'int bid | int',
+\ 'ifx_get_char(': 'int bid | int',
+\ 'ifx_getsqlca(': 'int result_id | array',
+\ 'ifx_htmltbl_result(': 'int result_id [, string html_table_options] | int',
+\ 'ifx_nullformat(': 'int mode | void',
+\ 'ifx_num_fields(': 'int result_id | int',
+\ 'ifx_num_rows(': 'int result_id | int',
+\ 'ifx_pconnect(': '[string database [, string userid [, string password]]] | int',
+\ 'ifx_prepare(': 'string query, int conn_id [, int cursor_def, mixed blobidarray] | int',
+\ 'ifx_query(': 'string query, int link_identifier [, int cursor_type [, mixed blobidarray]] | int',
+\ 'ifx_textasvarchar(': 'int mode | void',
+\ 'ifx_update_blob(': 'int bid, string content | bool',
+\ 'ifx_update_char(': 'int bid, string content | int',
+\ 'ifxus_close_slob(': 'int bid | int',
+\ 'ifxus_create_slob(': 'int mode | int',
+\ 'ifxus_free_slob(': 'int bid | int',
+\ 'ifxus_open_slob(': 'int bid, int mode | int',
+\ 'ifxus_read_slob(': 'int bid, int nbytes | int',
+\ 'ifxus_seek_slob(': 'int bid, int mode, int offset | int',
+\ 'ifxus_tell_slob(': 'int bid | int',
+\ 'ifxus_write_slob(': 'int bid, string content | int',
+\ 'ignore_user_abort(': '[bool setting] | int',
+\ 'iis_add_server(': 'string path, string comment, string server_ip, int port, string host_name, int rights, int start_server | int',
+\ 'iis_get_dir_security(': 'int server_instance, string virtual_path | int',
+\ 'iis_get_script_map(': 'int server_instance, string virtual_path, string script_extension | int',
+\ 'iis_get_server_by_comment(': 'string comment | int',
+\ 'iis_get_server_by_path(': 'string path | int',
+\ 'iis_get_server_rights(': 'int server_instance, string virtual_path | int',
+\ 'iis_get_service_state(': 'string service_id | int',
+\ 'iis_remove_server(': 'int server_instance | int',
+\ 'iis_set_app_settings(': 'int server_instance, string virtual_path, string application_scope | int',
+\ 'iis_set_dir_security(': 'int server_instance, string virtual_path, int directory_flags | int',
+\ 'iis_set_script_map(': 'int server_instance, string virtual_path, string script_extension, string engine_path, int allow_scripting | int',
+\ 'iis_set_server_rights(': 'int server_instance, string virtual_path, int directory_flags | int',
+\ 'iis_start_server(': 'int server_instance | int',
+\ 'iis_start_service(': 'string service_id | int',
+\ 'iis_stop_server(': 'int server_instance | int',
+\ 'iis_stop_service(': 'string service_id | int',
+\ 'image2wbmp(': 'resource image [, string filename [, int threshold]] | int',
+\ 'imagealphablending(': 'resource image, bool blendmode | bool',
+\ 'imageantialias(': 'resource im, bool on | bool',
+\ 'imagearc(': 'resource image, int cx, int cy, int w, int h, int s, int e, int color | int',
+\ 'imagechar(': 'resource image, int font, int x, int y, string c, int color | int',
+\ 'imagecharup(': 'resource image, int font, int x, int y, string c, int color | int',
+\ 'imagecolorallocate(': 'resource image, int red, int green, int blue | int',
+\ 'imagecolorallocatealpha(': 'resource image, int red, int green, int blue, int alpha | int',
+\ 'imagecolorat(': 'resource image, int x, int y | int',
+\ 'imagecolorclosest(': 'resource image, int red, int green, int blue | int',
+\ 'imagecolorclosestalpha(': 'resource image, int red, int green, int blue, int alpha | int',
+\ 'imagecolorclosesthwb(': 'resource image, int red, int green, int blue | int',
+\ 'imagecolordeallocate(': 'resource image, int color | int',
+\ 'imagecolorexact(': 'resource image, int red, int green, int blue | int',
+\ 'imagecolorexactalpha(': 'resource image, int red, int green, int blue, int alpha | int',
+\ 'imagecolormatch(': 'resource image1, resource image2 | bool',
+\ 'imagecolorresolve(': 'resource image, int red, int green, int blue | int',
+\ 'imagecolorresolvealpha(': 'resource image, int red, int green, int blue, int alpha | int',
+\ 'imagecolorset(': 'resource image, int index, int red, int green, int blue | bool',
+\ 'imagecolorsforindex(': 'resource image, int index | array',
+\ 'imagecolorstotal(': 'resource image | int',
+\ 'imagecolortransparent(': 'resource image [, int color] | int',
+\ 'imagecopy(': 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h | int',
+\ 'imagecopymerge(': 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct | int',
+\ 'imagecopymergegray(': 'resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct | int',
+\ 'imagecopyresampled(': 'resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h | bool',
+\ 'imagecopyresized(': 'resource dst_image, resource src_image, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h | int',
+\ 'imagecreate(': 'int x_size, int y_size | resource',
+\ 'imagecreatefromgd(': 'string filename | resource',
+\ 'imagecreatefromgd2(': 'string filename | resource',
+\ 'imagecreatefromgd2part(': 'string filename, int srcX, int srcY, int width, int height | resource',
+\ 'imagecreatefromgif(': 'string filename | resource',
+\ 'imagecreatefromjpeg(': 'string filename | resource',
+\ 'imagecreatefrompng(': 'string filename | resource',
+\ 'imagecreatefromstring(': 'string image | resource',
+\ 'imagecreatefromwbmp(': 'string filename | resource',
+\ 'imagecreatefromxbm(': 'string filename | resource',
+\ 'imagecreatefromxpm(': 'string filename | resource',
+\ 'imagecreatetruecolor(': 'int x_size, int y_size | resource',
+\ 'imagedashedline(': 'resource image, int x1, int y1, int x2, int y2, int color | int',
+\ 'imagedestroy(': 'resource image | bool',
+\ 'imageellipse(': 'resource image, int cx, int cy, int w, int h, int color | int',
+\ 'imagefill(': 'resource image, int x, int y, int color | int',
+\ 'imagefilledarc(': 'resource image, int cx, int cy, int w, int h, int s, int e, int color, int style | bool',
+\ 'imagefilledellipse(': 'resource image, int cx, int cy, int w, int h, int color | bool',
+\ 'imagefilledpolygon(': 'resource image, array points, int num_points, int color | int',
+\ 'imagefilledrectangle(': 'resource image, int x1, int y1, int x2, int y2, int color | int',
+\ 'imagefilltoborder(': 'resource image, int x, int y, int border, int color | int',
+\ 'imagefilter(': 'resource src_im, int filtertype [, int arg1 [, int arg2 [, int arg3]]] | bool',
+\ 'imagefontheight(': 'int font | int',
+\ 'imagefontwidth(': 'int font | int',
+\ 'imageftbbox(': 'float size, float angle, string font_file, string text [, array extrainfo] | array',
+\ 'imagefttext(': 'resource image, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo] | array',
+\ 'imagegammacorrect(': 'resource image, float inputgamma, float outputgamma | int',
+\ 'imagegd(': 'resource image [, string filename] | bool',
+\ 'imagegd2(': 'resource image [, string filename [, int chunk_size [, int type]]] | bool',
+\ 'imagegif(': 'resource image [, string filename] | bool',
+\ 'imageinterlace(': 'resource image [, int interlace] | int',
+\ 'imageistruecolor(': 'resource image | bool',
+\ 'imagejpeg(': 'resource image [, string filename [, int quality]] | bool',
+\ 'imagelayereffect(': 'resource image, int effect | bool',
+\ 'imageline(': 'resource image, int x1, int y1, int x2, int y2, int color | int',
+\ 'imageloadfont(': 'string file | int',
+\ 'imagepalettecopy(': 'resource destination, resource source | int',
+\ 'imagepng(': 'resource image [, string filename] | bool',
+\ 'imagepolygon(': 'resource image, array points, int num_points, int color | int',
+\ 'imagepsbbox(': 'string text, int font, int size [, int space, int tightness, float angle] | array',
+\ 'imagepscopyfont(': 'int fontindex | int',
+\ 'imagepsencodefont(': 'int font_index, string encodingfile | int',
+\ 'imagepsextendfont(': 'int font_index, float extend | bool',
+\ 'imagepsfreefont(': 'int fontindex | void',
+\ 'imagepsloadfont(': 'string filename | int',
+\ 'imagepsslantfont(': 'int font_index, float slant | bool',
+\ 'imagepstext(': 'resource image, string text, int font, int size, int foreground, int background, int x, int y [, int space, int tightness, float angle, int antialias_steps] | array',
+\ 'imagerectangle(': 'resource image, int x1, int y1, int x2, int y2, int col | int',
+\ 'imagerotate(': 'resource src_im, float angle, int bgd_color | resource',
+\ 'imagesavealpha(': 'resource image, bool saveflag | bool',
+\ 'imagesetbrush(': 'resource image, resource brush | int',
+\ 'imagesetpixel(': 'resource image, int x, int y, int color | int',
+\ 'imagesetstyle(': 'resource image, array style | bool',
+\ 'imagesetthickness(': 'resource image, int thickness | bool',
+\ 'imagesettile(': 'resource image, resource tile | int',
+\ 'imagestring(': 'resource image, int font, int x, int y, string s, int col | int',
+\ 'imagestringup(': 'resource image, int font, int x, int y, string s, int col | int',
+\ 'imagesx(': 'resource image | int',
+\ 'imagesy(': 'resource image | int',
+\ 'imagetruecolortopalette(': 'resource image, bool dither, int ncolors | void',
+\ 'imagettfbbox(': 'float size, float angle, string fontfile, string text | array',
+\ 'imagettftext(': 'resource image, float size, float angle, int x, int y, int color, string fontfile, string text | array',
+\ 'imagetypes(': 'void  | int',
+\ 'image_type_to_extension(': 'int imagetype [, bool include_dot] | string',
+\ 'image_type_to_mime_type(': 'int imagetype | string',
+\ 'imagewbmp(': 'resource image [, string filename [, int foreground]] | bool',
+\ 'imagexbm(': 'resource image, string filename [, int foreground] | bool',
+\ 'imap_8bit(': 'string string | string',
+\ 'imap_alerts(': 'void  | array',
+\ 'imap_append(': 'resource imap_stream, string mbox, string message [, string options] | bool',
+\ 'imap_base64(': 'string text | string',
+\ 'imap_binary(': 'string string | string',
+\ 'imap_body(': 'resource imap_stream, int msg_number [, int options] | string',
+\ 'imap_bodystruct(': 'resource stream_id, int msg_no, string section | object',
+\ 'imap_check(': 'resource imap_stream | object',
+\ 'imap_clearflag_full(': 'resource stream, string sequence, string flag [, string options] | bool',
+\ 'imap_close(': 'resource imap_stream [, int flag] | bool',
+\ 'imap_createmailbox(': 'resource imap_stream, string mbox | bool',
+\ 'imap_delete(': 'int imap_stream, int msg_number [, int options] | bool',
+\ 'imap_deletemailbox(': 'resource imap_stream, string mbox | bool',
+\ 'imap_errors(': 'void  | array',
+\ 'imap_expunge(': 'resource imap_stream | bool',
+\ 'imap_fetchbody(': 'resource imap_stream, int msg_number, string part_number [, int options] | string',
+\ 'imap_fetchheader(': 'resource imap_stream, int msgno [, int options] | string',
+\ 'imap_fetch_overview(': 'resource imap_stream, string sequence [, int options] | array',
+\ 'imap_fetchstructure(': 'resource imap_stream, int msg_number [, int options] | object',
+\ 'imap_getacl(': 'resource stream_id, string mailbox | array',
+\ 'imap_getmailboxes(': 'resource imap_stream, string ref, string pattern | array',
+\ 'imap_get_quota(': 'resource imap_stream, string quota_root | array',
+\ 'imap_get_quotaroot(': 'resource imap_stream, string quota_root | array',
+\ 'imap_getsubscribed(': 'resource imap_stream, string ref, string pattern | array',
+\ 'imap_headerinfo(': 'resource imap_stream, int msg_number [, int fromlength [, int subjectlength [, string defaulthost]]] | object',
+\ 'imap_headers(': 'resource imap_stream | array',
+\ 'imap_last_error(': 'void  | string',
+\ 'imap_list(': 'resource imap_stream, string ref, string pattern | array',
+\ 'imap_listscan(': 'resource imap_stream, string ref, string pattern, string content | array',
+\ 'imap_lsub(': 'resource imap_stream, string ref, string pattern | array',
+\ 'imap_mail(': 'string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]] | bool',
+\ 'imap_mailboxmsginfo(': 'resource imap_stream | object',
+\ 'imap_mail_compose(': 'array envelope, array body | string',
+\ 'imap_mail_copy(': 'resource imap_stream, string msglist, string mbox [, int options] | bool',
+\ 'imap_mail_move(': 'resource imap_stream, string msglist, string mbox [, int options] | bool',
+\ 'imap_mime_header_decode(': 'string text | array',
+\ 'imap_msgno(': 'resource imap_stream, int uid | int',
+\ 'imap_num_msg(': 'resource imap_stream | int',
+\ 'imap_num_recent(': 'resource imap_stream | int',
+\ 'imap_open(': 'string mailbox, string username, string password [, int options] | resource',
+\ 'imap_ping(': 'resource imap_stream | bool',
+\ 'imap_qprint(': 'string string | string',
+\ 'imap_renamemailbox(': 'resource imap_stream, string old_mbox, string new_mbox | bool',
+\ 'imap_reopen(': 'resource imap_stream, string mailbox [, string options] | bool',
+\ 'imap_rfc822_parse_adrlist(': 'string address, string default_host | array',
+\ 'imap_rfc822_parse_headers(': 'string headers [, string defaulthost] | object',
+\ 'imap_rfc822_write_address(': 'string mailbox, string host, string personal | string',
+\ 'imap_search(': 'resource imap_stream, string criteria [, int options [, string charset]] | array',
+\ 'imap_setacl(': 'resource stream_id, string mailbox, string id, string rights | bool',
+\ 'imap_setflag_full(': 'resource stream, string sequence, string flag [, string options] | bool',
+\ 'imap_set_quota(': 'resource imap_stream, string quota_root, int quota_limit | bool',
+\ 'imap_sort(': 'resource stream, int criteria, int reverse [, int options [, string search_criteria [, string charset]]] | array',
+\ 'imap_status(': 'resource imap_stream, string mailbox, int options | object',
+\ 'imap_subscribe(': 'resource imap_stream, string mbox | bool',
+\ 'imap_thread(': 'resource stream_id [, int options] | array',
+\ 'imap_timeout(': 'int timeout_type [, int timeout] | mixed',
+\ 'imap_uid(': 'resource imap_stream, int msgno | int',
+\ 'imap_undelete(': 'resource imap_stream, int msg_number [, int flags] | bool',
+\ 'imap_unsubscribe(': 'string imap_stream, string mbox | bool',
+\ 'imap_utf7_decode(': 'string text | string',
+\ 'imap_utf7_encode(': 'string data | string',
+\ 'imap_utf8(': 'string mime_encoded_text | string',
+\ 'implode(': 'string glue, array pieces | string',
+\ 'import_request_variables(': 'string types [, string prefix] | bool',
+\ 'in_array(': 'mixed needle, array haystack [, bool strict] | bool',
+\ 'inet_ntop(': 'string in_addr | string',
+\ 'inet_pton(': 'string address | string',
+\ 'ingres_autocommit(': '[resource link] | bool',
+\ 'ingres_close(': '[resource link] | bool',
+\ 'ingres_commit(': '[resource link] | bool',
+\ 'ingres_connect(': '[string database [, string username [, string password]]] | resource',
+\ 'ingres_fetch_array(': '[int result_type [, resource link]] | array',
+\ 'ingres_fetch_object(': '[int result_type [, resource link]] | object',
+\ 'ingres_fetch_row(': '[resource link] | array',
+\ 'ingres_field_length(': 'int index [, resource link] | int',
+\ 'ingres_field_name(': 'int index [, resource link] | string',
+\ 'ingres_field_nullable(': 'int index [, resource link] | bool',
+\ 'ingres_field_precision(': 'int index [, resource link] | int',
+\ 'ingres_field_scale(': 'int index [, resource link] | int',
+\ 'ingres_field_type(': 'int index [, resource link] | string',
+\ 'ingres_num_fields(': '[resource link] | int',
+\ 'ingres_num_rows(': '[resource link] | int',
+\ 'ingres_pconnect(': '[string database [, string username [, string password]]] | resource',
+\ 'ingres_query(': 'string query [, resource link] | bool',
+\ 'ingres_rollback(': '[resource link] | bool',
+\ 'ini_get(': 'string varname | string',
+\ 'ini_get_all(': '[string extension] | array',
+\ 'ini_restore(': 'string varname | void',
+\ 'ini_set(': 'string varname, string newvalue | string',
+\ 'interface_exists(': 'string interface_name [, bool autoload] | bool',
+\ 'intval(': 'mixed var [, int base] | int',
+\ 'ip2long(': 'string ip_address | int',
+\ 'iptcembed(': 'string iptcdata, string jpeg_file_name [, int spool] | array',
+\ 'iptcparse(': 'string iptcblock | array',
+\ 'ircg_channel_mode(': 'resource connection, string channel, string mode_spec, string nick | bool',
+\ 'ircg_disconnect(': 'resource connection, string reason | bool',
+\ 'ircg_eval_ecmascript_params(': 'string params | array',
+\ 'ircg_fetch_error_msg(': 'resource connection | array',
+\ 'ircg_get_username(': 'resource connection | string',
+\ 'ircg_html_encode(': 'string html_string [, bool auto_links [, bool conv_br]] | bool',
+\ 'ircg_ignore_add(': 'resource connection, string nick | bool',
+\ 'ircg_ignore_del(': 'resource connection, string nick | bool',
+\ 'ircg_invite(': 'resource connection, string channel, string nickname | bool',
+\ 'ircg_is_conn_alive(': 'resource connection | bool',
+\ 'ircg_join(': 'resource connection, string channel [, string key] | bool',
+\ 'ircg_kick(': 'resource connection, string channel, string nick, string reason | bool',
+\ 'ircg_list(': 'resource connection, string channel | bool',
+\ 'ircg_lookup_format_messages(': 'string name | bool',
+\ 'ircg_lusers(': 'resource connection | bool',
+\ 'ircg_msg(': 'resource connection, string recipient, string message [, bool suppress] | bool',
+\ 'ircg_names(': 'int connection, string channel [, string target] | bool',
+\ 'ircg_nick(': 'resource connection, string nick | bool',
+\ 'ircg_nickname_escape(': 'string nick | string',
+\ 'ircg_nickname_unescape(': 'string nick | string',
+\ 'ircg_notice(': 'resource connection, string recipient, string message | bool',
+\ 'ircg_oper(': 'resource connection, string name, string password | bool',
+\ 'ircg_part(': 'resource connection, string channel | bool',
+\ 'ircg_pconnect(': 'string username [, string server_ip [, int server_port [, string msg_format [, array ctcp_messages [, array user_settings [, bool bailout_on_trivial]]]]]] | resource',
+\ 'ircg_register_format_messages(': 'string name, array messages | bool',
+\ 'ircg_set_current(': 'resource connection | bool',
+\ 'ircg_set_file(': 'resource connection, string path | bool',
+\ 'ircg_set_on_die(': 'resource connection, string host, int port, string data | bool',
+\ 'ircg_topic(': 'resource connection, string channel, string new_topic | bool',
+\ 'ircg_who(': 'resource connection, string mask [, bool ops_only] | bool',
+\ 'ircg_whois(': 'resource connection, string nick | bool',
+\ 'is_a(': 'object object, string class_name | bool',
+\ 'is_array(': 'mixed var | bool',
+\ 'is_bool(': 'mixed var | bool',
+\ 'is_callable(': 'mixed var [, bool syntax_only [, string &callable_name]] | bool',
+\ 'is_dir(': 'string filename | bool',
+\ 'is_executable(': 'string filename | bool',
+\ 'is_file(': 'string filename | bool',
+\ 'is_finite(': 'float val | bool',
+\ 'is_float(': 'mixed var | bool',
+\ 'is_infinite(': 'float val | bool',
+\ 'is_int(': 'mixed var | bool',
+\ 'is_link(': 'string filename | bool',
+\ 'is_nan(': 'float val | bool',
+\ 'is_null(': 'mixed var | bool',
+\ 'is_numeric(': 'mixed var | bool',
+\ 'is_object(': 'mixed var | bool',
+\ 'is_readable(': 'string filename | bool',
+\ 'is_resource(': 'mixed var | bool',
+\ 'is_scalar(': 'mixed var | bool',
+\ 'isset(': 'mixed var [, mixed var [, ...]] | bool',
+\ 'is_soap_fault(': 'mixed obj | bool',
+\ 'is_string(': 'mixed var | bool',
+\ 'is_subclass_of(': 'mixed object, string class_name | bool',
+\ 'is_uploaded_file(': 'string filename | bool',
+\ 'is_writable(': 'string filename | bool',
+\ 'iterator_count(': 'IteratorAggregate iterator | int',
+\ 'iterator_to_array(': 'IteratorAggregate iterator | array',
+\ 'java_last_exception_clear(': 'void  | void',
+\ 'java_last_exception_get(': 'void  | object',
+\ 'jddayofweek(': 'int julianday [, int mode] | mixed',
+\ 'jdmonthname(': 'int julianday, int mode | string',
+\ 'jdtofrench(': 'int juliandaycount | string',
+\ 'jdtogregorian(': 'int julianday | string',
+\ 'jdtojewish(': 'int juliandaycount [, bool hebrew [, int fl]] | string',
+\ 'jdtojulian(': 'int julianday | string',
+\ 'jdtounix(': 'int jday | int',
+\ 'jewishtojd(': 'int month, int day, int year | int',
+\ 'jpeg2wbmp(': 'string jpegname, string wbmpname, int d_height, int d_width, int threshold | int',
+\ 'juliantojd(': 'int month, int day, int year | int',
+\ 'key(': 'array &array | mixed',
+\ 'krsort(': 'array &array [, int sort_flags] | bool',
+\ 'ksort(': 'array &array [, int sort_flags] | bool',
+\ 'lcg_value(': 'void  | float',
+\ 'ldap_8859_to_t61(': 'string value | string',
+\ 'ldap_add(': 'resource link_identifier, string dn, array entry | bool',
+\ 'ldap_bind(': 'resource link_identifier [, string bind_rdn [, string bind_password]] | bool',
+\ 'ldap_close(': 'resource link_identifier | bool',
+\ 'ldap_compare(': 'resource link_identifier, string dn, string attribute, string value | bool',
+\ 'ldap_connect(': '[string hostname [, int port]] | resource',
+\ 'ldap_count_entries(': 'resource link_identifier, resource result_identifier | int',
+\ 'ldap_delete(': 'resource link_identifier, string dn | bool',
+\ 'ldap_dn2ufn(': 'string dn | string',
+\ 'ldap_err2str(': 'int errno | string',
+\ 'ldap_errno(': 'resource link_identifier | int',
+\ 'ldap_error(': 'resource link_identifier | string',
+\ 'ldap_explode_dn(': 'string dn, int with_attrib | array',
+\ 'ldap_first_attribute(': 'resource link_identifier, resource result_entry_identifier, int &ber_identifier | string',
+\ 'ldap_first_entry(': 'resource link_identifier, resource result_identifier | resource',
+\ 'ldap_first_reference(': 'resource link, resource result | resource',
+\ 'ldap_free_result(': 'resource result_identifier | bool',
+\ 'ldap_get_attributes(': 'resource link_identifier, resource result_entry_identifier | array',
+\ 'ldap_get_dn(': 'resource link_identifier, resource result_entry_identifier | string',
+\ 'ldap_get_entries(': 'resource link_identifier, resource result_identifier | array',
+\ 'ldap_get_option(': 'resource link_identifier, int option, mixed &retval | bool',
+\ 'ldap_get_values(': 'resource link_identifier, resource result_entry_identifier, string attribute | array',
+\ 'ldap_get_values_len(': 'resource link_identifier, resource result_entry_identifier, string attribute | array',
+\ 'ldap_list(': 'resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] | resource',
+\ 'ldap_mod_add(': 'resource link_identifier, string dn, array entry | bool',
+\ 'ldap_mod_del(': 'resource link_identifier, string dn, array entry | bool',
+\ 'ldap_modify(': 'resource link_identifier, string dn, array entry | bool',
+\ 'ldap_mod_replace(': 'resource link_identifier, string dn, array entry | bool',
+\ 'ldap_next_attribute(': 'resource link_identifier, resource result_entry_identifier, resource &ber_identifier | string',
+\ 'ldap_next_entry(': 'resource link_identifier, resource result_entry_identifier | resource',
+\ 'ldap_next_reference(': 'resource link, resource entry | resource',
+\ 'ldap_parse_reference(': 'resource link, resource entry, array &referrals | bool',
+\ 'ldap_parse_result(': 'resource link, resource result, int &errcode [, string &matcheddn [, string &errmsg [, array &referrals]]] | bool',
+\ 'ldap_read(': 'resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] | resource',
+\ 'ldap_rename(': 'resource link_identifier, string dn, string newrdn, string newparent, bool deleteoldrdn | bool',
+\ 'ldap_sasl_bind(': 'resource link | bool',
+\ 'ldap_search(': 'resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]] | resource',
+\ 'ldap_set_option(': 'resource link_identifier, int option, mixed newval | bool',
+\ 'ldap_set_rebind_proc(': 'resource link, callback callback | bool',
+\ 'ldap_sort(': 'resource link, resource result, string sortfilter | bool',
+\ 'ldap_start_tls(': 'resource link | bool',
+\ 'ldap_t61_to_8859(': 'string value | string',
+\ 'ldap_unbind(': 'resource link_identifier | bool',
+\ 'levenshtein(': 'string str1, string str2 [, int cost_ins [, int cost_rep, int cost_del]] | int',
+\ 'libxml_clear_errors(': 'void  | void',
+\ 'libxml_get_errors(': 'void  | array',
+\ 'libxml_get_last_error(': 'void  | LibXMLError',
+\ 'libxml_set_streams_context(': 'resource streams_context | void',
+\ 'libxml_use_internal_errors(': '[bool use_errors] | bool',
+\ 'link(': 'string target, string link | bool',
+\ 'linkinfo(': 'string path | int',
+\ 'list(': 'mixed varname, mixed ... | void',
+\ 'localeconv(': 'void  | array',
+\ 'localtime(': '[int timestamp [, bool is_associative]] | array',
+\ 'log(': 'float arg [, float base] | float',
+\ 'log10(': 'float arg | float',
+\ 'log1p(': 'float number | float',
+\ 'long2ip(': 'int proper_address | string',
+\ 'lstat(': 'string filename | array',
+\ 'ltrim(': 'string str [, string charlist] | string',
+\ 'lzf_compress(': 'string data | string',
+\ 'lzf_decompress(': 'string data | string',
+\ 'lzf_optimized_for(': 'void  | int',
+\ 'mail(': 'string to, string subject, string message [, string additional_headers [, string additional_parameters]] | bool',
+\ 'mailparse_determine_best_xfer_encoding(': 'resource fp | int',
+\ 'mailparse_msg_create(': 'void  | int',
+\ 'mailparse_msg_extract_part(': 'resource rfc2045, string msgbody [, callback callbackfunc] | void',
+\ 'mailparse_msg_extract_part_file(': 'resource rfc2045, string filename [, callback callbackfunc] | string',
+\ 'mailparse_msg_free(': 'resource rfc2045buf | void',
+\ 'mailparse_msg_get_part(': 'resource rfc2045, string mimesection | int',
+\ 'mailparse_msg_get_part_data(': 'resource rfc2045 | array',
+\ 'mailparse_msg_get_structure(': 'resource rfc2045 | array',
+\ 'mailparse_msg_parse(': 'resource rfc2045buf, string data | void',
+\ 'mailparse_msg_parse_file(': 'string filename | resource',
+\ 'mailparse_rfc822_parse_addresses(': 'string addresses | array',
+\ 'mailparse_stream_encode(': 'resource sourcefp, resource destfp, string encoding | bool',
+\ 'mailparse_uudecode_all(': 'resource fp | array',
+\ 'max(': 'number arg1, number arg2 [, number ...] | mixed',
+\ 'maxdb_affected_rows(': 'resource link | mixed',
+\ 'maxdb_autocommit(': 'resource link, bool mode | bool',
+\ 'maxdb_change_user(': 'resource link, string user, string password, string database | bool',
+\ 'maxdb_character_set_name(': 'resource link | string',
+\ 'maxdb_close(': 'resource link | bool',
+\ 'maxdb_commit(': 'resource link | bool',
+\ 'maxdb_connect(': '[string host [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]] | resource',
+\ 'maxdb_connect_errno(': 'void  | int',
+\ 'maxdb_connect_error(': 'void  | string',
+\ 'maxdb_data_seek(': 'resource result, int offset | bool',
+\ 'maxdb_debug(': 'string debug | void',
+\ 'maxdb_disable_reads_from_master(': 'resource link | void',
+\ 'maxdb_disable_rpl_parse(': 'resource link | void',
+\ 'maxdb_dump_debug_info(': 'resource link | bool',
+\ 'maxdb_embedded_connect(': '[string dbname] | resource',
+\ 'maxdb_enable_reads_from_master(': 'resource link | void',
+\ 'maxdb_enable_rpl_parse(': 'resource link | void',
+\ 'maxdb_errno(': 'resource link | int',
+\ 'maxdb_error(': 'resource link | string',
+\ 'maxdb_fetch_array(': 'resource result [, int resulttype] | mixed',
+\ 'maxdb_fetch_assoc(': 'resource result | array',
+\ 'maxdb_fetch_field(': 'resource result | mixed',
+\ 'maxdb_fetch_field_direct(': 'resource result, int fieldnr | mixed',
+\ 'maxdb_fetch_fields(': 'resource result | mixed',
+\ 'maxdb_fetch_lengths(': 'resource result | mixed',
+\ 'maxdb_fetch_object(': 'object result | mixed',
+\ 'maxdb_fetch_row(': 'resource result | mixed',
+\ 'maxdb_field_count(': 'object link | int',
+\ 'maxdb_field_seek(': 'object result, int fieldnr | int',
+\ 'maxdb_field_tell(': 'resource result | int',
+\ 'maxdb_free_result(': 'resource result | void',
+\ 'maxdb_get_client_info(': 'void  | string',
+\ 'maxdb_get_client_version(': 'void  | int',
+\ 'maxdb_get_host_info(': 'resource link | string',
+\ 'maxdb_get_proto_info(': 'resource link | int',
+\ 'maxdb_get_server_info(': 'resource link | string',
+\ 'maxdb_get_server_version(': 'resource link | int',
+\ 'maxdb_info(': 'resource link | string',
+\ 'maxdb_init(': 'void  | resource',
+\ 'maxdb_insert_id(': 'resource link | mixed',
+\ 'maxdb_kill(': 'resource link, int processid | bool',
+\ 'maxdb_master_query(': 'resource link, string query | bool',
+\ 'maxdb_more_results(': 'resource link | bool',
+\ 'maxdb_multi_query(': 'resource link, string query | bool',
+\ 'maxdb_next_result(': 'resource link | bool',
+\ 'maxdb_num_fields(': 'resource result | int',
+\ 'maxdb_num_rows(': 'resource result | mixed',
+\ 'maxdb_options(': 'resource link, int option, mixed value | bool',
+\ 'maxdb_ping(': 'resource link | bool',
+\ 'maxdb_prepare(': 'resource link, string query | mixed',
+\ 'maxdb_query(': 'resource link, string query [, int resultmode] | mixed',
+\ 'maxdb_real_connect(': 'resource link [, string hostname [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]] | bool',
+\ 'maxdb_real_escape_string(': 'resource link, string escapestr | string',
+\ 'maxdb_real_query(': 'resource link, string query | bool',
+\ 'maxdb_report(': 'int flags | bool',
+\ 'maxdb_rollback(': 'resource link | bool',
+\ 'maxdb_rpl_parse_enabled(': 'resource link | int',
+\ 'maxdb_rpl_probe(': 'resource link | bool',
+\ 'maxdb_rpl_query_type(': 'string query | int',
+\ 'maxdb_select_db(': 'resource link, string dbname | bool',
+\ 'maxdb_send_query(': 'resource link, string query | bool',
+\ 'maxdb_server_end(': 'void  | void',
+\ 'maxdb_server_init(': '[array server [, array groups]] | bool',
+\ 'maxdb_sqlstate(': 'resource link | string',
+\ 'maxdb_ssl_set(': 'resource link [, string key [, string cert [, string ca [, string capath [, string cipher]]]]] | bool',
+\ 'maxdb_stat(': 'resource link | mixed',
+\ 'maxdb_stmt_affected_rows(': 'resource stmt | mixed',
+\ 'maxdb_stmt_bind_param(': 'resource stmt, string types, mixed &var1 [, mixed &...] | bool',
+\ 'maxdb_stmt_bind_result(': 'resource stmt, mixed &var1 [, mixed &...] | bool',
+\ 'maxdb_stmt_close(': 'resource stmt | bool',
+\ 'maxdb_stmt_data_seek(': 'resource statement, int offset | bool',
+\ 'maxdb_stmt_errno(': 'resource stmt | int',
+\ 'maxdb_stmt_error(': 'resource stmt | string',
+\ 'maxdb_stmt_execute(': 'resource stmt | bool',
+\ 'maxdb_stmt_fetch(': 'resource stmt | mixed',
+\ 'maxdb_stmt_free_result(': 'resource stmt | void',
+\ 'maxdb_stmt_init(': 'resource link | resource',
+\ 'maxdb_stmt_num_rows(': 'resource stmt | mixed',
+\ 'maxdb_stmt_param_count(': 'resource stmt | int',
+\ 'maxdb_stmt_prepare(': 'resource stmt, string query | bool',
+\ 'maxdb_stmt_reset(': 'resource stmt | bool',
+\ 'maxdb_stmt_result_metadata(': 'resource stmt | mixed',
+\ 'maxdb_stmt_send_long_data(': 'resource stmt, int param_nr [, string data] | bool',
+\ 'maxdb_stmt_sqlstate(': 'resource stmt | string',
+\ 'maxdb_stmt_store_result(': 'resource stmt | bool',
+\ 'maxdb_store_result(': 'resource link | resource',
+\ 'maxdb_thread_id(': 'resource link | int',
+\ 'maxdb_thread_safe(': 'void  | bool',
+\ 'maxdb_use_result(': 'resource link | mixed',
+\ 'maxdb_warning_count(': 'resource link | int',
+\ 'mb_convert_case(': 'string str, int mode [, string encoding] | string',
+\ 'mb_convert_encoding(': 'string str, string to_encoding [, mixed from_encoding] | string',
+\ 'mb_convert_kana(': 'string str [, string option [, string encoding]] | string',
+\ 'mb_convert_variables(': 'string to_encoding, mixed from_encoding, mixed &vars [, mixed &...] | string',
+\ 'mb_decode_mimeheader(': 'string str | string',
+\ 'mb_decode_numericentity(': 'string str, array convmap [, string encoding] | string',
+\ 'mb_detect_encoding(': 'string str [, mixed encoding_list [, bool strict]] | string',
+\ 'mb_detect_order(': '[mixed encoding_list] | array',
+\ 'mb_encode_mimeheader(': 'string str [, string charset [, string transfer_encoding [, string linefeed]]] | string',
+\ 'mb_encode_numericentity(': 'string str, array convmap [, string encoding] | string',
+\ 'mb_ereg(': 'string pattern, string string [, array regs] | int',
+\ 'mb_eregi(': 'string pattern, string string [, array regs] | int',
+\ 'mb_eregi_replace(': 'string pattern, string replace, string string | string',
+\ 'mb_ereg_match(': 'string pattern, string string [, string option] | bool',
+\ 'mb_ereg_replace(': 'string pattern, string replacement, string string [, array option] | string',
+\ 'mb_ereg_search(': '[string pattern [, string option]] | bool',
+\ 'mb_ereg_search_getpos(': 'void  | array',
+\ 'mb_ereg_search_getregs(': 'void  | array',
+\ 'mb_ereg_search_init(': 'string string [, string pattern [, string option]] | array',
+\ 'mb_ereg_search_pos(': '[string pattern [, string option]] | array',
+\ 'mb_ereg_search_regs(': '[string pattern [, string option]] | array',
+\ 'mb_ereg_search_setpos(': 'int position | array',
+\ 'mb_get_info(': '[string type] | string',
+\ 'mb_http_input(': '[string type] | string',
+\ 'mb_http_output(': '[string encoding] | string',
+\ 'mb_internal_encoding(': '[string encoding] | mixed',
+\ 'mb_language(': '[string language] | string',
+\ 'mb_list_encodings(': 'void  | array',
+\ 'mb_output_handler(': 'string contents, int status | string',
+\ 'mb_parse_str(': 'string encoded_string [, array &result] | bool',
+\ 'mb_preferred_mime_name(': 'string encoding | string',
+\ 'mb_regex_encoding(': '[string encoding] | string',
+\ 'mb_regex_set_options(': '[string options] | string',
+\ 'mb_send_mail(': 'string to, string subject, string message [, string additional_headers [, string additional_parameter]] | bool',
+\ 'mb_split(': 'string pattern, string string [, int limit] | array',
+\ 'mb_strcut(': 'string str, int start [, int length [, string encoding]] | string',
+\ 'mb_strimwidth(': 'string str, int start, int width [, string trimmarker [, string encoding]] | string',
+\ 'mb_strlen(': 'string str [, string encoding] | string',
+\ 'mb_strpos(': 'string haystack, string needle [, int offset [, string encoding]] | int',
+\ 'mb_strrpos(': 'string haystack, string needle [, string encoding] | int',
+\ 'mb_strtolower(': 'string str [, string encoding] | string',
+\ 'mb_strtoupper(': 'string str [, string encoding] | string',
+\ 'mb_strwidth(': 'string str [, string encoding] | int',
+\ 'mb_substitute_character(': '[mixed substrchar] | mixed',
+\ 'mb_substr(': 'string str, int start [, int length [, string encoding]] | string',
+\ 'mb_substr_count(': 'string haystack, string needle [, string encoding] | int',
+\ 'mcal_append_event(': 'int mcal_stream | int',
+\ 'mcal_close(': 'int mcal_stream [, int flags] | int',
+\ 'mcal_create_calendar(': 'int stream, string calendar | bool',
+\ 'mcal_date_compare(': 'int a_year, int a_month, int a_day, int b_year, int b_month, int b_day | int',
+\ 'mcal_date_valid(': 'int year, int month, int day | int',
+\ 'mcal_day_of_week(': 'int year, int month, int day | int',
+\ 'mcal_day_of_year(': 'int year, int month, int day | int',
+\ 'mcal_days_in_month(': 'int month, int leap_year | int',
+\ 'mcal_delete_calendar(': 'int stream, string calendar | string',
+\ 'mcal_delete_event(': 'int mcal_stream, int event_id | int',
+\ 'mcal_event_add_attribute(': 'int stream, string attribute, string value | void',
+\ 'mcal_event_init(': 'int stream | int',
+\ 'mcal_event_set_alarm(': 'int stream, int alarm | int',
+\ 'mcal_event_set_category(': 'int stream, string category | int',
+\ 'mcal_event_set_class(': 'int stream, int class | int',
+\ 'mcal_event_set_description(': 'int stream, string description | int',
+\ 'mcal_event_set_end(': 'int stream, int year, int month, int day [, int hour [, int min [, int sec]]] | int',
+\ 'mcal_event_set_recur_daily(': 'int stream, int year, int month, int day, int interval | int',
+\ 'mcal_event_set_recur_monthly_mday(': 'int stream, int year, int month, int day, int interval | int',
+\ 'mcal_event_set_recur_monthly_wday(': 'int stream, int year, int month, int day, int interval | int',
+\ 'mcal_event_set_recur_none(': 'int stream | int',
+\ 'mcal_event_set_recur_weekly(': 'int stream, int year, int month, int day, int interval, int weekdays | int',
+\ 'mcal_event_set_recur_yearly(': 'int stream, int year, int month, int day, int interval | int',
+\ 'mcal_event_set_start(': 'int stream, int year, int month, int day [, int hour [, int min [, int sec]]] | int',
+\ 'mcal_event_set_title(': 'int stream, string title | int',
+\ 'mcal_expunge(': 'int stream | int',
+\ 'mcal_fetch_current_stream_event(': 'int stream | object',
+\ 'mcal_fetch_event(': 'int mcal_stream, int event_id [, int options] | object',
+\ 'mcal_is_leap_year(': 'int year | int',
+\ 'mcal_list_alarms(': 'int mcal_stream [, int begin_year, int begin_month, int begin_day, int end_year, int end_month, int end_day] | array',
+\ 'mcal_list_events(': 'int mcal_stream [, int begin_year, int begin_month, int begin_day, int end_year, int end_month, int end_day] | array',
+\ 'mcal_next_recurrence(': 'int stream, int weekstart, array next | int',
+\ 'mcal_open(': 'string calendar, string username, string password [, int options] | int',
+\ 'mcal_popen(': 'string calendar, string username, string password [, int options] | int',
+\ 'mcal_rename_calendar(': 'int stream, string old_name, string new_name | string',
+\ 'mcal_reopen(': 'int mcal_stream, string calendar [, int options] | int',
+\ 'mcal_snooze(': 'int stream_id, int event_id | bool',
+\ 'mcal_store_event(': 'int mcal_stream | int',
+\ 'mcal_time_valid(': 'int hour, int minutes, int seconds | int',
+\ 'mcal_week_of_year(': 'int day, int month, int year | int',
+\ 'mcrypt_cbc(': 'int cipher, string key, string data, int mode [, string iv] | string',
+\ 'mcrypt_cfb(': 'int cipher, string key, string data, int mode, string iv | string',
+\ 'mcrypt_create_iv(': 'int size [, int source] | string',
+\ 'mcrypt_decrypt(': 'string cipher, string key, string data, string mode [, string iv] | string',
+\ 'mcrypt_ecb(': 'int cipher, string key, string data, int mode | string',
+\ 'mcrypt_enc_get_algorithms_name(': 'resource td | string',
+\ 'mcrypt_enc_get_block_size(': 'resource td | int',
+\ 'mcrypt_enc_get_iv_size(': 'resource td | int',
+\ 'mcrypt_enc_get_key_size(': 'resource td | int',
+\ 'mcrypt_enc_get_modes_name(': 'resource td | string',
+\ 'mcrypt_enc_get_supported_key_sizes(': 'resource td | array',
+\ 'mcrypt_enc_is_block_algorithm(': 'resource td | bool',
+\ 'mcrypt_enc_is_block_algorithm_mode(': 'resource td | bool',
+\ 'mcrypt_enc_is_block_mode(': 'resource td | bool',
+\ 'mcrypt_encrypt(': 'string cipher, string key, string data, string mode [, string iv] | string',
+\ 'mcrypt_enc_self_test(': 'resource td | bool',
+\ 'mcrypt_generic(': 'resource td, string data | string',
+\ 'mcrypt_generic_deinit(': 'resource td | bool',
+\ 'mcrypt_generic_end(': 'resource td | bool',
+\ 'mcrypt_generic_init(': 'resource td, string key, string iv | int',
+\ 'mcrypt_get_block_size(': 'int cipher | int',
+\ 'mcrypt_get_cipher_name(': 'int cipher | string',
+\ 'mcrypt_get_iv_size(': 'string cipher, string mode | int',
+\ 'mcrypt_get_key_size(': 'int cipher | int',
+\ 'mcrypt_list_algorithms(': '[string lib_dir] | array',
+\ 'mcrypt_list_modes(': '[string lib_dir] | array',
+\ 'mcrypt_module_close(': 'resource td | bool',
+\ 'mcrypt_module_get_algo_block_size(': 'string algorithm [, string lib_dir] | int',
+\ 'mcrypt_module_get_algo_key_size(': 'string algorithm [, string lib_dir] | int',
+\ 'mcrypt_module_get_supported_key_sizes(': 'string algorithm [, string lib_dir] | array',
+\ 'mcrypt_module_is_block_algorithm(': 'string algorithm [, string lib_dir] | bool',
+\ 'mcrypt_module_is_block_algorithm_mode(': 'string mode [, string lib_dir] | bool',
+\ 'mcrypt_module_is_block_mode(': 'string mode [, string lib_dir] | bool',
+\ 'mcrypt_module_open(': 'string algorithm, string algorithm_directory, string mode, string mode_directory | resource',
+\ 'mcrypt_module_self_test(': 'string algorithm [, string lib_dir] | bool',
+\ 'mcrypt_ofb(': 'int cipher, string key, string data, int mode, string iv | string',
+\ 'mcve_adduser(': 'resource conn, string admin_password, int usersetup | int',
+\ 'mcve_adduserarg(': 'resource usersetup, int argtype, string argval | int',
+\ 'mcve_bt(': 'resource conn, string username, string password | int',
+\ 'mcve_checkstatus(': 'resource conn, int identifier | int',
+\ 'mcve_chkpwd(': 'resource conn, string username, string password | int',
+\ 'mcve_chngpwd(': 'resource conn, string admin_password, string new_password | int',
+\ 'mcve_completeauthorizations(': 'resource conn, int &array | int',
+\ 'mcve_connect(': 'resource conn | int',
+\ 'mcve_connectionerror(': 'resource conn | string',
+\ 'mcve_deleteresponse(': 'resource conn, int identifier | bool',
+\ 'mcve_deletetrans(': 'resource conn, int identifier | bool',
+\ 'mcve_deleteusersetup(': 'resource usersetup | void',
+\ 'mcve_deluser(': 'resource conn, string admin_password, string username | int',
+\ 'mcve_destroyconn(': 'resource conn | void',
+\ 'mcve_destroyengine(': 'void  | void',
+\ 'mcve_disableuser(': 'resource conn, string admin_password, string username | int',
+\ 'mcve_edituser(': 'resource conn, string admin_password, int usersetup | int',
+\ 'mcve_enableuser(': 'resource conn, string admin_password, string username | int',
+\ 'mcve_force(': 'resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string authcode, string comments, string clerkid, string stationid, int ptrannum | int',
+\ 'mcve_getcell(': 'resource conn, int identifier, string column, int row | string',
+\ 'mcve_getcellbynum(': 'resource conn, int identifier, int column, int row | string',
+\ 'mcve_getcommadelimited(': 'resource conn, int identifier | string',
+\ 'mcve_getheader(': 'resource conn, int identifier, int column_num | string',
+\ 'mcve_getuserarg(': 'resource usersetup, int argtype | string',
+\ 'mcve_getuserparam(': 'resource conn, int identifier, int key | string',
+\ 'mcve_gft(': 'resource conn, string username, string password, int type, string account, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate | int',
+\ 'mcve_gl(': 'int conn, string username, string password, int type, string account, string batch, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate | int',
+\ 'mcve_gut(': 'resource conn, string username, string password, int type, string account, string clerkid, string stationid, string comments, int ptrannum, string startdate, string enddate | int',
+\ 'mcve_initconn(': 'void  | resource',
+\ 'mcve_initengine(': 'string location | int',
+\ 'mcve_initusersetup(': 'void  | resource',
+\ 'mcve_iscommadelimited(': 'resource conn, int identifier | int',
+\ 'mcve_liststats(': 'resource conn, string admin_password | int',
+\ 'mcve_listusers(': 'resource conn, string admin_password | int',
+\ 'mcve_maxconntimeout(': 'resource conn, int secs | bool',
+\ 'mcve_monitor(': 'resource conn | int',
+\ 'mcve_numcolumns(': 'resource conn, int identifier | int',
+\ 'mcve_numrows(': 'resource conn, int identifier | int',
+\ 'mcve_override(': 'resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum | int',
+\ 'mcve_parsecommadelimited(': 'resource conn, int identifier | int',
+\ 'mcve_ping(': 'resource conn | int',
+\ 'mcve_preauth(': 'resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum | int',
+\ 'mcve_preauthcompletion(': 'resource conn, string username, string password, float finalamount, int sid, int ptrannum | int',
+\ 'mcve_qc(': 'resource conn, string username, string password, string clerkid, string stationid, string comments, int ptrannum | int',
+\ 'mcve_responseparam(': 'resource conn, int identifier, string key | string',
+\ 'mcve_return(': 'int conn, string username, string password, string trackdata, string account, string expdate, float amount, string comments, string clerkid, string stationid, int ptrannum | int',
+\ 'mcve_returncode(': 'resource conn, int identifier | int',
+\ 'mcve_returnstatus(': 'resource conn, int identifier | int',
+\ 'mcve_sale(': 'resource conn, string username, string password, string trackdata, string account, string expdate, float amount, string street, string zip, string cv, string comments, string clerkid, string stationid, int ptrannum | int',
+\ 'mcve_setblocking(': 'resource conn, int tf | int',
+\ 'mcve_setdropfile(': 'resource conn, string directory | int',
+\ 'mcve_setip(': 'resource conn, string host, int port | int',
+\ 'mcve_setssl(': 'resource conn, string host, int port | int',
+\ 'mcve_setssl_files(': 'string sslkeyfile, string sslcertfile | int',
+\ 'mcve_settimeout(': 'resource conn, int seconds | int',
+\ 'mcve_settle(': 'resource conn, string username, string password, string batch | int',
+\ 'mcve_text_avs(': 'string code | string',
+\ 'mcve_text_code(': 'string code | string',
+\ 'mcve_text_cv(': 'int code | string',
+\ 'mcve_transactionauth(': 'resource conn, int identifier | string',
+\ 'mcve_transactionavs(': 'resource conn, int identifier | int',
+\ 'mcve_transactionbatch(': 'resource conn, int identifier | int',
+\ 'mcve_transactioncv(': 'resource conn, int identifier | int',
+\ 'mcve_transactionid(': 'resource conn, int identifier | int',
+\ 'mcve_transactionitem(': 'resource conn, int identifier | int',
+\ 'mcve_transactionssent(': 'resource conn | int',
+\ 'mcve_transactiontext(': 'resource conn, int identifier | string',
+\ 'mcve_transinqueue(': 'resource conn | int',
+\ 'mcve_transnew(': 'resource conn | int',
+\ 'mcve_transparam(': 'resource conn, int identifier, int key | int',
+\ 'mcve_transsend(': 'resource conn, int identifier | int',
+\ 'mcve_ub(': 'resource conn, string username, string password | int',
+\ 'mcve_uwait(': 'int microsecs | int',
+\ 'mcve_verifyconnection(': 'resource conn, int tf | bool',
+\ 'mcve_verifysslcert(': 'resource conn, int tf | bool',
+\ 'mcve_void(': 'resource conn, string username, string password, int sid, int ptrannum | int',
+\ 'md5(': 'string str [, bool raw_output] | string',
+\ 'md5_file(': 'string filename [, bool raw_output] | string',
+\ 'mdecrypt_generic(': 'resource td, string data | string',
+\ 'memcache_debug(': 'int on_off | bool',
+\ 'memory_get_usage(': 'void  | int',
+\ 'metaphone(': 'string str [, int phones] | string',
+\ 'method_exists(': 'object object, string method_name | bool',
+\ 'mhash(': 'int hash, string data [, string key] | string',
+\ 'mhash_count(': 'void  | int',
+\ 'mhash_get_block_size(': 'int hash | int',
+\ 'mhash_get_hash_name(': 'int hash | string',
+\ 'mhash_keygen_s2k(': 'int hash, string password, string salt, int bytes | string',
+\ 'microtime(': '[bool get_as_float] | mixed',
+\ 'mime_content_type(': 'string filename | string',
+\ 'min(': 'number arg1, number arg2 [, number ...] | mixed',
+\ 'ming_setcubicthreshold(': 'int threshold | void',
+\ 'ming_setscale(': 'int scale | void',
+\ 'ming_useswfversion(': 'int version | void',
+\ 'mkdir(': 'string pathname [, int mode [, bool recursive [, resource context]]] | bool',
+\ 'mktime(': '[int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] | int',
+\ 'money_format(': 'string format, float number | string',
+\ 'move_uploaded_file(': 'string filename, string destination | bool',
+\ 'msession_connect(': 'string host, string port | bool',
+\ 'msession_count(': 'void  | int',
+\ 'msession_create(': 'string session | bool',
+\ 'msession_destroy(': 'string name | bool',
+\ 'msession_disconnect(': 'void  | void',
+\ 'msession_find(': 'string name, string value | array',
+\ 'msession_get(': 'string session, string name, string value | string',
+\ 'msession_get_array(': 'string session | array',
+\ 'msession_get_data(': 'string session | string',
+\ 'msession_inc(': 'string session, string name | string',
+\ 'msession_list(': 'void  | array',
+\ 'msession_listvar(': 'string name | array',
+\ 'msession_lock(': 'string name | int',
+\ 'msession_plugin(': 'string session, string val [, string param] | string',
+\ 'msession_randstr(': 'int param | string',
+\ 'msession_set(': 'string session, string name, string value | bool',
+\ 'msession_set_array(': 'string session, array tuples | bool',
+\ 'msession_set_data(': 'string session, string value | bool',
+\ 'msession_timeout(': 'string session [, int param] | int',
+\ 'msession_uniq(': 'int param | string',
+\ 'msession_unlock(': 'string session, int key | int',
+\ 'msg_get_queue(': 'int key [, int perms] | resource',
+\ 'msg_receive(': 'resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed &message [, bool unserialize [, int flags [, int &errorcode]]] | bool',
+\ 'msg_remove_queue(': 'resource queue | bool',
+\ 'msg_send(': 'resource queue, int msgtype, mixed message [, bool serialize [, bool blocking [, int &errorcode]]] | bool',
+\ 'msg_set_queue(': 'resource queue, array data | bool',
+\ 'msg_stat_queue(': 'resource queue | array',
+\ 'msql_affected_rows(': 'resource query_identifier | int',
+\ 'msql_close(': '[resource link_identifier] | int',
+\ 'msql_connect(': '[string hostname] | int',
+\ 'msql_create_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'msql_data_seek(': 'resource query_identifier, int row_number | bool',
+\ 'msql_db_query(': 'string database, string query [, resource link_identifier] | resource',
+\ 'msql_drop_db(': 'string database_name [, resource link_identifier] | int',
+\ 'msql_error(': 'void  | string',
+\ 'msql_fetch_array(': 'resource query_identifier [, int result_type] | array',
+\ 'msql_fetch_field(': 'resource query_identifier [, int field_offset] | object',
+\ 'msql_fetch_object(': 'resource query_identifier [, int result_type] | object',
+\ 'msql_fetch_row(': 'resource query_identifier [, int result_type] | array',
+\ 'msql_field_flags(': 'resource query_identifier, int field_offset | string',
+\ 'msql_field_len(': 'resource query_identifier, int field_offset | int',
+\ 'msql_field_name(': 'resource query_identifier, int field | string',
+\ 'msql_field_seek(': 'int query_identifier, int field_offset | int',
+\ 'msql_field_table(': 'int query_identifier, int field | int',
+\ 'msql_field_type(': 'resource query_identifier, int field_offset | string',
+\ 'msql_free_result(': 'resource query_identifier | int',
+\ 'msql_list_dbs(': '[resource link_identifier] | resource',
+\ 'msql_list_fields(': 'string database, string tablename [, resource link_identifier] | resource',
+\ 'msql_list_tables(': 'string database [, resource link_identifier] | resource',
+\ 'msql_num_fields(': 'resource query_identifier | int',
+\ 'msql_num_rows(': 'resource query_identifier | int',
+\ 'msql_pconnect(': '[string server [, string username [, string password]]] | int',
+\ 'msql_query(': 'string query [, resource link_identifier] | resource',
+\ 'msql_result(': 'resource query_identifier, int row [, mixed field] | string',
+\ 'msql_select_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'mssql_bind(': 'resource stmt, string param_name, mixed &var, int type [, int is_output [, int is_null [, int maxlen]]] | bool',
+\ 'mssql_close(': '[resource link_identifier] | bool',
+\ 'mssql_connect(': '[string servername [, string username [, string password]]] | int',
+\ 'mssql_data_seek(': 'resource result_identifier, int row_number | bool',
+\ 'mssql_execute(': 'resource stmt [, bool skip_results] | mixed',
+\ 'mssql_fetch_array(': 'resource result [, int result_type] | array',
+\ 'mssql_fetch_assoc(': 'resource result_id | array',
+\ 'mssql_fetch_batch(': 'resource result_index | int',
+\ 'mssql_fetch_field(': 'resource result [, int field_offset] | object',
+\ 'mssql_fetch_object(': 'resource result | object',
+\ 'mssql_fetch_row(': 'resource result | array',
+\ 'mssql_field_length(': 'resource result [, int offset] | int',
+\ 'mssql_field_name(': 'resource result [, int offset] | string',
+\ 'mssql_field_seek(': 'resource result, int field_offset | bool',
+\ 'mssql_field_type(': 'resource result [, int offset] | string',
+\ 'mssql_free_result(': 'resource result | bool',
+\ 'mssql_free_statement(': 'resource statement | bool',
+\ 'mssql_get_last_message(': 'void  | string',
+\ 'mssql_guid_string(': 'string binary [, int short_format] | string',
+\ 'mssql_init(': 'string sp_name [, resource conn_id] | int',
+\ 'mssql_min_error_severity(': 'int severity | void',
+\ 'mssql_min_message_severity(': 'int severity | void',
+\ 'mssql_next_result(': 'resource result_id | bool',
+\ 'mssql_num_fields(': 'resource result | int',
+\ 'mssql_num_rows(': 'resource result | int',
+\ 'mssql_pconnect(': '[string servername [, string username [, string password]]] | int',
+\ 'mssql_query(': 'string query [, resource link_identifier [, int batch_size]] | resource',
+\ 'mssql_result(': 'resource result, int row, mixed field | string',
+\ 'mssql_rows_affected(': 'resource conn_id | int',
+\ 'mssql_select_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'mt_getrandmax(': 'void  | int',
+\ 'mt_rand(': '[int min, int max] | int',
+\ 'mt_srand(': '[int seed] | void',
+\ 'muscat_close(': 'resource muscat_handle | int',
+\ 'muscat_get(': 'resource muscat_handle | string',
+\ 'muscat_give(': 'resource muscat_handle, string string | int',
+\ 'muscat_setup(': 'int size [, string muscat_dir] | resource',
+\ 'muscat_setup_net(': 'string muscat_host | resource',
+\ 'mysql_affected_rows(': '[resource link_identifier] | int',
+\ 'mysql_change_user(': 'string user, string password [, string database [, resource link_identifier]] | int',
+\ 'mysql_client_encoding(': '[resource link_identifier] | string',
+\ 'mysql_close(': '[resource link_identifier] | bool',
+\ 'mysql_connect(': '[string server [, string username [, string password [, bool new_link [, int client_flags]]]]] | resource',
+\ 'mysql_create_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'mysql_data_seek(': 'resource result, int row_number | bool',
+\ 'mysql_db_name(': 'resource result, int row [, mixed field] | string',
+\ 'mysql_db_query(': 'string database, string query [, resource link_identifier] | resource',
+\ 'mysql_drop_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'mysql_errno(': '[resource link_identifier] | int',
+\ 'mysql_error(': '[resource link_identifier] | string',
+\ 'mysql_escape_string(': 'string unescaped_string | string',
+\ 'mysql_fetch_array(': 'resource result [, int result_type] | array',
+\ 'mysql_fetch_assoc(': 'resource result | array',
+\ 'mysql_fetch_field(': 'resource result [, int field_offset] | object',
+\ 'mysql_fetch_lengths(': 'resource result | array',
+\ 'mysql_fetch_object(': 'resource result | object',
+\ 'mysql_fetch_row(': 'resource result | array',
+\ 'mysql_field_flags(': 'resource result, int field_offset | string',
+\ 'mysql_field_len(': 'resource result, int field_offset | int',
+\ 'mysql_field_name(': 'resource result, int field_offset | string',
+\ 'mysql_field_seek(': 'resource result, int field_offset | int',
+\ 'mysql_field_table(': 'resource result, int field_offset | string',
+\ 'mysql_field_type(': 'resource result, int field_offset | string',
+\ 'mysql_free_result(': 'resource result | bool',
+\ 'mysql_get_client_info(': 'void  | string',
+\ 'mysql_get_host_info(': '[resource link_identifier] | string',
+\ 'mysql_get_proto_info(': '[resource link_identifier] | int',
+\ 'mysql_get_server_info(': '[resource link_identifier] | string',
+\ 'mysqli_affected_rows(': 'mysqli link | mixed',
+\ 'mysqli_autocommit(': 'mysqli link, bool mode | bool',
+\ 'mysqli_change_user(': 'mysqli link, string user, string password, string database | bool',
+\ 'mysqli_character_set_name(': 'mysqli link | string',
+\ 'mysqli_close(': 'mysqli link | bool',
+\ 'mysqli_commit(': 'mysqli link | bool',
+\ 'mysqli_connect(': '[string host [, string username [, string passwd [, string dbname [, int port [, string socket]]]]]] | mysqli',
+\ 'mysqli_connect_errno(': 'void  | int',
+\ 'mysqli_connect_error(': 'void  | string',
+\ 'mysqli_data_seek(': 'mysqli_result result, int offset | bool',
+\ 'mysqli_debug(': 'string debug | void',
+\ 'mysqli_disable_reads_from_master(': 'mysqli link | void',
+\ 'mysqli_disable_rpl_parse(': 'mysqli link | void',
+\ 'mysqli_dump_debug_info(': 'mysqli link | bool',
+\ 'mysqli_embedded_connect(': '[string dbname] | mysqli',
+\ 'mysqli_enable_reads_from_master(': 'mysqli link | void',
+\ 'mysqli_enable_rpl_parse(': 'mysqli link | void',
+\ 'mysqli_errno(': 'mysqli link | int',
+\ 'mysqli_error(': 'mysqli link | string',
+\ 'mysqli_fetch_array(': 'mysqli_result result [, int resulttype] | mixed',
+\ 'mysqli_fetch_assoc(': 'mysqli_result result | array',
+\ 'mysqli_fetch_field(': 'mysqli_result result | mixed',
+\ 'mysqli_fetch_field_direct(': 'mysqli_result result, int fieldnr | mixed',
+\ 'mysqli_fetch_fields(': 'mysqli_result result | mixed',
+\ 'mysqli_fetch_lengths(': 'mysqli_result result | mixed',
+\ 'mysqli_fetch_object(': 'mysqli_result result | mixed',
+\ 'mysqli_fetch_row(': 'mysqli_result result | mixed',
+\ 'mysqli_field_count(': 'mysqli link | int',
+\ 'mysqli_field_seek(': 'mysqli_result result, int fieldnr | int',
+\ 'mysqli_field_tell(': 'mysqli_result result | int',
+\ 'mysqli_free_result(': 'mysqli_result result | void',
+\ 'mysqli_get_client_info(': 'void  | string',
+\ 'mysqli_get_client_version(': 'void  | int',
+\ 'mysqli_get_host_info(': 'mysqli link | string',
+\ 'mysqli_get_proto_info(': 'mysqli link | int',
+\ 'mysqli_get_server_info(': 'mysqli link | string',
+\ 'mysqli_get_server_version(': 'mysqli link | int',
+\ 'mysqli_info(': 'mysqli link | string',
+\ 'mysqli_init(': 'void  | mysqli',
+\ 'mysqli_insert_id(': 'mysqli link | mixed',
+\ 'mysqli_kill(': 'mysqli link, int processid | bool',
+\ 'mysqli_master_query(': 'mysqli link, string query | bool',
+\ 'mysqli_more_results(': 'mysqli link | bool',
+\ 'mysqli_multi_query(': 'mysqli link, string query | bool',
+\ 'mysqli_next_result(': 'mysqli link | bool',
+\ 'mysql_info(': '[resource link_identifier] | string',
+\ 'mysql_insert_id(': '[resource link_identifier] | int',
+\ 'mysqli_num_fields(': 'mysqli_result result | int',
+\ 'mysqli_num_rows(': 'mysqli result | mixed',
+\ 'mysqli_options(': 'mysqli link, int option, mixed value | bool',
+\ 'mysqli_ping(': 'mysqli link | bool',
+\ 'mysqli_prepare(': 'mysqli link, string query | mixed',
+\ 'mysqli_query(': 'mysqli link, string query [, int resultmode] | mixed',
+\ 'mysqli_real_connect(': 'mysqli link [, string hostname [, string username [, string passwd [, string dbname [, int port [, string socket [, int flags]]]]]]] | bool',
+\ 'mysqli_real_escape_string(': 'mysqli link, string escapestr | string',
+\ 'mysqli_real_query(': 'mysqli link, string query | bool',
+\ 'mysqli_report(': 'int flags | bool',
+\ 'mysqli_rollback(': 'mysqli link | bool',
+\ 'mysqli_rpl_parse_enabled(': 'mysqli link | int',
+\ 'mysqli_rpl_probe(': 'mysqli link | bool',
+\ 'mysqli_rpl_query_type(': 'mysqli link, string query | int',
+\ 'mysqli_select_db(': 'mysqli link, string dbname | bool',
+\ 'mysqli_send_query(': 'mysqli link, string query | bool',
+\ 'mysqli_server_end(': 'void  | void',
+\ 'mysqli_server_init(': '[array server [, array groups]] | bool',
+\ 'mysqli_sqlstate(': 'mysqli link | string',
+\ 'mysqli_ssl_set(': 'mysqli link, string key, string cert, string ca, string capath, string cipher | bool',
+\ 'mysqli_stat(': 'mysqli link | mixed',
+\ 'mysqli_stmt_affected_rows(': 'mysqli_stmt stmt | mixed',
+\ 'mysqli_stmt_bind_param(': 'mysqli_stmt stmt, string types, mixed &var1 [, mixed &...] | bool',
+\ 'mysqli_stmt_bind_result(': 'mysqli_stmt stmt, mixed &var1 [, mixed &...] | bool',
+\ 'mysqli_stmt_close(': 'mysqli_stmt stmt | bool',
+\ 'mysqli_stmt_data_seek(': 'mysqli_stmt statement, int offset | bool',
+\ 'mysqli_stmt_errno(': 'mysqli_stmt stmt | int',
+\ 'mysqli_stmt_error(': 'mysqli_stmt stmt | string',
+\ 'mysqli_stmt_execute(': 'mysqli_stmt stmt | bool',
+\ 'mysqli_stmt_fetch(': 'mysqli_stmt stmt | mixed',
+\ 'mysqli_stmt_free_result(': 'mysqli_stmt stmt | void',
+\ 'mysqli_stmt_init(': 'mysqli link | mysqli_stmt',
+\ 'mysqli_stmt_num_rows(': 'mysqli_stmt stmt | mixed',
+\ 'mysqli_stmt_param_count(': 'mysqli_stmt stmt | int',
+\ 'mysqli_stmt_prepare(': 'mysqli_stmt stmt, string query | bool',
+\ 'mysqli_stmt_reset(': 'mysqli_stmt stmt | bool',
+\ 'mysqli_stmt_result_metadata(': 'mysqli_stmt stmt | mixed',
+\ 'mysqli_stmt_send_long_data(': 'mysqli_stmt stmt, int param_nr, string data | bool',
+\ 'mysqli_stmt_sqlstate(': 'mysqli_stmt stmt | string',
+\ 'mysqli_stmt_store_result(': 'mysqli_stmt stmt | bool',
+\ 'mysqli_store_result(': 'mysqli link | mysqli_result',
+\ 'mysqli_thread_id(': 'mysqli link | int',
+\ 'mysqli_thread_safe(': 'void  | bool',
+\ 'mysqli_use_result(': 'mysqli link | mixed',
+\ 'mysqli_warning_count(': 'mysqli link | int',
+\ 'mysql_list_dbs(': '[resource link_identifier] | resource',
+\ 'mysql_list_fields(': 'string database_name, string table_name [, resource link_identifier] | resource',
+\ 'mysql_list_processes(': '[resource link_identifier] | resource',
+\ 'mysql_list_tables(': 'string database [, resource link_identifier] | resource',
+\ 'mysql_num_fields(': 'resource result | int',
+\ 'mysql_num_rows(': 'resource result | int',
+\ 'mysql_pconnect(': '[string server [, string username [, string password [, int client_flags]]]] | resource',
+\ 'mysql_ping(': '[resource link_identifier] | bool',
+\ 'mysql_query(': 'string query [, resource link_identifier] | resource',
+\ 'mysql_real_escape_string(': 'string unescaped_string [, resource link_identifier] | string',
+\ 'mysql_result(': 'resource result, int row [, mixed field] | mixed',
+\ 'mysql_select_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'mysql_stat(': '[resource link_identifier] | string',
+\ 'mysql_tablename(': 'resource result, int i | string',
+\ 'mysql_thread_id(': '[resource link_identifier] | int',
+\ 'mysql_unbuffered_query(': 'string query [, resource link_identifier] | resource',
+\ 'natcasesort(': 'array &array | bool',
+\ 'natsort(': 'array &array | bool',
+\ 'ncurses_addch(': 'int ch | int',
+\ 'ncurses_addchnstr(': 'string s, int n | int',
+\ 'ncurses_addchstr(': 'string s | int',
+\ 'ncurses_addnstr(': 'string s, int n | int',
+\ 'ncurses_addstr(': 'string text | int',
+\ 'ncurses_assume_default_colors(': 'int fg, int bg | int',
+\ 'ncurses_attroff(': 'int attributes | int',
+\ 'ncurses_attron(': 'int attributes | int',
+\ 'ncurses_attrset(': 'int attributes | int',
+\ 'ncurses_baudrate(': 'void  | int',
+\ 'ncurses_beep(': 'void  | int',
+\ 'ncurses_bkgd(': 'int attrchar | int',
+\ 'ncurses_bkgdset(': 'int attrchar | void',
+\ 'ncurses_border(': 'int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner | int',
+\ 'ncurses_bottom_panel(': 'resource panel | int',
+\ 'ncurses_can_change_color(': 'void  | bool',
+\ 'ncurses_cbreak(': 'void  | bool',
+\ 'ncurses_clear(': 'void  | bool',
+\ 'ncurses_clrtobot(': 'void  | bool',
+\ 'ncurses_clrtoeol(': 'void  | bool',
+\ 'ncurses_color_content(': 'int color, int &r, int &g, int &b | int',
+\ 'ncurses_color_set(': 'int pair | int',
+\ 'ncurses_curs_set(': 'int visibility | int',
+\ 'ncurses_define_key(': 'string definition, int keycode | int',
+\ 'ncurses_def_prog_mode(': 'void  | bool',
+\ 'ncurses_def_shell_mode(': 'void  | bool',
+\ 'ncurses_delay_output(': 'int milliseconds | int',
+\ 'ncurses_delch(': 'void  | bool',
+\ 'ncurses_deleteln(': 'void  | bool',
+\ 'ncurses_del_panel(': 'resource panel | int',
+\ 'ncurses_delwin(': 'resource window | int',
+\ 'ncurses_doupdate(': 'void  | bool',
+\ 'ncurses_echo(': 'void  | bool',
+\ 'ncurses_echochar(': 'int character | int',
+\ 'ncurses_end(': 'void  | int',
+\ 'ncurses_erase(': 'void  | bool',
+\ 'ncurses_erasechar(': 'void  | string',
+\ 'ncurses_filter(': 'void  | int',
+\ 'ncurses_flash(': 'void  | bool',
+\ 'ncurses_flushinp(': 'void  | bool',
+\ 'ncurses_getch(': 'void  | int',
+\ 'ncurses_getmaxyx(': 'resource window, int &y, int &x | void',
+\ 'ncurses_getmouse(': 'array &mevent | bool',
+\ 'ncurses_getyx(': 'resource window, int &y, int &x | void',
+\ 'ncurses_halfdelay(': 'int tenth | int',
+\ 'ncurses_has_colors(': 'void  | bool',
+\ 'ncurses_has_ic(': 'void  | bool',
+\ 'ncurses_has_il(': 'void  | bool',
+\ 'ncurses_has_key(': 'int keycode | int',
+\ 'ncurses_hide_panel(': 'resource panel | int',
+\ 'ncurses_hline(': 'int charattr, int n | int',
+\ 'ncurses_inch(': 'void  | string',
+\ 'ncurses_init(': 'void  | int',
+\ 'ncurses_init_color(': 'int color, int r, int g, int b | int',
+\ 'ncurses_init_pair(': 'int pair, int fg, int bg | int',
+\ 'ncurses_insch(': 'int character | int',
+\ 'ncurses_insdelln(': 'int count | int',
+\ 'ncurses_insertln(': 'void  | bool',
+\ 'ncurses_insstr(': 'string text | int',
+\ 'ncurses_instr(': 'string &buffer | int',
+\ 'ncurses_isendwin(': 'void  | bool',
+\ 'ncurses_keyok(': 'int keycode, bool enable | int',
+\ 'ncurses_keypad(': 'resource window, bool bf | int',
+\ 'ncurses_killchar(': 'void  | bool',
+\ 'ncurses_longname(': 'void  | string',
+\ 'ncurses_meta(': 'resource window, bool 8bit | int',
+\ 'ncurses_mouseinterval(': 'int milliseconds | int',
+\ 'ncurses_mousemask(': 'int newmask, int &oldmask | int',
+\ 'ncurses_mouse_trafo(': 'int &y, int &x, bool toscreen | bool',
+\ 'ncurses_move(': 'int y, int x | int',
+\ 'ncurses_move_panel(': 'resource panel, int startx, int starty | int',
+\ 'ncurses_mvaddch(': 'int y, int x, int c | int',
+\ 'ncurses_mvaddchnstr(': 'int y, int x, string s, int n | int',
+\ 'ncurses_mvaddchstr(': 'int y, int x, string s | int',
+\ 'ncurses_mvaddnstr(': 'int y, int x, string s, int n | int',
+\ 'ncurses_mvaddstr(': 'int y, int x, string s | int',
+\ 'ncurses_mvcur(': 'int old_y, int old_x, int new_y, int new_x | int',
+\ 'ncurses_mvdelch(': 'int y, int x | int',
+\ 'ncurses_mvgetch(': 'int y, int x | int',
+\ 'ncurses_mvhline(': 'int y, int x, int attrchar, int n | int',
+\ 'ncurses_mvinch(': 'int y, int x | int',
+\ 'ncurses_mvvline(': 'int y, int x, int attrchar, int n | int',
+\ 'ncurses_mvwaddstr(': 'resource window, int y, int x, string text | int',
+\ 'ncurses_napms(': 'int milliseconds | int',
+\ 'ncurses_newpad(': 'int rows, int cols | resource',
+\ 'ncurses_new_panel(': 'resource window | resource',
+\ 'ncurses_newwin(': 'int rows, int cols, int y, int x | resource',
+\ 'ncurses_nl(': 'void  | bool',
+\ 'ncurses_nocbreak(': 'void  | bool',
+\ 'ncurses_noecho(': 'void  | bool',
+\ 'ncurses_nonl(': 'void  | bool',
+\ 'ncurses_noqiflush(': 'void  | int',
+\ 'ncurses_noraw(': 'void  | bool',
+\ 'ncurses_pair_content(': 'int pair, int &f, int &b | int',
+\ 'ncurses_panel_above(': 'resource panel | int',
+\ 'ncurses_panel_below(': 'resource panel | int',
+\ 'ncurses_panel_window(': 'resource panel | int',
+\ 'ncurses_pnoutrefresh(': 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol | int',
+\ 'ncurses_prefresh(': 'resource pad, int pminrow, int pmincol, int sminrow, int smincol, int smaxrow, int smaxcol | int',
+\ 'ncurses_putp(': 'string text | int',
+\ 'ncurses_qiflush(': 'void  | int',
+\ 'ncurses_raw(': 'void  | bool',
+\ 'ncurses_refresh(': 'int ch | int',
+\ 'ncurses_replace_panel(': 'resource panel, resource window | int',
+\ 'ncurses_reset_prog_mode(': 'void  | int',
+\ 'ncurses_reset_shell_mode(': 'void  | int',
+\ 'ncurses_resetty(': 'void  | bool',
+\ 'ncurses_savetty(': 'void  | bool',
+\ 'ncurses_scr_dump(': 'string filename | int',
+\ 'ncurses_scr_init(': 'string filename | int',
+\ 'ncurses_scrl(': 'int count | int',
+\ 'ncurses_scr_restore(': 'string filename | int',
+\ 'ncurses_scr_set(': 'string filename | int',
+\ 'ncurses_show_panel(': 'resource panel | int',
+\ 'ncurses_slk_attr(': 'void  | bool',
+\ 'ncurses_slk_attroff(': 'int intarg | int',
+\ 'ncurses_slk_attron(': 'int intarg | int',
+\ 'ncurses_slk_attrset(': 'int intarg | int',
+\ 'ncurses_slk_clear(': 'void  | bool',
+\ 'ncurses_slk_color(': 'int intarg | int',
+\ 'ncurses_slk_init(': 'int format | bool',
+\ 'ncurses_slk_noutrefresh(': 'void  | bool',
+\ 'ncurses_slk_refresh(': 'void  | bool',
+\ 'ncurses_slk_restore(': 'void  | bool',
+\ 'ncurses_slk_set(': 'int labelnr, string label, int format | bool',
+\ 'ncurses_slk_touch(': 'void  | bool',
+\ 'ncurses_standend(': 'void  | int',
+\ 'ncurses_standout(': 'void  | int',
+\ 'ncurses_start_color(': 'void  | int',
+\ 'ncurses_termattrs(': 'void  | bool',
+\ 'ncurses_termname(': 'void  | string',
+\ 'ncurses_timeout(': 'int millisec | void',
+\ 'ncurses_top_panel(': 'resource panel | int',
+\ 'ncurses_typeahead(': 'int fd | int',
+\ 'ncurses_ungetch(': 'int keycode | int',
+\ 'ncurses_ungetmouse(': 'array mevent | bool',
+\ 'ncurses_update_panels(': 'void  | void',
+\ 'ncurses_use_default_colors(': 'void  | bool',
+\ 'ncurses_use_env(': 'bool flag | void',
+\ 'ncurses_use_extended_names(': 'bool flag | int',
+\ 'ncurses_vidattr(': 'int intarg | int',
+\ 'ncurses_vline(': 'int charattr, int n | int',
+\ 'ncurses_waddch(': 'resource window, int ch | int',
+\ 'ncurses_waddstr(': 'resource window, string str [, int n] | int',
+\ 'ncurses_wattroff(': 'resource window, int attrs | int',
+\ 'ncurses_wattron(': 'resource window, int attrs | int',
+\ 'ncurses_wattrset(': 'resource window, int attrs | int',
+\ 'ncurses_wborder(': 'resource window, int left, int right, int top, int bottom, int tl_corner, int tr_corner, int bl_corner, int br_corner | int',
+\ 'ncurses_wclear(': 'resource window | int',
+\ 'ncurses_wcolor_set(': 'resource window, int color_pair | int',
+\ 'ncurses_werase(': 'resource window | int',
+\ 'ncurses_wgetch(': 'resource window | int',
+\ 'ncurses_whline(': 'resource window, int charattr, int n | int',
+\ 'ncurses_wmouse_trafo(': 'resource window, int &y, int &x, bool toscreen | bool',
+\ 'ncurses_wmove(': 'resource window, int y, int x | int',
+\ 'ncurses_wnoutrefresh(': 'resource window | int',
+\ 'ncurses_wrefresh(': 'resource window | int',
+\ 'ncurses_wstandend(': 'resource window | int',
+\ 'ncurses_wstandout(': 'resource window | int',
+\ 'ncurses_wvline(': 'resource window, int charattr, int n | int',
+\ 'next(': 'array &array | mixed',
+\ 'ngettext(': 'string msgid1, string msgid2, int n | string',
+\ 'nl2br(': 'string string | string',
+\ 'nl_langinfo(': 'int item | string',
+\ 'notes_body(': 'string server, string mailbox, int msg_number | array',
+\ 'notes_copy_db(': 'string from_database_name, string to_database_name | string',
+\ 'notes_create_db(': 'string database_name | bool',
+\ 'notes_create_note(': 'string database_name, string form_name | string',
+\ 'notes_drop_db(': 'string database_name | bool',
+\ 'notes_find_note(': 'string database_name, string name [, string type] | bool',
+\ 'notes_header_info(': 'string server, string mailbox, int msg_number | object',
+\ 'notes_list_msgs(': 'string db | bool',
+\ 'notes_mark_read(': 'string database_name, string user_name, string note_id | string',
+\ 'notes_mark_unread(': 'string database_name, string user_name, string note_id | string',
+\ 'notes_nav_create(': 'string database_name, string name | bool',
+\ 'notes_search(': 'string database_name, string keywords | string',
+\ 'notes_unread(': 'string database_name, string user_name | string',
+\ 'notes_version(': 'string database_name | string',
+\ 'nsapi_request_headers(': 'void  | array',
+\ 'nsapi_response_headers(': 'void  | array',
+\ 'nsapi_virtual(': 'string uri | bool',
+\ 'number_format(': 'float number [, int decimals [, string dec_point, string thousands_sep]] | string',
+\ 'ob_clean(': 'void  | void',
+\ 'ob_end_clean(': 'void  | bool',
+\ 'ob_end_flush(': 'void  | bool',
+\ 'ob_flush(': 'void  | void',
+\ 'ob_get_clean(': 'void  | string',
+\ 'ob_get_contents(': 'void  | string',
+\ 'ob_get_flush(': 'void  | string',
+\ 'ob_get_length(': 'void  | int',
+\ 'ob_get_level(': 'void  | int',
+\ 'ob_get_status(': '[bool full_status] | array',
+\ 'ob_gzhandler(': 'string buffer, int mode | string',
+\ 'ob_iconv_handler(': 'string contents, int status | array',
+\ 'ob_implicit_flush(': '[int flag] | void',
+\ 'ob_list_handlers(': 'void  | array',
+\ 'ob_start(': '[callback output_callback [, int chunk_size [, bool erase]]] | bool',
+\ 'ob_tidyhandler(': 'string input [, int mode] | string',
+\ 'ocibindbyname(': 'resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] | bool',
+\ 'oci_bind_by_name(': 'resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] | bool',
+\ 'ocicancel(': 'resource stmt | bool',
+\ 'oci_cancel(': 'resource stmt | bool',
+\ 'oci_close(': 'resource connection | bool',
+\ 'ocicloselob(': 'void  | bool',
+\ 'ocicollappend(': 'string value | bool',
+\ 'ocicollassign(': 'OCI-Collection from | bool',
+\ 'ocicollassignelem(': 'int ndx, string val | bool',
+\ 'ocicollgetelem(': 'int ndx | string',
+\ 'ocicollmax(': 'void  | int',
+\ 'ocicollsize(': 'void  | int',
+\ 'ocicolltrim(': 'int num | bool',
+\ 'ocicolumnisnull(': 'resource stmt, mixed col | bool',
+\ 'ocicolumnname(': 'resource stmt, int col | string',
+\ 'ocicolumnprecision(': 'resource stmt, int col | int',
+\ 'ocicolumnscale(': 'resource stmt, int col | int',
+\ 'ocicolumnsize(': 'resource stmt, mixed column | int',
+\ 'ocicolumntype(': 'resource stmt, int col | mixed',
+\ 'ocicolumntyperaw(': 'resource stmt, int col | int',
+\ 'ocicommit(': 'resource connection | bool',
+\ 'oci_commit(': 'resource connection | bool',
+\ 'oci_connect(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'ocidefinebyname(': 'resource stmt, string column_name, mixed &variable [, int type] | bool',
+\ 'oci_define_by_name(': 'resource statement, string column_name, mixed &variable [, int type] | bool',
+\ 'ocierror(': '[resource stmt_or_conn_or_global] | array',
+\ 'oci_error(': '[resource source] | array',
+\ 'ociexecute(': 'resource stmt [, int mode] | bool',
+\ 'oci_execute(': 'resource stmt [, int mode] | bool',
+\ 'ocifetch(': 'resource stmt | bool',
+\ 'oci_fetch(': 'resource statement | bool',
+\ 'oci_fetch_all(': 'resource statement, array &output [, int skip [, int maxrows [, int flags]]] | int',
+\ 'oci_fetch_array(': 'resource statement [, int mode] | array',
+\ 'oci_fetch_assoc(': 'resource statement | array',
+\ 'ocifetchinto(': 'resource statement, array &result [, int mode] | int',
+\ 'oci_fetch_object(': 'resource statement | object',
+\ 'oci_fetch_row(': 'resource statement | array',
+\ 'ocifetchstatement(': 'resource stmt, array &output [, int skip [, int maxrows [, int flags]]] | int',
+\ 'oci_field_is_null(': 'resource stmt, mixed field | bool',
+\ 'oci_field_name(': 'resource statement, int field | string',
+\ 'oci_field_precision(': 'resource statement, int field | int',
+\ 'oci_field_scale(': 'resource statement, int field | int',
+\ 'oci_field_size(': 'resource stmt, mixed field | int',
+\ 'oci_field_type(': 'resource stmt, int field | mixed',
+\ 'oci_field_type_raw(': 'resource statement, int field | int',
+\ 'ocifreecollection(': 'void  | bool',
+\ 'ocifreecursor(': 'resource stmt | bool',
+\ 'ocifreedesc(': 'void  | bool',
+\ 'ocifreestatement(': 'resource stmt | bool',
+\ 'oci_free_statement(': 'resource statement | bool',
+\ 'ociinternaldebug(': 'int onoff | void',
+\ 'oci_internal_debug(': 'int onoff | void',
+\ 'ociloadlob(': 'void  | string',
+\ 'oci_lob_copy(': 'OCI-Lob lob_to, OCI-Lob lob_from [, int length] | bool',
+\ 'oci_lob_is_equal(': 'OCI-Lob lob1, OCI-Lob lob2 | bool',
+\ 'ocilogoff(': 'resource connection | bool',
+\ 'ocilogon(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'OCI-ocinewcollection(': 'resource connection, string tdo [, string schema] | Collection',
+\ 'OCI-oci_new_collection(': 'resource connection, string tdo [, string schema] | Collection',
+\ 'oci_new_connect(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'ocinewcursor(': 'resource conn | resource',
+\ 'oci_new_cursor(': 'resource connection | resource',
+\ 'OCI-ocinewdescriptor(': 'resource connection [, int type] | Lob',
+\ 'OCI-oci_new_descriptor(': 'resource connection [, int type] | Lob',
+\ 'ocinlogon(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'ocinumcols(': 'resource stmt | int',
+\ 'oci_num_fields(': 'resource statement | int',
+\ 'oci_num_rows(': 'resource stmt | int',
+\ 'ociparse(': 'resource conn, string query | resource',
+\ 'oci_parse(': 'resource connection, string query | resource',
+\ 'oci_password_change(': 'resource connection, string username, string old_password, string new_password | bool',
+\ 'oci_pconnect(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'ociplogon(': 'string username, string password [, string db [, string charset]] | resource',
+\ 'ociresult(': 'resource statement, mixed col | mixed',
+\ 'oci_result(': 'resource statement, mixed field | mixed',
+\ 'ocirollback(': 'resource connection | bool',
+\ 'oci_rollback(': 'resource connection | bool',
+\ 'ocirowcount(': 'resource stmt | int',
+\ 'ocisavelob(': 'void  | bool',
+\ 'ocisavelobfile(': 'void  | bool',
+\ 'ociserverversion(': 'resource conn | string',
+\ 'oci_server_version(': 'resource connection | string',
+\ 'ocisetprefetch(': 'resource stmt, int rows | bool',
+\ 'oci_set_prefetch(': 'resource statement [, int rows] | bool',
+\ 'ocistatementtype(': 'resource stmt | string',
+\ 'oci_statement_type(': 'resource statement | string',
+\ 'ociwritelobtofile(': '[string filename [, int start [, int length]]] | bool',
+\ 'ociwritetemporarylob(': 'string var [, int lob_type] | bool',
+\ 'octdec(': 'string octal_string | number',
+\ 'odbc_autocommit(': 'resource connection_id [, bool OnOff] | bool',
+\ 'odbc_binmode(': 'resource result_id, int mode | bool',
+\ 'odbc_close(': 'resource connection_id | void',
+\ 'odbc_close_all(': 'void  | void',
+\ 'odbc_columnprivileges(': 'resource connection_id, string qualifier, string owner, string table_name, string column_name | resource',
+\ 'odbc_columns(': 'resource connection_id [, string qualifier [, string schema [, string table_name [, string column_name]]]] | resource',
+\ 'odbc_commit(': 'resource connection_id | bool',
+\ 'odbc_connect(': 'string dsn, string user, string password [, int cursor_type] | resource',
+\ 'odbc_cursor(': 'resource result_id | string',
+\ 'odbc_data_source(': 'resource connection_id, int fetch_type | array',
+\ 'odbc_do(': 'resource conn_id, string query | resource',
+\ 'odbc_error(': '[resource connection_id] | string',
+\ 'odbc_errormsg(': '[resource connection_id] | string',
+\ 'odbc_exec(': 'resource connection_id, string query_string [, int flags] | resource',
+\ 'odbc_execute(': 'resource result_id [, array parameters_array] | bool',
+\ 'odbc_fetch_array(': 'resource result [, int rownumber] | array',
+\ 'odbc_fetch_into(': 'resource result_id, array &result_array [, int rownumber] | int',
+\ 'odbc_fetch_object(': 'resource result [, int rownumber] | object',
+\ 'odbc_fetch_row(': 'resource result_id [, int row_number] | bool',
+\ 'odbc_field_len(': 'resource result_id, int field_number | int',
+\ 'odbc_field_name(': 'resource result_id, int field_number | string',
+\ 'odbc_field_num(': 'resource result_id, string field_name | int',
+\ 'odbc_field_precision(': 'resource result_id, int field_number | int',
+\ 'odbc_field_scale(': 'resource result_id, int field_number | int',
+\ 'odbc_field_type(': 'resource result_id, int field_number | string',
+\ 'odbc_foreignkeys(': 'resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table | resource',
+\ 'odbc_free_result(': 'resource result_id | bool',
+\ 'odbc_gettypeinfo(': 'resource connection_id [, int data_type] | resource',
+\ 'odbc_longreadlen(': 'resource result_id, int length | bool',
+\ 'odbc_next_result(': 'resource result_id | bool',
+\ 'odbc_num_fields(': 'resource result_id | int',
+\ 'odbc_num_rows(': 'resource result_id | int',
+\ 'odbc_pconnect(': 'string dsn, string user, string password [, int cursor_type] | resource',
+\ 'odbc_prepare(': 'resource connection_id, string query_string | resource',
+\ 'odbc_primarykeys(': 'resource connection_id, string qualifier, string owner, string table | resource',
+\ 'odbc_procedurecolumns(': 'resource connection_id [, string qualifier, string owner, string proc, string column] | resource',
+\ 'odbc_procedures(': 'resource connection_id [, string qualifier, string owner, string name] | resource',
+\ 'odbc_result(': 'resource result_id, mixed field | string',
+\ 'odbc_result_all(': 'resource result_id [, string format] | int',
+\ 'odbc_rollback(': 'resource connection_id | bool',
+\ 'odbc_setoption(': 'resource id, int function, int option, int param | bool',
+\ 'odbc_specialcolumns(': 'resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable | resource',
+\ 'odbc_statistics(': 'resource connection_id, string qualifier, string owner, string table_name, int unique, int accuracy | resource',
+\ 'odbc_tableprivileges(': 'resource connection_id, string qualifier, string owner, string name | resource',
+\ 'odbc_tables(': 'resource connection_id [, string qualifier [, string owner [, string name [, string types]]]] | resource',
+\ 'openal_buffer_create(': 'void  | resource',
+\ 'openal_buffer_data(': 'resource buffer, int format, string data, int freq | bool',
+\ 'openal_buffer_destroy(': 'resource buffer | bool',
+\ 'openal_buffer_get(': 'resource buffer, int property | int',
+\ 'openal_buffer_loadwav(': 'resource buffer, string wavfile | bool',
+\ 'openal_context_create(': 'resource device | resource',
+\ 'openal_context_current(': 'resource context | bool',
+\ 'openal_context_destroy(': 'resource context | bool',
+\ 'openal_context_process(': 'resource context | bool',
+\ 'openal_context_suspend(': 'resource context | bool',
+\ 'openal_device_close(': 'resource device | bool',
+\ 'openal_device_open(': '[string device_desc] | resource',
+\ 'openal_listener_get(': 'int property | mixed',
+\ 'openal_listener_set(': 'int property, mixed setting | bool',
+\ 'openal_source_create(': 'void  | resource',
+\ 'openal_source_destroy(': 'resource source | resource',
+\ 'openal_source_get(': 'resource source, int property | mixed',
+\ 'openal_source_pause(': 'resource source | bool',
+\ 'openal_source_play(': 'resource source | bool',
+\ 'openal_source_rewind(': 'resource source | bool',
+\ 'openal_source_set(': 'resource source, int property, mixed setting | bool',
+\ 'openal_source_stop(': 'resource source | bool',
+\ 'openal_stream(': 'resource source, int format, int rate | resource',
+\ 'opendir(': 'string path | resource',
+\ 'openlog(': 'string ident, int option, int facility | int',
+\ 'openssl_csr_export(': 'resource csr, string &out [, bool notext] | bool',
+\ 'openssl_csr_export_to_file(': 'resource csr, string outfilename [, bool notext] | bool',
+\ 'openssl_csr_new(': 'array dn, resource &privkey [, array configargs [, array extraattribs]] | bool',
+\ 'openssl_csr_sign(': 'mixed csr, mixed cacert, mixed priv_key, int days [, array configargs [, int serial]] | resource',
+\ 'openssl_error_string(': 'void  | mixed',
+\ 'openssl_free_key(': 'resource key_identifier | void',
+\ 'openssl_get_privatekey(': 'mixed key [, string passphrase] | resource',
+\ 'openssl_get_publickey(': 'mixed certificate | resource',
+\ 'openssl_open(': 'string sealed_data, string &open_data, string env_key, mixed priv_key_id | bool',
+\ 'openssl_pkcs7_decrypt(': 'string infilename, string outfilename, mixed recipcert [, mixed recipkey] | bool',
+\ 'openssl_pkcs7_encrypt(': 'string infile, string outfile, mixed recipcerts, array headers [, int flags [, int cipherid]] | bool',
+\ 'openssl_pkcs7_sign(': 'string infilename, string outfilename, mixed signcert, mixed privkey, array headers [, int flags [, string extracerts]] | bool',
+\ 'openssl_pkcs7_verify(': 'string filename, int flags [, string outfilename [, array cainfo [, string extracerts]]] | bool',
+\ 'openssl_pkey_export(': 'mixed key, string &out [, string passphrase [, array configargs]] | bool',
+\ 'openssl_pkey_export_to_file(': 'mixed key, string outfilename [, string passphrase [, array configargs]] | bool',
+\ 'openssl_pkey_get_private(': 'mixed key [, string passphrase] | resource',
+\ 'openssl_pkey_get_public(': 'mixed certificate | resource',
+\ 'openssl_pkey_new(': '[array configargs] | resource',
+\ 'openssl_private_decrypt(': 'string data, string &decrypted, mixed key [, int padding] | bool',
+\ 'openssl_private_encrypt(': 'string data, string &crypted, mixed key [, int padding] | bool',
+\ 'openssl_public_decrypt(': 'string data, string &decrypted, mixed key [, int padding] | bool',
+\ 'openssl_public_encrypt(': 'string data, string &crypted, mixed key [, int padding] | bool',
+\ 'openssl_seal(': 'string data, string &sealed_data, array &env_keys, array pub_key_ids | int',
+\ 'openssl_sign(': 'string data, string &signature, mixed priv_key_id [, int signature_alg] | bool',
+\ 'openssl_verify(': 'string data, string signature, mixed pub_key_id | int',
+\ 'openssl_x509_check_private_key(': 'mixed cert, mixed key | bool',
+\ 'openssl_x509_checkpurpose(': 'mixed x509cert, int purpose [, array cainfo [, string untrustedfile]] | bool',
+\ 'openssl_x509_export(': 'mixed x509, string &output [, bool notext] | bool',
+\ 'openssl_x509_export_to_file(': 'mixed x509, string outfilename [, bool notext] | bool',
+\ 'openssl_x509_free(': 'resource x509cert | void',
+\ 'openssl_x509_parse(': 'mixed x509cert [, bool shortnames] | array',
+\ 'openssl_x509_read(': 'mixed x509certdata | resource',
+\ 'ora_bind(': 'resource cursor, string PHP_variable_name, string SQL_parameter_name, int length [, int type] | bool',
+\ 'ora_close(': 'resource cursor | bool',
+\ 'ora_columnname(': 'resource cursor, int column | string',
+\ 'ora_columnsize(': 'resource cursor, int column | int',
+\ 'ora_columntype(': 'resource cursor, int column | string',
+\ 'ora_commit(': 'resource conn | bool',
+\ 'ora_commitoff(': 'resource conn | bool',
+\ 'ora_commiton(': 'resource conn | bool',
+\ 'ora_do(': 'resource conn, string query | resource',
+\ 'ora_error(': '[resource cursor_or_connection] | string',
+\ 'ora_errorcode(': '[resource cursor_or_connection] | int',
+\ 'ora_exec(': 'resource cursor | bool',
+\ 'ora_fetch(': 'resource cursor | bool',
+\ 'ora_fetch_into(': 'resource cursor, array &result [, int flags] | int',
+\ 'ora_getcolumn(': 'resource cursor, int column | mixed',
+\ 'ora_logoff(': 'resource connection | bool',
+\ 'ora_logon(': 'string user, string password | resource',
+\ 'ora_numcols(': 'resource cursor | int',
+\ 'ora_numrows(': 'resource cursor | int',
+\ 'ora_open(': 'resource connection | resource',
+\ 'ora_parse(': 'resource cursor, string sql_statement [, int defer] | bool',
+\ 'ora_plogon(': 'string user, string password | resource',
+\ 'ora_rollback(': 'resource connection | bool',
+\ 'ord(': 'string string | int',
+\ 'output_add_rewrite_var(': 'string name, string value | bool',
+\ 'output_reset_rewrite_vars(': 'void  | bool',
+\ 'overload(': '[string class_name] | void',
+\ 'override_function(': 'string function_name, string function_args, string function_code | bool',
+\ 'ovrimos_close(': 'int connection | void',
+\ 'ovrimos_commit(': 'int connection_id | bool',
+\ 'ovrimos_connect(': 'string host, string db, string user, string password | int',
+\ 'ovrimos_cursor(': 'int result_id | string',
+\ 'ovrimos_exec(': 'int connection_id, string query | int',
+\ 'ovrimos_execute(': 'int result_id [, array parameters_array] | bool',
+\ 'ovrimos_fetch_into(': 'int result_id, array &result_array [, string how [, int rownumber]] | bool',
+\ 'ovrimos_fetch_row(': 'int result_id [, int how [, int row_number]] | bool',
+\ 'ovrimos_field_len(': 'int result_id, int field_number | int',
+\ 'ovrimos_field_name(': 'int result_id, int field_number | string',
+\ 'ovrimos_field_num(': 'int result_id, string field_name | int',
+\ 'ovrimos_field_type(': 'int result_id, int field_number | int',
+\ 'ovrimos_free_result(': 'int result_id | bool',
+\ 'ovrimos_longreadlen(': 'int result_id, int length | bool',
+\ 'ovrimos_num_fields(': 'int result_id | int',
+\ 'ovrimos_num_rows(': 'int result_id | int',
+\ 'ovrimos_prepare(': 'int connection_id, string query | int',
+\ 'ovrimos_result(': 'int result_id, mixed field | string',
+\ 'ovrimos_result_all(': 'int result_id [, string format] | int',
+\ 'ovrimos_rollback(': 'int connection_id | bool',
+\ 'pack(': 'string format [, mixed args [, mixed ...]] | string',
+\ 'parse_ini_file(': 'string filename [, bool process_sections] | array',
+\ 'parsekit_compile_file(': 'string filename [, array &errors [, int options]] | array',
+\ 'parsekit_compile_string(': 'string phpcode [, array &errors [, int options]] | array',
+\ 'parsekit_func_arginfo(': 'mixed function | array',
+\ 'parse_str(': 'string str [, array &arr] | void',
+\ 'parse_url(': 'string url | array',
+\ 'passthru(': 'string command [, int &return_var] | void',
+\ 'pathinfo(': 'string path [, int options] | array',
+\ 'pclose(': 'resource handle | int',
+\ 'pcntl_alarm(': 'int seconds | int',
+\ 'pcntl_exec(': 'string path [, array args [, array envs]] | bool',
+\ 'pcntl_fork(': 'void  | int',
+\ 'pcntl_getpriority(': '[int pid [, int process_identifier]] | int',
+\ 'pcntl_setpriority(': 'int priority [, int pid [, int process_identifier]] | bool',
+\ 'pcntl_signal(': 'int signo, callback handle [, bool restart_syscalls] | bool',
+\ 'pcntl_wait(': 'int &status [, int options] | int',
+\ 'pcntl_waitpid(': 'int pid, int &status [, int options] | int',
+\ 'pcntl_wexitstatus(': 'int status | int',
+\ 'pcntl_wifexited(': 'int status | int',
+\ 'pcntl_wifsignaled(': 'int status | int',
+\ 'pcntl_wifstopped(': 'int status | int',
+\ 'pcntl_wstopsig(': 'int status | int',
+\ 'pcntl_wtermsig(': 'int status | int',
+\ 'pdf_add_bookmark(': 'resource pdfdoc, string text, int parent, int open | int',
+\ 'pdf_add_launchlink(': 'resource pdfdoc, float llx, float lly, float urx, float ury, string filename | bool',
+\ 'pdf_add_locallink(': 'resource pdfdoc, float lowerleftx, float lowerlefty, float upperrightx, float upperrighty, int page, string dest | bool',
+\ 'pdf_add_note(': 'resource pdfdoc, float llx, float lly, float urx, float ury, string contents, string title, string icon, int open | bool',
+\ 'pdf_add_pdflink(': 'resource pdfdoc, float bottom_left_x, float bottom_left_y, float up_right_x, float up_right_y, string filename, int page, string dest | bool',
+\ 'pdf_add_thumbnail(': 'resource pdfdoc, int image | bool',
+\ 'pdf_add_weblink(': 'resource pdfdoc, float lowerleftx, float lowerlefty, float upperrightx, float upperrighty, string url | bool',
+\ 'pdf_arc(': 'resource pdfdoc, float x, float y, float r, float alpha, float beta | bool',
+\ 'pdf_arcn(': 'resource pdfdoc, float x, float y, float r, float alpha, float beta | bool',
+\ 'pdf_attach_file(': 'resource pdfdoc, float llx, float lly, float urx, float ury, string filename, string description, string author, string mimetype, string icon | bool',
+\ 'pdf_begin_page(': 'resource pdfdoc, float width, float height | bool',
+\ 'pdf_begin_pattern(': 'resource pdfdoc, float width, float height, float xstep, float ystep, int painttype | int',
+\ 'pdf_begin_template(': 'resource pdfdoc, float width, float height | int',
+\ 'pdf_circle(': 'resource pdfdoc, float x, float y, float r | bool',
+\ 'pdf_clip(': 'resource pdfdoc | bool',
+\ 'pdf_close(': 'resource pdfdoc | bool',
+\ 'pdf_close_image(': 'resource pdfdoc, int image | void',
+\ 'pdf_closepath(': 'resource pdfdoc | bool',
+\ 'pdf_closepath_fill_stroke(': 'resource pdfdoc | bool',
+\ 'pdf_closepath_stroke(': 'resource pdfdoc | bool',
+\ 'pdf_close_pdi(': 'resource pdfdoc, int dochandle | bool',
+\ 'pdf_close_pdi_page(': 'resource pdfdoc, int pagehandle | bool',
+\ 'pdf_concat(': 'resource pdfdoc, float a, float b, float c, float d, float e, float f | bool',
+\ 'pdf_continue_text(': 'resource pdfdoc, string text | bool',
+\ 'pdf_curveto(': 'resource pdfdoc, float x1, float y1, float x2, float y2, float x3, float y3 | bool',
+\ 'pdf_delete(': 'resource pdfdoc | bool',
+\ 'pdf_end_page(': 'resource pdfdoc | bool',
+\ 'pdf_end_pattern(': 'resource pdfdoc | bool',
+\ 'pdf_end_template(': 'resource pdfdoc | bool',
+\ 'pdf_fill(': 'resource pdfdoc | bool',
+\ 'pdf_fill_stroke(': 'resource pdfdoc | bool',
+\ 'pdf_findfont(': 'resource pdfdoc, string fontname, string encoding, int embed | int',
+\ 'pdf_get_buffer(': 'resource pdfdoc | string',
+\ 'pdf_get_majorversion(': 'void  | int',
+\ 'pdf_get_minorversion(': 'void  | int',
+\ 'pdf_get_parameter(': 'resource pdfdoc, string key, float modifier | string',
+\ 'pdf_get_pdi_parameter(': 'resource pdfdoc, string key, int document, int page, int index | string',
+\ 'pdf_get_pdi_value(': 'resource pdfdoc, string key, int doc, int page, int index | string',
+\ 'pdf_get_value(': 'resource pdfdoc, string key, float modifier | float',
+\ 'pdf_initgraphics(': 'resource pdfdoc | bool',
+\ 'pdf_lineto(': 'resource pdfdoc, float x, float y | bool',
+\ 'pdf_makespotcolor(': 'resource pdfdoc, string spotname | bool',
+\ 'pdf_moveto(': 'resource pdfdoc, float x, float y | bool',
+\ 'pdf_new(': ' | resource',
+\ 'pdf_open_ccitt(': 'resource pdfdoc, string filename, int width, int height, int BitReverse, int k, int Blackls1 | int',
+\ 'pdf_open_file(': 'resource pdfdoc, string filename | bool',
+\ 'pdf_open_image(': 'resource pdfdoc, string imagetype, string source, string data, int length, int width, int height, int components, int bpc, string params | int',
+\ 'pdf_open_image_file(': 'resource pdfdoc, string imagetype, string filename, string stringparam, int intparam | int',
+\ 'pdf_open_memory_image(': 'resource pdfdoc, resource image | int',
+\ 'pdf_open_pdi(': 'resource pdfdoc, string filename, string stringparam, int intparam | int',
+\ 'pdf_open_pdi_page(': 'resource pdfdoc, int dochandle, int pagenumber, string pagelabel | int',
+\ 'pdf_place_image(': 'resource pdfdoc, int image, float x, float y, float scale | bool',
+\ 'pdf_place_pdi_page(': 'resource pdfdoc, int page, float x, float y, float sx, float sy | bool',
+\ 'pdf_rect(': 'resource pdfdoc, float x, float y, float width, float height | bool',
+\ 'pdf_restore(': 'resource pdfdoc | bool',
+\ 'pdf_rotate(': 'resource pdfdoc, float phi | bool',
+\ 'pdf_save(': 'resource pdfdoc | bool',
+\ 'pdf_scale(': 'resource pdfdoc, float x_scale, float y_scale | bool',
+\ 'pdf_set_border_color(': 'resource pdfdoc, float red, float green, float blue | bool',
+\ 'pdf_set_border_dash(': 'resource pdfdoc, float black, float white | bool',
+\ 'pdf_set_border_style(': 'resource pdfdoc, string style, float width | bool',
+\ 'pdf_setcolor(': 'resource pdfdoc, string type, string colorspace, float c1, float c2, float c3, float c4 | bool',
+\ 'pdf_setdash(': 'resource pdfdoc, float b, float w | bool',
+\ 'pdf_setflat(': 'resource pdfdoc, float flatness | bool',
+\ 'pdf_setfont(': 'resource pdfdoc, int font, float size | bool',
+\ 'pdf_setgray(': 'resource pdfdoc, float gray | bool',
+\ 'pdf_setgray_fill(': 'resource pdfdoc, float gray | bool',
+\ 'pdf_setgray_stroke(': 'resource pdfdoc, float gray | bool',
+\ 'pdf_set_info(': 'resource pdfdoc, string key, string value | bool',
+\ 'pdf_setlinecap(': 'resource pdfdoc, int linecap | void',
+\ 'pdf_setlinejoin(': 'resource pdfdoc, int value | bool',
+\ 'pdf_setlinewidth(': 'resource pdfdoc, float width | void',
+\ 'pdf_setmatrix(': 'resource pdfdoc, float a, float b, float c, float d, float e, float f | bool',
+\ 'pdf_setmiterlimit(': 'resource pdfdoc, float miter | bool',
+\ 'pdf_set_parameter(': 'resource pdfdoc, string key, string value | bool',
+\ 'pdf_setrgbcolor(': 'resource pdfdoc, float red_value, float green_value, float blue_value | bool',
+\ 'pdf_setrgbcolor_fill(': 'resource pdfdoc, float red_value, float green_value, float blue_value | bool',
+\ 'pdf_setrgbcolor_stroke(': 'resource pdfdoc, float red_value, float green_value, float blue_value | bool',
+\ 'pdf_set_text_pos(': 'resource pdfdoc, float x, float y | bool',
+\ 'pdf_set_value(': 'resource pdfdoc, string key, float value | bool',
+\ 'pdf_show(': 'resource pdfdoc, string text | bool',
+\ 'pdf_show_boxed(': 'resource pdfdoc, string text, float left, float top, float width, float height, string mode, string feature | int',
+\ 'pdf_show_xy(': 'resource pdfdoc, string text, float x, float y | bool',
+\ 'pdf_skew(': 'resource pdfdoc, float alpha, float beta | bool',
+\ 'pdf_stringwidth(': 'resource pdfdoc, string text, int font, float size | float',
+\ 'pdf_stroke(': 'resource pdfdoc | bool',
+\ 'pdf_translate(': 'resource pdfdoc, float tx, float ty | bool',
+\ 'pfpro_cleanup(': 'void  | void',
+\ 'pfpro_init(': 'void  | void',
+\ 'pfpro_process(': 'array parameters [, string address [, int port [, int timeout [, string proxy_address [, int proxy_port [, string proxy_logon [, string proxy_password]]]]]]] | array',
+\ 'pfpro_process_raw(': 'string parameters [, string address [, int port [, int timeout [, string proxy_address [, int proxy_port [, string proxy_logon [, string proxy_password]]]]]]] | string',
+\ 'pfpro_version(': 'void  | string',
+\ 'pfsockopen(': 'string hostname, int port [, int &errno [, string &errstr [, int timeout]]] | resource',
+\ 'pg_transaction_status(': 'resource connection | int',
+\ 'pg_affected_rows(': 'resource result | int',
+\ 'pg_cancel_query(': 'resource connection | bool',
+\ 'pg_client_encoding(': '[resource connection] | string',
+\ 'pg_close(': '[resource connection] | bool',
+\ 'pg_connect(': 'string connection_string [, int connect_type] | resource',
+\ 'pg_connection_busy(': 'resource connection | bool',
+\ 'pg_connection_reset(': 'resource connection | bool',
+\ 'pg_connection_status(': 'resource connection | int',
+\ 'pg_convert(': 'resource connection, string table_name, array assoc_array [, int options] | array',
+\ 'pg_copy_from(': 'resource connection, string table_name, array rows [, string delimiter [, string null_as]] | bool',
+\ 'pg_copy_to(': 'resource connection, string table_name [, string delimiter [, string null_as]] | array',
+\ 'pg_dbname(': 'resource connection | string',
+\ 'pg_delete(': 'resource connection, string table_name, array assoc_array [, int options] | mixed',
+\ 'pg_end_copy(': '[resource connection] | bool',
+\ 'pg_escape_bytea(': 'string data | string',
+\ 'pg_escape_string(': 'string data | string',
+\ 'pg_execute(': 'string stmtname, array params | resource',
+\ 'pg_fetch_all(': 'resource result | array',
+\ 'pg_fetch_array(': 'resource result [, int row [, int result_type]] | array',
+\ 'pg_fetch_assoc(': 'resource result [, int row] | array',
+\ 'pg_fetch_object(': 'resource result [, int row [, int result_type]] | object',
+\ 'pg_fetch_result(': 'resource result, int row, mixed field | mixed',
+\ 'pg_fetch_row(': 'resource result [, int row] | array',
+\ 'pg_field_is_null(': 'resource result, int row, mixed field | int',
+\ 'pg_field_name(': 'resource result, int field_number | string',
+\ 'pg_field_num(': 'resource result, string field_name | int',
+\ 'pg_field_prtlen(': 'resource result [, int row_number, mixed field_name_or_number] | int',
+\ 'pg_field_size(': 'resource result, int field_number | int',
+\ 'pg_field_type(': 'resource result, int field_number | string',
+\ 'pg_field_type_oid(': 'resource result, int field_number | int',
+\ 'pg_free_result(': 'resource result | bool',
+\ 'pg_get_notify(': 'resource connection [, int result_type] | array',
+\ 'pg_get_pid(': 'resource connection | int',
+\ 'pg_get_result(': '[resource connection] | resource',
+\ 'pg_host(': 'resource connection | string',
+\ 'pg_insert(': 'resource connection, string table_name, array assoc_array [, int options] | bool',
+\ 'pg_last_error(': '[resource connection] | string',
+\ 'pg_last_notice(': 'resource connection | string',
+\ 'pg_last_oid(': 'resource result | int',
+\ 'pg_lo_close(': 'resource large_object | bool',
+\ 'pg_lo_create(': '[resource connection] | int',
+\ 'pg_lo_export(': '[resource connection, int oid, string pathname] | bool',
+\ 'pg_lo_import(': '[resource connection, string pathname] | int',
+\ 'pg_lo_open(': 'resource connection, int oid, string mode | resource',
+\ 'pg_lo_read(': 'resource large_object [, int len] | string',
+\ 'pg_lo_read_all(': 'resource large_object | int',
+\ 'pg_lo_seek(': 'resource large_object, int offset [, int whence] | bool',
+\ 'pg_lo_tell(': 'resource large_object | int',
+\ 'pg_lo_unlink(': 'resource connection, int oid | bool',
+\ 'pg_lo_write(': 'resource large_object, string data [, int len] | int',
+\ 'pg_meta_data(': 'resource connection, string table_name | array',
+\ 'pg_num_fields(': 'resource result | int',
+\ 'pg_num_rows(': 'resource result | int',
+\ 'pg_options(': 'resource connection | string',
+\ 'pg_parameter_status(': '[resource connection, string param_name] | string',
+\ 'pg_pconnect(': 'string connection_string [, int connect_type] | resource',
+\ 'pg_ping(': 'resource connection | bool',
+\ 'pg_port(': 'resource connection | int',
+\ 'pg_prepare(': 'string stmtname, string query | resource',
+\ 'pg_put_line(': 'string data | bool',
+\ 'pg_query(': 'string query | resource',
+\ 'pg_query_params(': 'string query, array params | resource',
+\ 'pg_result_error(': 'resource result | string',
+\ 'pg_result_error_field(': 'resource result, int fieldcode | string',
+\ 'pg_result_seek(': 'resource result, int offset | array',
+\ 'pg_result_status(': 'resource result [, int type] | mixed',
+\ 'pg_select(': 'resource connection, string table_name, array assoc_array [, int options] | array',
+\ 'pg_send_execute(': 'string stmtname, array params | resource',
+\ 'pg_send_prepare(': 'string stmtname, string query | resource',
+\ 'pg_send_query(': 'resource connection, string query | bool',
+\ 'pg_send_query_params(': 'resource connection, string query, array params | bool',
+\ 'pg_set_client_encoding(': 'string encoding | int',
+\ 'pg_set_error_verbosity(': 'int verbosity | int',
+\ 'pg_trace(': 'string pathname [, string mode [, resource connection]] | bool',
+\ 'pg_tty(': 'resource connection | string',
+\ 'pg_unescape_bytea(': 'string data | string',
+\ 'pg_untrace(': '[resource connection] | bool',
+\ 'pg_update(': 'resource connection, string table_name, array data, array condition [, int options] | mixed',
+\ 'pg_version(': '[resource connection] | array',
+\ 'php_check_syntax(': 'string file_name [, string &error_message] | bool',
+\ 'phpcredits(': '[int flag] | void',
+\ 'phpinfo(': '[int what] | int',
+\ 'php_ini_scanned_files(': 'void  | string',
+\ 'php_logo_guid(': 'void  | string',
+\ 'php_sapi_name(': 'void  | string',
+\ 'php_strip_whitespace(': 'string filename | string',
+\ 'php_uname(': '[string mode] | string',
+\ 'phpversion(': '[string extension] | string',
+\ 'pi(': 'void  | float',
+\ 'png2wbmp(': 'string pngname, string wbmpname, int d_height, int d_width, int threshold | int',
+\ 'popen(': 'string command, string mode | resource',
+\ 'posix_access(': 'string file [, int mode] | bool',
+\ 'posix_ctermid(': 'void  | string',
+\ 'posix_getcwd(': 'void  | string',
+\ 'posix_getegid(': 'void  | int',
+\ 'posix_geteuid(': 'void  | int',
+\ 'posix_getgid(': 'void  | int',
+\ 'posix_getgrgid(': 'int gid | array',
+\ 'posix_getgrnam(': 'string name | array',
+\ 'posix_getgroups(': 'void  | array',
+\ 'posix_get_last_error(': 'void  | int',
+\ 'posix_getlogin(': 'void  | string',
+\ 'posix_getpgid(': 'int pid | int',
+\ 'posix_getpgrp(': 'void  | int',
+\ 'posix_getpid(': 'void  | int',
+\ 'posix_getppid(': 'void  | int',
+\ 'posix_getpwnam(': 'string username | array',
+\ 'posix_getpwuid(': 'int uid | array',
+\ 'posix_getrlimit(': 'void  | array',
+\ 'posix_getsid(': 'int pid | int',
+\ 'posix_getuid(': 'void  | int',
+\ 'posix_isatty(': 'int fd | bool',
+\ 'posix_kill(': 'int pid, int sig | bool',
+\ 'posix_mkfifo(': 'string pathname, int mode | bool',
+\ 'posix_setegid(': 'int gid | bool',
+\ 'posix_seteuid(': 'int uid | bool',
+\ 'posix_setgid(': 'int gid | bool',
+\ 'posix_setpgid(': 'int pid, int pgid | int',
+\ 'posix_setsid(': 'void  | int',
+\ 'posix_setuid(': 'int uid | bool',
+\ 'posix_strerror(': 'int errno | string',
+\ 'posix_times(': 'void  | array',
+\ 'posix_ttyname(': 'int fd | string',
+\ 'posix_uname(': 'void  | array',
+\ 'pow(': 'number base, number exp | number',
+\ 'preg_grep(': 'string pattern, array input [, int flags] | array',
+\ 'preg_match(': 'string pattern, string subject [, array &matches [, int flags [, int offset]]] | mixed',
+\ 'preg_match_all(': 'string pattern, string subject, array &matches [, int flags [, int offset]] | int',
+\ 'preg_quote(': 'string str [, string delimiter] | string',
+\ 'preg_replace(': 'mixed pattern, mixed replacement, mixed subject [, int limit [, int &count]] | mixed',
+\ 'preg_replace_callback(': 'mixed pattern, callback callback, mixed subject [, int limit] | mixed',
+\ 'preg_split(': 'string pattern, string subject [, int limit [, int flags]] | array',
+\ 'prev(': 'array &array | mixed',
+\ 'print(': 'string arg | int',
+\ 'printer_abort(': 'resource handle | void',
+\ 'printer_close(': 'resource handle | void',
+\ 'printer_create_brush(': 'int style, string color | mixed',
+\ 'printer_create_dc(': 'resource handle | void',
+\ 'printer_create_font(': 'string face, int height, int width, int font_weight, bool italic, bool underline, bool strikeout, int orientation | mixed',
+\ 'printer_create_pen(': 'int style, int width, string color | mixed',
+\ 'printer_delete_brush(': 'resource handle | bool',
+\ 'printer_delete_dc(': 'resource handle | bool',
+\ 'printer_delete_font(': 'resource handle | bool',
+\ 'printer_delete_pen(': 'resource handle | bool',
+\ 'printer_draw_bmp(': 'resource handle, string filename, int x, int y [, int width, int height] | void',
+\ 'printer_draw_chord(': 'resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad_x, int rad_y, int rad_x1, int rad_y1 | void',
+\ 'printer_draw_elipse(': 'resource handle, int ul_x, int ul_y, int lr_x, int lr_y | void',
+\ 'printer_draw_line(': 'resource printer_handle, int from_x, int from_y, int to_x, int to_y | void',
+\ 'printer_draw_pie(': 'resource handle, int rec_x, int rec_y, int rec_x1, int rec_y1, int rad1_x, int rad1_y, int rad2_x, int rad2_y | void',
+\ 'printer_draw_rectangle(': 'resource handle, int ul_x, int ul_y, int lr_x, int lr_y | void',
+\ 'printer_draw_roundrect(': 'resource handle, int ul_x, int ul_y, int lr_x, int lr_y, int width, int height | void',
+\ 'printer_draw_text(': 'resource printer_handle, string text, int x, int y | void',
+\ 'printer_end_doc(': 'resource handle | bool',
+\ 'printer_end_page(': 'resource handle | bool',
+\ 'printer_get_option(': 'resource handle, string option | mixed',
+\ 'printer_list(': 'int enumtype [, string name [, int level]] | array',
+\ 'printer_logical_fontheight(': 'resource handle, int height | int',
+\ 'printer_open(': '[string devicename] | mixed',
+\ 'printer_select_brush(': 'resource printer_handle, resource brush_handle | void',
+\ 'printer_select_font(': 'resource printer_handle, resource font_handle | void',
+\ 'printer_select_pen(': 'resource printer_handle, resource pen_handle | void',
+\ 'printer_set_option(': 'resource handle, int option, mixed value | bool',
+\ 'printer_start_doc(': 'resource handle [, string document] | bool',
+\ 'printer_start_page(': 'resource handle | bool',
+\ 'printer_write(': 'resource handle, string content | bool',
+\ 'printf(': 'string format [, mixed args [, mixed ...]] | int',
+\ 'print_r(': 'mixed expression [, bool return] | bool',
+\ 'proc_close(': 'resource process | int',
+\ 'proc_get_status(': 'resource process | array',
+\ 'proc_nice(': 'int increment | bool',
+\ 'proc_open(': 'string cmd, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]] | resource',
+\ 'proc_terminate(': 'resource process [, int signal] | int',
+\ 'pspell_add_to_personal(': 'int dictionary_link, string word | int',
+\ 'pspell_add_to_session(': 'int dictionary_link, string word | int',
+\ 'pspell_check(': 'int dictionary_link, string word | bool',
+\ 'pspell_clear_session(': 'int dictionary_link | int',
+\ 'pspell_config_create(': 'string language [, string spelling [, string jargon [, string encoding]]] | int',
+\ 'pspell_config_data_dir(': 'int conf, string directory | bool',
+\ 'pspell_config_dict_dir(': 'int conf, string directory | bool',
+\ 'pspell_config_ignore(': 'int dictionary_link, int n | int',
+\ 'pspell_config_mode(': 'int dictionary_link, int mode | int',
+\ 'pspell_config_personal(': 'int dictionary_link, string file | int',
+\ 'pspell_config_repl(': 'int dictionary_link, string file | int',
+\ 'pspell_config_runtogether(': 'int dictionary_link, bool flag | int',
+\ 'pspell_config_save_repl(': 'int dictionary_link, bool flag | int',
+\ 'pspell_new(': 'string language [, string spelling [, string jargon [, string encoding [, int mode]]]] | int',
+\ 'pspell_new_config(': 'int config | int',
+\ 'pspell_new_personal(': 'string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]] | int',
+\ 'pspell_save_wordlist(': 'int dictionary_link | int',
+\ 'pspell_store_replacement(': 'int dictionary_link, string misspelled, string correct | int',
+\ 'pspell_suggest(': 'int dictionary_link, string word | array',
+\ 'putenv(': 'string setting | void',
+\ 'qdom_error(': 'void  | string',
+\ 'qdom_tree(': 'string doc | QDomDocument',
+\ 'quoted_printable_decode(': 'string str | string',
+\ 'quotemeta(': 'string str | string',
+\ 'rad2deg(': 'float number | float',
+\ 'rand(': '[int min, int max] | int',
+\ 'range(': 'number low, number high [, number step] | array',
+\ 'rar_close(': 'resource rar_file | bool',
+\ 'rar_entry_get(': 'resource rar_file, string entry_name | RarEntry',
+\ 'rar_list(': 'resource rar_file | array',
+\ 'rar_open(': 'string filename [, string password] | resource',
+\ 'rawurldecode(': 'string str | string',
+\ 'rawurlencode(': 'string str | string',
+\ 'readdir(': 'resource dir_handle | string',
+\ 'readfile(': 'string filename [, bool use_include_path [, resource context]] | int',
+\ 'readgzfile(': 'string filename [, int use_include_path] | int',
+\ 'readline(': 'string prompt | string',
+\ 'readline_add_history(': 'string line | void',
+\ 'readline_callback_handler_install(': 'string prompt, callback callback | bool',
+\ 'readline_callback_handler_remove(': 'void  | bool',
+\ 'readline_callback_read_char(': 'void  | void',
+\ 'readline_clear_history(': 'void  | bool',
+\ 'readline_completion_function(': 'callback function | bool',
+\ 'readline_info(': '[string varname [, string newvalue]] | mixed',
+\ 'readline_list_history(': 'void  | array',
+\ 'readline_on_new_line(': 'void  | void',
+\ 'readline_read_history(': '[string filename] | bool',
+\ 'readline_redisplay(': 'void  | void',
+\ 'readline_write_history(': '[string filename] | bool',
+\ 'readlink(': 'string path | string',
+\ 'realpath(': 'string path | string',
+\ 'recode_file(': 'string request, resource input, resource output | bool',
+\ 'recode_string(': 'string request, string string | string',
+\ 'register_shutdown_function(': 'callback function [, mixed parameter [, mixed ...]] | void',
+\ 'register_tick_function(': 'callback function [, mixed arg [, mixed ...]] | void',
+\ 'rename(': 'string oldname, string newname [, resource context] | bool',
+\ 'rename_function(': 'string original_name, string new_name | bool',
+\ 'reset(': 'array &array | mixed',
+\ 'restore_error_handler(': 'void  | bool',
+\ 'restore_exception_handler(': 'void  | bool',
+\ 'restore_include_path(': 'void  | void',
+\ 'rewind(': 'resource handle | bool',
+\ 'rewinddir(': 'resource dir_handle | void',
+\ 'rmdir(': 'string dirname [, resource context] | bool',
+\ 'round(': 'float val [, int precision] | float',
+\ 'rsort(': 'array &array [, int sort_flags] | bool',
+\ 'rtrim(': 'string str [, string charlist] | string',
+\ 'scandir(': 'string directory [, int sorting_order [, resource context]] | array',
+\ 'sem_acquire(': 'resource sem_identifier | bool',
+\ 'sem_get(': 'int key [, int max_acquire [, int perm [, int auto_release]]] | resource',
+\ 'sem_release(': 'resource sem_identifier | bool',
+\ 'sem_remove(': 'resource sem_identifier | bool',
+\ 'serialize(': 'mixed value | string',
+\ 'sesam_affected_rows(': 'string result_id | int',
+\ 'sesam_commit(': 'void  | bool',
+\ 'sesam_connect(': 'string catalog, string schema, string user | bool',
+\ 'sesam_diagnostic(': 'void  | array',
+\ 'sesam_disconnect(': 'void  | bool',
+\ 'sesam_errormsg(': 'void  | string',
+\ 'sesam_execimm(': 'string query | string',
+\ 'sesam_fetch_array(': 'string result_id [, int whence [, int offset]] | array',
+\ 'sesam_fetch_result(': 'string result_id [, int max_rows] | mixed',
+\ 'sesam_fetch_row(': 'string result_id [, int whence [, int offset]] | array',
+\ 'sesam_field_array(': 'string result_id | array',
+\ 'sesam_field_name(': 'string result_id, int index | int',
+\ 'sesam_free_result(': 'string result_id | int',
+\ 'sesam_num_fields(': 'string result_id | int',
+\ 'sesam_query(': 'string query [, bool scrollable] | string',
+\ 'sesam_rollback(': 'void  | bool',
+\ 'sesam_seek_row(': 'string result_id, int whence [, int offset] | bool',
+\ 'sesam_settransaction(': 'int isolation_level, int read_only | bool',
+\ 'session_cache_expire(': '[int new_cache_expire] | int',
+\ 'session_cache_limiter(': '[string cache_limiter] | string',
+\ 'session_decode(': 'string data | bool',
+\ 'session_destroy(': 'void  | bool',
+\ 'session_encode(': 'void  | string',
+\ 'session_get_cookie_params(': 'void  | array',
+\ 'session_id(': '[string id] | string',
+\ 'session_is_registered(': 'string name | bool',
+\ 'session_module_name(': '[string module] | string',
+\ 'session_name(': '[string name] | string',
+\ 'session_regenerate_id(': 'void  | bool',
+\ 'session_register(': 'mixed name [, mixed ...] | bool',
+\ 'session_save_path(': '[string path] | string',
+\ 'session_set_cookie_params(': 'int lifetime [, string path [, string domain [, bool secure]]] | void',
+\ 'session_set_save_handler(': 'string open, string close, string read, string write, string destroy, string gc | bool',
+\ 'session_start(': 'void  | bool',
+\ 'session_unregister(': 'string name | bool',
+\ 'session_unset(': 'void  | void',
+\ 'session_write_close(': 'void  | void',
+\ 'setcookie(': 'string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] | bool',
+\ 'set_error_handler(': 'callback error_handler [, int error_types] | mixed',
+\ 'set_exception_handler(': 'callback exception_handler | string',
+\ 'set_include_path(': 'string new_include_path | string',
+\ 'setlocale(': 'mixed category, string locale [, string ...] | string',
+\ 'set_magic_quotes_runtime(': 'int new_setting | bool',
+\ 'setrawcookie(': 'string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] | bool',
+\ 'set_time_limit(': 'int seconds | void',
+\ 'settype(': 'mixed &var, string type | bool',
+\ 'sha1(': 'string str [, bool raw_output] | string',
+\ 'sha1_file(': 'string filename [, bool raw_output] | string',
+\ 'shell_exec(': 'string cmd | string',
+\ 'shm_attach(': 'int key [, int memsize [, int perm]] | int',
+\ 'shm_detach(': 'int shm_identifier | bool',
+\ 'shm_get_var(': 'int shm_identifier, int variable_key | mixed',
+\ 'shmop_close(': 'int shmid | int',
+\ 'shmop_delete(': 'int shmid | int',
+\ 'shmop_open(': 'int key, string flags, int mode, int size | int',
+\ 'shmop_read(': 'int shmid, int start, int count | string',
+\ 'shmop_size(': 'int shmid | int',
+\ 'shmop_write(': 'int shmid, string data, int offset | int',
+\ 'shm_put_var(': 'int shm_identifier, int variable_key, mixed variable | bool',
+\ 'shm_remove(': 'int shm_identifier | int',
+\ 'shm_remove_var(': 'int shm_identifier, int variable_key | int',
+\ 'shuffle(': 'array &array | bool',
+\ 'similar_text(': 'string first, string second [, float &percent] | int',
+\ 'simplexml_import_dom(': 'DOMNode node [, string class_name] | SimpleXMLElement',
+\ 'simplexml_load_file(': 'string filename [, string class_name [, int options]] | object',
+\ 'simplexml_load_string(': 'string data [, string class_name [, int options]] | object',
+\ 'sin(': 'float arg | float',
+\ 'sinh(': 'float arg | float',
+\ 'sleep(': 'int seconds | void',
+\ 'snmpget(': 'string hostname, string community, string object_id [, int timeout [, int retries]] | string',
+\ 'snmpgetnext(': 'string host, string community, string object_id [, int timeout [, int retries]] | string',
+\ 'snmp_get_quick_print(': 'void  | bool',
+\ 'snmp_get_valueretrieval(': 'void  | int',
+\ 'snmp_read_mib(': 'string filename | int',
+\ 'snmprealwalk(': 'string host, string community, string object_id [, int timeout [, int retries]] | array',
+\ 'snmpset(': 'string hostname, string community, string object_id, string type, mixed value [, int timeout [, int retries]] | bool',
+\ 'snmp_set_enum_print(': 'int enum_print | void',
+\ 'snmp_set_oid_numeric_print(': 'int oid_numeric_print | void',
+\ 'snmp_set_quick_print(': 'bool quick_print | void',
+\ 'snmp_set_valueretrieval(': 'int method | int',
+\ 'snmpwalk(': 'string hostname, string community, string object_id [, int timeout [, int retries]] | array',
+\ 'snmpwalkoid(': 'string hostname, string community, string object_id [, int timeout [, int retries]] | array',
+\ 'socket_accept(': 'resource socket | resource',
+\ 'socket_bind(': 'resource socket, string address [, int port] | bool',
+\ 'socket_clear_error(': '[resource socket] | void',
+\ 'socket_close(': 'resource socket | void',
+\ 'socket_connect(': 'resource socket, string address [, int port] | bool',
+\ 'socket_create(': 'int domain, int type, int protocol | resource',
+\ 'socket_create_listen(': 'int port [, int backlog] | resource',
+\ 'socket_create_pair(': 'int domain, int type, int protocol, array &fd | bool',
+\ 'socket_get_option(': 'resource socket, int level, int optname | mixed',
+\ 'socket_getpeername(': 'resource socket, string &addr [, int &port] | bool',
+\ 'socket_getsockname(': 'resource socket, string &addr [, int &port] | bool',
+\ 'socket_last_error(': '[resource socket] | int',
+\ 'socket_listen(': 'resource socket [, int backlog] | bool',
+\ 'socket_read(': 'resource socket, int length [, int type] | string',
+\ 'socket_recv(': 'resource socket, string &buf, int len, int flags | int',
+\ 'socket_recvfrom(': 'resource socket, string &buf, int len, int flags, string &name [, int &port] | int',
+\ 'socket_select(': 'array &read, array &write, array &except, int tv_sec [, int tv_usec] | int',
+\ 'socket_send(': 'resource socket, string buf, int len, int flags | int',
+\ 'socket_sendto(': 'resource socket, string buf, int len, int flags, string addr [, int port] | int',
+\ 'socket_set_block(': 'resource socket | bool',
+\ 'socket_set_nonblock(': 'resource socket | bool',
+\ 'socket_set_option(': 'resource socket, int level, int optname, mixed optval | bool',
+\ 'socket_shutdown(': 'resource socket [, int how] | bool',
+\ 'socket_strerror(': 'int errno | string',
+\ 'socket_write(': 'resource socket, string buffer [, int length] | int',
+\ 'sort(': 'array &array [, int sort_flags] | bool',
+\ 'soundex(': 'string str | string',
+\ 'spl_classes(': 'void  | array',
+\ 'split(': 'string pattern, string string [, int limit] | array',
+\ 'spliti(': 'string pattern, string string [, int limit] | array',
+\ 'sprintf(': 'string format [, mixed args [, mixed ...]] | string',
+\ 'sqlite_array_query(': 'resource dbhandle, string query [, int result_type [, bool decode_binary]] | array',
+\ 'sqlite_busy_timeout(': 'resource dbhandle, int milliseconds | void',
+\ 'sqlite_changes(': 'resource dbhandle | int',
+\ 'sqlite_close(': 'resource dbhandle | void',
+\ 'sqlite_column(': 'resource result, mixed index_or_name [, bool decode_binary] | mixed',
+\ 'sqlite_create_aggregate(': 'resource dbhandle, string function_name, callback step_func, callback finalize_func [, int num_args] | bool',
+\ 'sqlite_create_function(': 'resource dbhandle, string function_name, callback callback [, int num_args] | bool',
+\ 'sqlite_current(': 'resource result [, int result_type [, bool decode_binary]] | array',
+\ 'sqlite_error_string(': 'int error_code | string',
+\ 'sqlite_escape_string(': 'string item | string',
+\ 'sqlite_exec(': 'resource dbhandle, string query | bool',
+\ 'sqlite_factory(': 'string filename [, int mode [, string &error_message]] | SQLiteDatabase',
+\ 'sqlite_fetch_all(': 'resource result [, int result_type [, bool decode_binary]] | array',
+\ 'sqlite_fetch_array(': 'resource result [, int result_type [, bool decode_binary]] | array',
+\ 'sqlite_fetch_column_types(': 'string table_name, resource dbhandle [, int result_type] | array',
+\ 'sqlite_fetch_object(': 'resource result [, string class_name [, array ctor_params [, bool decode_binary]]] | object',
+\ 'sqlite_fetch_single(': 'resource result [, bool decode_binary] | string',
+\ 'sqlite_field_name(': 'resource result, int field_index | string',
+\ 'sqlite_has_more(': 'resource result | bool',
+\ 'sqlite_has_prev(': 'resource result | bool',
+\ 'sqlite_key(': 'resource result | int',
+\ 'sqlite_last_error(': 'resource dbhandle | int',
+\ 'sqlite_last_insert_rowid(': 'resource dbhandle | int',
+\ 'sqlite_libencoding(': 'void  | string',
+\ 'sqlite_libversion(': 'void  | string',
+\ 'sqlite_next(': 'resource result | bool',
+\ 'sqlite_num_fields(': 'resource result | int',
+\ 'sqlite_num_rows(': 'resource result | int',
+\ 'sqlite_open(': 'string filename [, int mode [, string &error_message]] | resource',
+\ 'sqlite_popen(': 'string filename [, int mode [, string &error_message]] | resource',
+\ 'sqlite_prev(': 'resource result | bool',
+\ 'sqlite_query(': 'resource dbhandle, string query | resource',
+\ 'sqlite_rewind(': 'resource result | bool',
+\ 'sqlite_seek(': 'resource result, int rownum | bool',
+\ 'sqlite_single_query(': 'resource db, string query [, bool first_row_only [, bool decode_binary]] | mixed',
+\ 'sqlite_udf_decode_binary(': 'string data | string',
+\ 'sqlite_udf_encode_binary(': 'string data | string',
+\ 'sqlite_unbuffered_query(': 'resource dbhandle, string query | resource',
+\ 'sqlite_valid(': 'resource result | bool',
+\ 'sql_regcase(': 'string string | string',
+\ 'sqrt(': 'float arg | float',
+\ 'srand(': '[int seed] | void',
+\ 'sscanf(': 'string str, string format [, mixed &...] | mixed',
+\ 'ssh2_auth_hostbased_file(': 'resource session, string username, string hostname, string pubkeyfile, string privkeyfile [, string passphrase [, string local_username]] | bool',
+\ 'ssh2_auth_none(': 'resource session, string username | array',
+\ 'ssh2_auth_password(': 'resource session, string username, string password | bool',
+\ 'ssh2_auth_pubkey_file(': 'resource session, string username, string pubkeyfile, string privkeyfile [, string passphrase] | bool',
+\ 'ssh2_connect(': 'string host [, int port [, array methods [, array callbacks]]] | resource',
+\ 'ssh2_exec(': 'resource session, string command [, array env] | stream',
+\ 'ssh2_fetch_stream(': 'stream channel, int streamid | stream',
+\ 'ssh2_fingerprint(': 'resource session [, int flags] | string',
+\ 'ssh2_methods_negotiated(': 'resource session | array',
+\ 'ssh2_scp_recv(': 'resource session, string remote_file, string local_file | bool',
+\ 'ssh2_scp_send(': 'resource session, string local_file, string remote_file [, int create_mode] | stream',
+\ 'ssh2_sftp(': 'resource session | resource',
+\ 'ssh2_sftp_lstat(': 'resource sftp, string path | array',
+\ 'ssh2_sftp_mkdir(': 'resource sftp, string dirname [, int mode [, bool recursive]] | bool',
+\ 'ssh2_sftp_readlink(': 'resource sftp, string link | string',
+\ 'ssh2_sftp_realpath(': 'resource sftp, string filename | string',
+\ 'ssh2_sftp_rename(': 'resource sftp, string from, string to | bool',
+\ 'ssh2_sftp_rmdir(': 'resource sftp, string dirname | bool',
+\ 'ssh2_sftp_stat(': 'resource sftp, string path | array',
+\ 'ssh2_sftp_symlink(': 'resource sftp, string target, string link | bool',
+\ 'ssh2_sftp_unlink(': 'resource sftp, string filename | bool',
+\ 'ssh2_shell(': 'resource session [, string term_type [, array env [, int width [, int height [, int width_height_type]]]]] | stream',
+\ 'ssh2_tunnel(': 'resource session, string host, int port | stream',
+\ 'stat(': 'string filename | array',
+\ 'strcasecmp(': 'string str1, string str2 | int',
+\ 'strcmp(': 'string str1, string str2 | int',
+\ 'strcoll(': 'string str1, string str2 | int',
+\ 'strcspn(': 'string str1, string str2 [, int start [, int length]] | int',
+\ 'stream_context_create(': '[array options] | resource',
+\ 'stream_context_get_default(': '[array options] | resource',
+\ 'stream_context_get_options(': 'resource stream_or_context | array',
+\ 'stream_context_set_option(': 'resource stream_or_context, string wrapper, string option, mixed value | bool',
+\ 'stream_context_set_params(': 'resource stream_or_context, array params | bool',
+\ 'stream_copy_to_stream(': 'resource source, resource dest [, int maxlength] | int',
+\ 'stream_filter_append(': 'resource stream, string filtername [, int read_write [, mixed params]] | resource',
+\ 'stream_filter_prepend(': 'resource stream, string filtername [, int read_write [, mixed params]] | resource',
+\ 'stream_filter_register(': 'string filtername, string classname | bool',
+\ 'stream_filter_remove(': 'resource stream_filter | bool',
+\ 'stream_get_contents(': 'resource handle [, int maxlength [, int offset]] | string',
+\ 'stream_get_filters(': 'void  | array',
+\ 'stream_get_line(': 'resource handle, int length [, string ending] | string',
+\ 'stream_get_meta_data(': 'resource stream | array',
+\ 'stream_get_transports(': 'void  | array',
+\ 'stream_get_wrappers(': 'void  | array',
+\ 'stream_select(': 'array &read, array &write, array &except, int tv_sec [, int tv_usec] | int',
+\ 'stream_set_blocking(': 'resource stream, int mode | bool',
+\ 'stream_set_timeout(': 'resource stream, int seconds [, int microseconds] | bool',
+\ 'stream_set_write_buffer(': 'resource stream, int buffer | int',
+\ 'stream_socket_accept(': 'resource server_socket [, float timeout [, string &peername]] | resource',
+\ 'stream_socket_client(': 'string remote_socket [, int &errno [, string &errstr [, float timeout [, int flags [, resource context]]]]] | resource',
+\ 'stream_socket_enable_crypto(': 'resource stream, bool enable [, int crypto_type [, resource session_stream]] | mixed',
+\ 'stream_socket_get_name(': 'resource handle, bool want_peer | string',
+\ 'stream_socket_pair(': 'int domain, int type, int protocol | array',
+\ 'stream_socket_recvfrom(': 'resource socket, int length [, int flags [, string &address]] | string',
+\ 'stream_socket_sendto(': 'resource socket, string data [, int flags [, string address]] | int',
+\ 'stream_socket_server(': 'string local_socket [, int &errno [, string &errstr [, int flags [, resource context]]]] | resource',
+\ 'stream_wrapper_register(': 'string protocol, string classname | bool',
+\ 'stream_wrapper_restore(': 'string protocol | bool',
+\ 'stream_wrapper_unregister(': 'string protocol | bool',
+\ 'strftime(': 'string format [, int timestamp] | string',
+\ 'stripcslashes(': 'string str | string',
+\ 'stripos(': 'string haystack, string needle [, int offset] | int',
+\ 'stripslashes(': 'string str | string',
+\ 'strip_tags(': 'string str [, string allowable_tags] | string',
+\ 'str_ireplace(': 'mixed search, mixed replace, mixed subject [, int &count] | mixed',
+\ 'stristr(': 'string haystack, string needle | string',
+\ 'strlen(': 'string string | int',
+\ 'strnatcasecmp(': 'string str1, string str2 | int',
+\ 'strnatcmp(': 'string str1, string str2 | int',
+\ 'strncasecmp(': 'string str1, string str2, int len | int',
+\ 'strncmp(': 'string str1, string str2, int len | int',
+\ 'str_pad(': 'string input, int pad_length [, string pad_string [, int pad_type]] | string',
+\ 'strpbrk(': 'string haystack, string char_list | string',
+\ 'strpos(': 'string haystack, mixed needle [, int offset] | int',
+\ 'strptime(': 'string timestamp, string format | array',
+\ 'strrchr(': 'string haystack, string needle | string',
+\ 'str_repeat(': 'string input, int multiplier | string',
+\ 'str_replace(': 'mixed search, mixed replace, mixed subject [, int &count] | mixed',
+\ 'strrev(': 'string string | string',
+\ 'strripos(': 'string haystack, string needle [, int offset] | int',
+\ 'str_rot13(': 'string str | string',
+\ 'strrpos(': 'string haystack, string needle [, int offset] | int',
+\ 'str_shuffle(': 'string str | string',
+\ 'str_split(': 'string string [, int split_length] | array',
+\ 'strspn(': 'string str1, string str2 [, int start [, int length]] | int',
+\ 'strstr(': 'string haystack, string needle | string',
+\ 'strtok(': 'string str, string token | string',
+\ 'strtolower(': 'string str | string',
+\ 'strtotime(': 'string time [, int now] | int',
+\ 'strtoupper(': 'string string | string',
+\ 'strtr(': 'string str, string from, string to | string',
+\ 'strval(': 'mixed var | string',
+\ 'str_word_count(': 'string string [, int format [, string charlist]] | mixed',
+\ 'substr(': 'string string, int start [, int length] | string',
+\ 'substr_compare(': 'string main_str, string str, int offset [, int length [, bool case_insensitivity]] | int',
+\ 'substr_count(': 'string haystack, string needle | int',
+\ 'substr_replace(': 'string string, string replacement, int start [, int length] | string',
+\ 'swfaction(': 'string script | SWFAction',
+\ 'swf_actiongeturl(': 'string url, string target | void',
+\ 'swf_actiongotoframe(': 'int framenumber | void',
+\ 'swf_actiongotolabel(': 'string label | void',
+\ 'swf_actionnextframe(': 'void  | void',
+\ 'swf_actionplay(': 'void  | void',
+\ 'swf_actionprevframe(': 'void  | void',
+\ 'swf_actionsettarget(': 'string target | void',
+\ 'swf_actionstop(': 'void  | void',
+\ 'swf_actiontogglequality(': 'void  | void',
+\ 'swf_actionwaitforframe(': 'int framenumber, int skipcount | void',
+\ 'swf_addbuttonrecord(': 'int states, int shapeid, int depth | void',
+\ 'swf_addcolor(': 'float r, float g, float b, float a | void',
+\ 'swfbitmap(': 'mixed file [, mixed alphafile] | SWFBitmap',
+\ 'swfbutton(': 'void  | SWFButton',
+\ 'swfbutton_keypress(': 'string str | int',
+\ 'swf_closefile(': '[int return_file] | void',
+\ 'swf_definebitmap(': 'int objid, string image_name | void',
+\ 'swf_definefont(': 'int fontid, string fontname | void',
+\ 'swf_defineline(': 'int objid, float x1, float y1, float x2, float y2, float width | void',
+\ 'swf_definepoly(': 'int objid, array coords, int npoints, float width | void',
+\ 'swf_definerect(': 'int objid, float x1, float y1, float x2, float y2, float width | void',
+\ 'swf_definetext(': 'int objid, string str, int docenter | void',
+\ 'swfdisplayitem(': 'void  | SWFDisplayItem',
+\ 'swf_endbutton(': 'void  | void',
+\ 'swf_enddoaction(': 'void  | void',
+\ 'swf_endshape(': 'void  | void',
+\ 'swf_endsymbol(': 'void  | void',
+\ 'swffill(': 'void  | SWFFill',
+\ 'swffont(': 'string filename | SWFFont',
+\ 'swf_fontsize(': 'float size | void',
+\ 'swf_fontslant(': 'float slant | void',
+\ 'swf_fonttracking(': 'float tracking | void',
+\ 'swf_getbitmapinfo(': 'int bitmapid | array',
+\ 'swf_getfontinfo(': 'void  | array',
+\ 'swf_getframe(': 'void  | int',
+\ 'swfgradient(': 'void  | SWFGradient',
+\ 'swf_labelframe(': 'string name | void',
+\ 'swf_lookat(': 'float view_x, float view_y, float view_z, float reference_x, float reference_y, float reference_z, float twist | void',
+\ 'swf_modifyobject(': 'int depth, int how | void',
+\ 'swfmorph(': 'void  | SWFMorph',
+\ 'swfmovie(': 'void  | SWFMovie',
+\ 'swf_mulcolor(': 'float r, float g, float b, float a | void',
+\ 'swf_nextid(': 'void  | int',
+\ 'swf_oncondition(': 'int transition | void',
+\ 'swf_openfile(': 'string filename, float width, float height, float framerate, float r, float g, float b | void',
+\ 'swf_ortho(': 'float xmin, float xmax, float ymin, float ymax, float zmin, float zmax | void',
+\ 'swf_ortho2(': 'float xmin, float xmax, float ymin, float ymax | void',
+\ 'swf_perspective(': 'float fovy, float aspect, float near, float far | void',
+\ 'swf_placeobject(': 'int objid, int depth | void',
+\ 'swf_polarview(': 'float dist, float azimuth, float incidence, float twist | void',
+\ 'swf_popmatrix(': 'void  | void',
+\ 'swf_posround(': 'int round | void',
+\ 'swf_pushmatrix(': 'void  | void',
+\ 'swf_removeobject(': 'int depth | void',
+\ 'swf_rotate(': 'float angle, string axis | void',
+\ 'swf_scale(': 'float x, float y, float z | void',
+\ 'swf_setfont(': 'int fontid | void',
+\ 'swf_setframe(': 'int framenumber | void',
+\ 'swfshape(': 'void  | SWFShape',
+\ 'swf_shapearc(': 'float x, float y, float r, float ang1, float ang2 | void',
+\ 'swf_shapecurveto(': 'float x1, float y1, float x2, float y2 | void',
+\ 'swf_shapecurveto3(': 'float x1, float y1, float x2, float y2, float x3, float y3 | void',
+\ 'swf_shapefillbitmapclip(': 'int bitmapid | void',
+\ 'swf_shapefillbitmaptile(': 'int bitmapid | void',
+\ 'swf_shapefilloff(': 'void  | void',
+\ 'swf_shapefillsolid(': 'float r, float g, float b, float a | void',
+\ 'swf_shapelinesolid(': 'float r, float g, float b, float a, float width | void',
+\ 'swf_shapelineto(': 'float x, float y | void',
+\ 'swf_shapemoveto(': 'float x, float y | void',
+\ 'swf_showframe(': 'void  | void',
+\ 'swfsprite(': 'void  | SWFSprite',
+\ 'swf_startbutton(': 'int objid, int type | void',
+\ 'swf_startdoaction(': 'void  | void',
+\ 'swf_startshape(': 'int objid | void',
+\ 'swf_startsymbol(': 'int objid | void',
+\ 'swftext(': 'void  | SWFText',
+\ 'swftextfield(': '[int flags] | SWFTextField',
+\ 'swf_textwidth(': 'string str | float',
+\ 'swf_translate(': 'float x, float y, float z | void',
+\ 'swf_viewport(': 'float xmin, float xmax, float ymin, float ymax | void',
+\ 'sybase_affected_rows(': '[resource link_identifier] | int',
+\ 'sybase_close(': '[resource link_identifier] | bool',
+\ 'sybase_connect(': '[string servername [, string username [, string password [, string charset [, string appname]]]]] | resource',
+\ 'sybase_data_seek(': 'resource result_identifier, int row_number | bool',
+\ 'sybase_deadlock_retry_count(': 'int retry_count | void',
+\ 'sybase_fetch_array(': 'resource result | array',
+\ 'sybase_fetch_assoc(': 'resource result | array',
+\ 'sybase_fetch_field(': 'resource result [, int field_offset] | object',
+\ 'sybase_fetch_object(': 'resource result [, mixed object] | object',
+\ 'sybase_fetch_row(': 'resource result | array',
+\ 'sybase_field_seek(': 'resource result, int field_offset | bool',
+\ 'sybase_free_result(': 'resource result | bool',
+\ 'sybase_get_last_message(': 'void  | string',
+\ 'sybase_min_client_severity(': 'int severity | void',
+\ 'sybase_min_error_severity(': 'int severity | void',
+\ 'sybase_min_message_severity(': 'int severity | void',
+\ 'sybase_min_server_severity(': 'int severity | void',
+\ 'sybase_num_fields(': 'resource result | int',
+\ 'sybase_num_rows(': 'resource result | int',
+\ 'sybase_pconnect(': '[string servername [, string username [, string password [, string charset [, string appname]]]]] | resource',
+\ 'sybase_query(': 'string query [, resource link_identifier] | resource',
+\ 'sybase_result(': 'resource result, int row, mixed field | string',
+\ 'sybase_select_db(': 'string database_name [, resource link_identifier] | bool',
+\ 'sybase_set_message_handler(': 'callback handler [, resource connection] | bool',
+\ 'sybase_unbuffered_query(': 'string query, resource link_identifier [, bool store_result] | resource',
+\ 'symlink(': 'string target, string link | bool',
+\ 'syslog(': 'int priority, string message | int',
+\ 'system(': 'string command [, int &return_var] | string',
+\ 'tan(': 'float arg | float',
+\ 'tanh(': 'float arg | float',
+\ 'tcpwrap_check(': 'string daemon, string address [, string user [, bool nodns]] | bool',
+\ 'tempnam(': 'string dir, string prefix | string',
+\ 'textdomain(': 'string text_domain | string',
+\ 'tidy_access_count(': 'tidy object | int',
+\ 'tidy_clean_repair(': 'tidy object | bool',
+\ 'tidy_config_count(': 'tidy object | int',
+\ 'tidy_diagnose(': 'tidy object | bool',
+\ 'tidy_error_count(': 'tidy object | int',
+\ 'tidy_get_body(': 'tidy object | tidyNode',
+\ 'tidy_get_config(': 'tidy object | array',
+\ 'tidy_get_error_buffer(': 'tidy object | string',
+\ 'tidy_get_head(': 'tidy object | tidyNode',
+\ 'tidy_get_html(': 'tidy object | tidyNode',
+\ 'tidy_get_html_ver(': 'tidy object | int',
+\ 'tidy_getopt(': 'tidy object, string option | mixed',
+\ 'tidy_get_output(': 'tidy object | string',
+\ 'tidy_get_release(': 'void  | string',
+\ 'tidy_get_root(': 'tidy object | tidyNode',
+\ 'tidy_get_status(': 'tidy object | int',
+\ 'tidy_is_xhtml(': 'tidy object | bool',
+\ 'tidy_is_xml(': 'tidy object | bool',
+\ 'tidy_load_config(': 'string filename, string encoding | void',
+\ 'tidy_parse_file(': 'string filename [, mixed config [, string encoding [, bool use_include_path]]] | tidy',
+\ 'tidy_parse_string(': 'string input [, mixed config [, string encoding]] | tidy',
+\ 'tidy_repair_file(': 'string filename [, mixed config [, string encoding [, bool use_include_path]]] | string',
+\ 'tidy_repair_string(': 'string data [, mixed config [, string encoding]] | string',
+\ 'tidy_reset_config(': 'void  | bool',
+\ 'tidy_save_config(': 'string filename | bool',
+\ 'tidy_set_encoding(': 'string encoding | bool',
+\ 'tidy_setopt(': 'string option, mixed value | bool',
+\ 'tidy_warning_count(': 'tidy object | int',
+\ 'time(': 'void  | int',
+\ 'time_nanosleep(': 'int seconds, int nanoseconds | mixed',
+\ 'tmpfile(': 'void  | resource',
+\ 'token_get_all(': 'string source | array',
+\ 'token_name(': 'int token | string',
+\ 'touch(': 'string filename [, int time [, int atime]] | bool',
+\ 'trigger_error(': 'string error_msg [, int error_type] | bool',
+\ 'trim(': 'string str [, string charlist] | string',
+\ 'uasort(': 'array &array, callback cmp_function | bool',
+\ 'ucfirst(': 'string str | string',
+\ 'ucwords(': 'string str | string',
+\ 'udm_add_search_limit(': 'resource agent, int var, string val | bool',
+\ 'udm_alloc_agent(': 'string dbaddr [, string dbmode] | resource',
+\ 'udm_alloc_agent_array(': 'array databases | resource',
+\ 'udm_api_version(': 'void  | int',
+\ 'udm_cat_list(': 'resource agent, string category | array',
+\ 'udm_cat_path(': 'resource agent, string category | array',
+\ 'udm_check_charset(': 'resource agent, string charset | bool',
+\ 'udm_check_stored(': 'resource agent, int link, string doc_id | int',
+\ 'udm_clear_search_limits(': 'resource agent | bool',
+\ 'udm_close_stored(': 'resource agent, int link | int',
+\ 'udm_crc32(': 'resource agent, string str | int',
+\ 'udm_errno(': 'resource agent | int',
+\ 'udm_error(': 'resource agent | string',
+\ 'udm_find(': 'resource agent, string query | resource',
+\ 'udm_free_agent(': 'resource agent | int',
+\ 'udm_free_ispell_data(': 'int agent | bool',
+\ 'udm_free_res(': 'resource res | bool',
+\ 'udm_get_doc_count(': 'resource agent | int',
+\ 'udm_get_res_field(': 'resource res, int row, int field | string',
+\ 'udm_get_res_param(': 'resource res, int param | string',
+\ 'udm_hash32(': 'resource agent, string str | int',
+\ 'udm_load_ispell_data(': 'resource agent, int var, string val1, string val2, int flag | bool',
+\ 'udm_open_stored(': 'resource agent, string storedaddr | int',
+\ 'udm_set_agent_param(': 'resource agent, int var, string val | bool',
+\ 'uksort(': 'array &array, callback cmp_function | bool',
+\ 'umask(': '[int mask] | int',
+\ 'uniqid(': '[string prefix [, bool more_entropy]] | string',
+\ 'unixtojd(': '[int timestamp] | int',
+\ 'unlink(': 'string filename [, resource context] | bool',
+\ 'unpack(': 'string format, string data | array',
+\ 'unregister_tick_function(': 'string function_name | void',
+\ 'unserialize(': 'string str | mixed',
+\ 'unset(': 'mixed var [, mixed var [, mixed ...]] | void',
+\ 'urldecode(': 'string str | string',
+\ 'urlencode(': 'string str | string',
+\ 'use_soap_error_handler(': '[bool handler] | void',
+\ 'usleep(': 'int micro_seconds | void',
+\ 'usort(': 'array &array, callback cmp_function | bool',
+\ 'utf8_decode(': 'string data | string',
+\ 'utf8_encode(': 'string data | string',
+\ 'var_dump(': 'mixed expression [, mixed expression [, ...]] | void',
+\ 'var_export(': 'mixed expression [, bool return] | mixed',
+\ 'variant_abs(': 'mixed val | mixed',
+\ 'variant_add(': 'mixed left, mixed right | mixed',
+\ 'variant_and(': 'mixed left, mixed right | mixed',
+\ 'variant_cast(': 'variant variant, int type | variant',
+\ 'variant_cat(': 'mixed left, mixed right | mixed',
+\ 'variant_cmp(': 'mixed left, mixed right [, int lcid [, int flags]] | int',
+\ 'variant_date_from_timestamp(': 'int timestamp | variant',
+\ 'variant_date_to_timestamp(': 'variant variant | int',
+\ 'variant_div(': 'mixed left, mixed right | mixed',
+\ 'variant_eqv(': 'mixed left, mixed right | mixed',
+\ 'variant_fix(': 'mixed variant | mixed',
+\ 'variant_get_type(': 'variant variant | int',
+\ 'variant_idiv(': 'mixed left, mixed right | mixed',
+\ 'variant_imp(': 'mixed left, mixed right | mixed',
+\ 'variant_int(': 'mixed variant | mixed',
+\ 'variant_mod(': 'mixed left, mixed right | mixed',
+\ 'variant_mul(': 'mixed left, mixed right | mixed',
+\ 'variant_neg(': 'mixed variant | mixed',
+\ 'variant_not(': 'mixed variant | mixed',
+\ 'variant_or(': 'mixed left, mixed right | mixed',
+\ 'variant_pow(': 'mixed left, mixed right | mixed',
+\ 'variant_round(': 'mixed variant, int decimals | mixed',
+\ 'variant_set(': 'variant variant, mixed value | void',
+\ 'variant_set_type(': 'variant variant, int type | void',
+\ 'variant_sub(': 'mixed left, mixed right | mixed',
+\ 'variant_xor(': 'mixed left, mixed right | mixed',
+\ 'version_compare(': 'string version1, string version2 [, string operator] | int',
+\ 'vfprintf(': 'resource handle, string format, array args | int',
+\ 'virtual(': 'string filename | int',
+\ 'vpopmail_add_alias_domain(': 'string domain, string aliasdomain | bool',
+\ 'vpopmail_add_alias_domain_ex(': 'string olddomain, string newdomain | bool',
+\ 'vpopmail_add_domain(': 'string domain, string dir, int uid, int gid | bool',
+\ 'vpopmail_add_domain_ex(': 'string domain, string passwd [, string quota [, string bounce [, bool apop]]] | bool',
+\ 'vpopmail_add_user(': 'string user, string domain, string password [, string gecos [, bool apop]] | bool',
+\ 'vpopmail_alias_add(': 'string user, string domain, string alias | bool',
+\ 'vpopmail_alias_del(': 'string user, string domain | bool',
+\ 'vpopmail_alias_del_domain(': 'string domain | bool',
+\ 'vpopmail_alias_get(': 'string alias, string domain | array',
+\ 'vpopmail_alias_get_all(': 'string domain | array',
+\ 'vpopmail_auth_user(': 'string user, string domain, string password [, string apop] | bool',
+\ 'vpopmail_del_domain(': 'string domain | bool',
+\ 'vpopmail_del_domain_ex(': 'string domain | bool',
+\ 'vpopmail_del_user(': 'string user, string domain | bool',
+\ 'vpopmail_error(': 'void  | string',
+\ 'vpopmail_passwd(': 'string user, string domain, string password [, bool apop] | bool',
+\ 'vpopmail_set_user_quota(': 'string user, string domain, string quota | bool',
+\ 'vprintf(': 'string format, array args | int',
+\ 'vsprintf(': 'string format, array args | string',
+\ 'w32api_deftype(': 'string typename, string member1_type, string member1_name [, string ... [, string ...]] | bool',
+\ 'w32api_init_dtype(': 'string typename, mixed value [, mixed ...] | resource',
+\ 'w32api_invoke_function(': 'string funcname, mixed argument [, mixed ...] | mixed',
+\ 'w32api_register_function(': 'string library, string function_name, string return_type | bool',
+\ 'w32api_set_call_method(': 'int method | void',
+\ 'wddx_add_vars(': 'int packet_id, mixed name_var [, mixed ...] | bool',
+\ 'wddx_deserialize(': 'string packet | mixed',
+\ 'wddx_packet_end(': 'int packet_id | string',
+\ 'wddx_packet_start(': '[string comment] | int',
+\ 'wddx_serialize_value(': 'mixed var [, string comment] | string',
+\ 'wddx_serialize_vars(': 'mixed var_name [, mixed ...] | string',
+\ 'wordwrap(': 'string str [, int width [, string break [, bool cut]]] | string',
+\ 'xattr_get(': 'string filename, string name [, int flags] | string',
+\ 'xattr_list(': 'string filename [, int flags] | array',
+\ 'xattr_remove(': 'string filename, string name [, int flags] | bool',
+\ 'xattr_set(': 'string filename, string name, string value [, int flags] | bool',
+\ 'xattr_supported(': 'string filename [, int flags] | bool',
+\ 'xdiff_file_diff(': 'string file1, string file2, string dest [, int context [, bool minimal]] | bool',
+\ 'xdiff_file_diff_binary(': 'string file1, string file2, string dest | bool',
+\ 'xdiff_file_merge3(': 'string file1, string file2, string file3, string dest | mixed',
+\ 'xdiff_file_patch(': 'string file, string patch, string dest [, int flags] | mixed',
+\ 'xdiff_file_patch_binary(': 'string file, string patch, string dest | bool',
+\ 'xdiff_string_diff(': 'string str1, string str2 [, int context [, bool minimal]] | mixed',
+\ 'xdiff_string_diff_binary(': 'string str1, string str2 | mixed',
+\ 'xdiff_string_merge3(': 'string str1, string str2, string str3 [, string &error] | string',
+\ 'xdiff_string_patch(': 'string str, string patch [, int flags [, string &error]] | string',
+\ 'xdiff_string_patch_binary(': 'string str, string patch | string',
+\ 'xml_error_string(': 'int code | string',
+\ 'xml_get_current_byte_index(': 'resource parser | int',
+\ 'xml_get_current_column_number(': 'resource parser | int',
+\ 'xml_get_current_line_number(': 'resource parser | int',
+\ 'xml_get_error_code(': 'resource parser | int',
+\ 'xml_parse(': 'resource parser, string data [, bool is_final] | bool',
+\ 'xml_parse_into_struct(': 'resource parser, string data, array &values [, array &index] | int',
+\ 'xml_parser_create(': '[string encoding] | resource',
+\ 'xml_parser_create_ns(': '[string encoding [, string separator]] | resource',
+\ 'xml_parser_free(': 'resource parser | bool',
+\ 'xml_parser_get_option(': 'resource parser, int option | mixed',
+\ 'xml_parser_set_option(': 'resource parser, int option, mixed value | bool',
+\ 'xmlrpc_decode(': 'string xml [, string encoding] | array',
+\ 'xmlrpc_decode_request(': 'string xml, string &method [, string encoding] | array',
+\ 'xmlrpc_encode(': 'mixed value | string',
+\ 'xmlrpc_encode_request(': 'string method, mixed params [, array output_options] | string',
+\ 'xmlrpc_get_type(': 'mixed value | string',
+\ 'xmlrpc_is_fault(': 'array arg | bool',
+\ 'xmlrpc_parse_method_descriptions(': 'string xml | array',
+\ 'xmlrpc_server_add_introspection_data(': 'resource server, array desc | int',
+\ 'xmlrpc_server_call_method(': 'resource server, string xml, mixed user_data [, array output_options] | mixed',
+\ 'xmlrpc_server_create(': 'void  | resource',
+\ 'xmlrpc_server_destroy(': 'resource server | int',
+\ 'xmlrpc_server_register_introspection_callback(': 'resource server, string function | bool',
+\ 'xmlrpc_server_register_method(': 'resource server, string method_name, string function | bool',
+\ 'xmlrpc_set_type(': 'string &value, string type | bool',
+\ 'xml_set_character_data_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_default_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_element_handler(': 'resource parser, callback start_element_handler, callback end_element_handler | bool',
+\ 'xml_set_end_namespace_decl_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_external_entity_ref_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_notation_decl_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_object(': 'resource parser, object &object | void',
+\ 'xml_set_processing_instruction_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_start_namespace_decl_handler(': 'resource parser, callback handler | bool',
+\ 'xml_set_unparsed_entity_decl_handler(': 'resource parser, callback handler | bool',
+\ 'xpath_eval(': 'XPathContext xpath_context, string xpath_expression [, domnode contextnode] | array',
+\ 'xpath_eval_expression(': 'XPathContext xpath_context, string expression | XPathObject',
+\ 'xpath_new_context(': 'domdocument dom_document | XPathContext',
+\ 'xptr_eval(': '[XPathContext xpath_context, string eval_str] | int',
+\ 'xptr_new_context(': 'void  | XPathContext',
+\ 'xslt_backend_info(': 'void  | string',
+\ 'xslt_backend_name(': 'void  | string',
+\ 'xslt_backend_version(': 'void  | string',
+\ 'xslt_create(': 'void  | resource',
+\ 'xslt_errno(': 'resource xh | int',
+\ 'xslt_error(': 'resource xh | mixed',
+\ 'xslt_free(': 'resource xh | void',
+\ 'xslt_getopt(': 'resource processor | int',
+\ 'xslt_process(': 'resource xh, string xmlcontainer, string xslcontainer [, string resultcontainer [, array arguments [, array parameters]]] | mixed',
+\ 'xslt_set_base(': 'resource xh, string uri | void',
+\ 'xslt_set_encoding(': 'resource xh, string encoding | void',
+\ 'xslt_set_error_handler(': 'resource xh, mixed handler | void',
+\ 'xslt_set_log(': 'resource xh [, mixed log] | void',
+\ 'xslt_set_object(': 'resource processor, object &obj | int',
+\ 'xslt_setopt(': 'resource processor, int newmask | int',
+\ 'xslt_set_sax_handler(': 'resource xh, array handlers | void',
+\ 'xslt_set_sax_handlers(': 'resource processor, array handlers | void',
+\ 'xslt_set_scheme_handler(': 'resource xh, array handlers | void',
+\ 'xslt_set_scheme_handlers(': 'resource processor, array handlers | void',
+\ 'yaz_addinfo(': 'resource id | string',
+\ 'yaz_ccl_conf(': 'resource id, array config | int',
+\ 'yaz_ccl_parse(': 'resource id, string query, array &result | bool',
+\ 'yaz_close(': 'resource id | bool',
+\ 'yaz_connect(': 'string zurl [, mixed options] | resource',
+\ 'yaz_database(': 'resource id, string databases | bool',
+\ 'yaz_element(': 'resource id, string elementset | bool',
+\ 'yaz_errno(': 'resource id | int',
+\ 'yaz_error(': 'resource id | string',
+\ 'yaz_es_result(': 'resource id | array',
+\ 'yaz_get_option(': 'resource id, string name | string',
+\ 'yaz_hits(': 'resource id | int',
+\ 'yaz_itemorder(': 'resource id, array args | int',
+\ 'yaz_present(': 'resource id | bool',
+\ 'yaz_range(': 'resource id, int start, int number | bool',
+\ 'yaz_record(': 'resource id, int pos, string type | string',
+\ 'yaz_scan(': 'resource id, string type, string startterm [, array flags] | int',
+\ 'yaz_scan_result(': 'resource id [, array &result] | array',
+\ 'yaz_schema(': 'resource id, string schema | int',
+\ 'yaz_search(': 'resource id, string type, string query | int',
+\ 'yaz_set_option(': 'resource id, string name, string value | string',
+\ 'yaz_sort(': 'resource id, string criteria | int',
+\ 'yaz_syntax(': 'resource id, string syntax | int',
+\ 'yaz_wait(': '[array &options] | int',
+\ 'yp_all(': 'string domain, string map, string callback | void',
+\ 'yp_cat(': 'string domain, string map | array',
+\ 'yp_errno(': 'void  | int',
+\ 'yp_err_string(': 'int errorcode | string',
+\ 'yp_first(': 'string domain, string map | array',
+\ 'yp_get_default_domain(': 'void  | int',
+\ 'yp_master(': 'string domain, string map | string',
+\ 'yp_match(': 'string domain, string map, string key | string',
+\ 'yp_next(': 'string domain, string map, string key | array',
+\ 'yp_order(': 'string domain, string map | int',
+\ 'zend_logo_guid(': 'void  | string',
+\ 'zend_version(': 'void  | string',
+\ 'zip_close(': 'resource zip | void',
+\ 'zip_entry_close(': 'resource zip_entry | void',
+\ 'zip_entry_compressedsize(': 'resource zip_entry | int',
+\ 'zip_entry_compressionmethod(': 'resource zip_entry | string',
+\ 'zip_entry_filesize(': 'resource zip_entry | int',
+\ 'zip_entry_name(': 'resource zip_entry | string',
+\ 'zip_entry_open(': 'resource zip, resource zip_entry [, string mode] | bool',
+\ 'zip_entry_read(': 'resource zip_entry [, int length] | string',
+\ 'zip_open(': 'string filename | resource',
+\ 'zip_read(': 'resource zip | resource',
+\ 'zlib_get_coding_type(': 'void  | string'}
+endfunction
+" }}}
+" vim:set foldmethod=marker:
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 15
+*change.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -765,6 +765,10 @@ break the line.
 For convenience a <NL> character is also used as a line break.  Prepend a
 backslash to get a real <NL> character (which will be a NUL in the file).
 
+When the result is a |List| then the items are joined with separating line
+breaks.  Thus each item becomes a line, except that they can contain line
+breaks themselves.
+
 The whole matched text can be accessed with "submatch(0)".  The text matched
 with the first pair of () with "submatch(1)".  Likewise for further
 sub-matches in ().
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 24
+*editing.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -414,7 +414,9 @@ You can have the backticks expanded as a
 external command, by using the syntax `={expr}` e.g.: >
 	:e `=tempname()`
 The expression can contain just about anything, thus this can also be used to
-avoid the special meaning of '"', '|', '%' and '#'.
+avoid the special meaning of '"', '|', '%' and '#'.  Names are to be separated
+with line breaks.  When the result is a |List| then each item is used as a
+name.  Line breaks also separate names.
 
 							*++opt* *[++opt]*
 The [++opt] argument can be used to force the value of 'fileformat',
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 04
+*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3371,7 +3371,7 @@ match({expr}, {pat}[, {start}[, {count}]
 		If there is no match -1 is returned.
 		Example: >
 			:echo match("testing", "ing")	" results in 4
-			:echo match([1, 'x'], '\a')	" results in 2
+			:echo match([1, 'x'], '\a')	" results in 1
 <		See |string-match| for how {pat} is used.
 								*strpbrk()*
 		Vim doesn't have a strpbrk() function.  But you can do: >
@@ -3728,6 +3728,9 @@ readfile({fname} [, {binary} [, {max}]])
 remote_expr({server}, {string} [, {idvar}])
 		Send the {string} to {server}.  The string is sent as an
 		expression and the result is returned after evaluation.
+		The result must be a String or a |List|.  A |List| is turned
+		into a String by joining the items with a line break in
+		between (not at the end), like with join(expr, "\n").
 		If {idvar} is present, it is taken as the name of a
 		variable and a {serverid} for later use with
 		remote_read() is stored there.
@@ -3884,9 +3887,11 @@ search({pattern} [, {flags} [, {stopline
 
 		If there is no match a 0 is returned and the cursor doesn't
 		move.  No error message is given.
-		When a match has been found its line number is returned.  With
-		the 'p' flag the returned value is one more than the first
-		sub-match in \(\).  One if there is none.
+		When a match has been found its line number is returned.
+							*search()-sub-match*
+		With the 'p' flag the returned value is one more than the
+		first sub-match in \(\).  One if none of them matched but the
+		whole pattern did match.
 		To get the column number too use |searchpos()|.
 
 		The cursor will be positioned at the match, unless the 'n'
@@ -4039,9 +4044,15 @@ searchpos({pattern} [, {flags} [, {stopl
 		is the line number and the second element is the byte index of
 		the column position of the match. If no match is found,
 		returns [0, 0].
->
-			:let [lnum,col] = searchpos('mypattern', 'n')
-<
+		Example: >
+	:let [lnum, col] = searchpos('mypattern', 'n')
+
+<		When the 'p' flag is given then there is an extra item with
+		the sub-pattern match number |search()-sub-match|.  Example: >
+	:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
+<		In this example "submatch" is 2 when a lowercase letter is
+		found |/\l|, 3 when an uppercase letter is found |/\u|.
+
 server2client( {clientid}, {string})			*server2client()*
 		Send a reply string to {clientid}.  The most recent {clientid}
 		that sent a string can be retrieved with expand("<client>").
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -1,4 +1,4 @@
-*if_mzsch.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 05
+*if_mzsch.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Sergey Khorev
@@ -166,7 +166,10 @@ interface.
 Common
 ------
     (command {command-string})	    Perform the vim ":Ex" style command.
-    (eval {expr-string})	    Evaluate the vim command string.
+    (eval {expr-string})	    Evaluate the vim expression to a string.
+				    A |List| is turned into a string by
+				    joining the items and inserting line
+				    breaks.
 				    NOTE clashes with MzScheme eval
     (range-start)		    Start/End of the range passed with
     (range-end)			    the Scheme command.
--- a/runtime/doc/if_ole.txt
+++ b/runtime/doc/if_ole.txt
@@ -1,4 +1,4 @@
-*if_ole.txt*    For Vim version 7.0aa.  Last change: 2005 Mar 29
+*if_ole.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -77,7 +77,8 @@ Eval(expr)		Evaluate an expression.
 
 This method takes a single parameter, which is an expression in Vim's normal
 format (see |expression|).  It returns a string, which is the result of
-evaluating the expression.
+evaluating the expression.  A |List| is turned into a string by joining the
+items and inserting line breaks.
 
 Examples (Visual Basic syntax) >
 	Line20 = Vim.Eval("getline(20)")
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -1,4 +1,4 @@
-*if_perl.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
+*if_perl.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Sven Verdoolaege
@@ -181,6 +181,8 @@ VIM::Eval({expr})	Evaluates {expr} and r
 			value of internal |variables| x, and '$x' is equivalent
 			to perl's $ENV{x}.  All |functions| accessible from
 			the command-line are valid for {expr}.
+			A |List| is turned into a string by joining the items
+			and inserting line breaks.
 
 							*perl-SetHeight*
 Window->SetHeight({height})
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -1,4 +1,4 @@
-*if_ruby.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
+*if_ruby.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Shugo Maeda
@@ -117,6 +117,8 @@ VIM::command({cmd})
 VIM::evaluate({expr})
 	Evaluates {expr} using the vim internal expression evaluator (see
 	|expression|).  Returns the expression result as a string.
+	A |List| is turned into a string by joining the items and inserting
+	line breaks.
 
 ==============================================================================
 3. VIM::Buffer objects					*ruby-buffer*
--- a/runtime/doc/if_tcl.txt
+++ b/runtime/doc/if_tcl.txt
@@ -1,4 +1,4 @@
-*if_tcl.txt*    For Vim version 7.0aa.  Last change: 2005 Oct 14
+*if_tcl.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Ingo Wilken
@@ -133,7 +133,8 @@ Commands:
 	Evaluates the expression {expr} using vim's internal expression
 	evaluator (see |expression|).   Any expression that queries a buffer
 	or window property uses the current buffer/current window.  Returns
-	the result as a string.
+	the result as a string.  A |List| is turned into a string by joining
+	the items and inserting line breaks.
 	Examples: >
 		set perl_available [::vim::expr has("perl")]
 <	See also |tcl-window-expr| and |tcl-buffer-expr|.
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1,4 +1,4 @@
-*index.txt*     For Vim version 7.0aa.  Last change: 2006 Mar 04
+*index.txt*     For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1419,6 +1419,7 @@ The commands are sorted on the non-optio
 |:source|	:so[urce]	read Vim or Ex commands from a file
 |:spelldump|	:spelld[ump]	split window and fill with all correct words
 |:spellgood|	:spe[llgood]	add good word for spelling
+|:spellinfo|	:spelli[nfo]	show info about loaded spell files
 |:spellrepall|	:spellr[epall]	replace all bad words like last |z=|
 |:spellundo|	:spellu[ndo]	remove good or bad word
 |:spellwrong|	:spellw[rong]	add spelling mistake
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 04
+*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -130,6 +130,9 @@ CTRL-R {0-9a-z"%#*+:.-=}					*i_CTRL-R*
 				the cursor up:
 					CTRL-R ="\<Up>"
 				Use CTRL-R CTRL-R to insert text literally.
+				When the result is a |List| the items are used
+				as lines.  They can have line breaks inside
+				too.
 		See |registers| about registers.  {not in Vi}
 
 CTRL-R CTRL-R {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-R*
@@ -1239,6 +1242,30 @@ both major engines implemented element, 
 will be suggested. All other elements are not placed in suggestion list.
 
 
+PHP                                                     *ft-php-omni*
+
+Completion of PHP code requires tags file for completion of data from external
+files. You should use Exuberant ctags version 5.5.4 or newer. You can find it
+here: http://ctags.sourceforge.net/
+
+Script completes:
+
+- after $ variables name
+- function names with additonal info:
+- in case of built-in functions list of possible arguments and after | type
+  data returned by function
+- in case of user function arguments and name of file were function was
+  defined (if it is not current file)
+
+Note: when doing completion first time Vim will load all necessary data into
+memory. It may take several seconds. After next use of completion delay
+shouldn't be noticeable.
+
+Script detects if cursor is inside <?php ?> tags. If it is outside it will
+automatically switch to HTML/CSS/JavaScript completion. Note: contrary to
+original HTML files completion of tags (and only tags) isn't context aware.
+
+
 SYNTAX							*ft-syntax-omni*
 
 This uses the current syntax highlighting for completion.  It can be used for
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.0aa.  Last change: 2006 Feb 24
+*map.txt*       For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1089,6 +1089,7 @@ completion can be enabled:
 	-complete=event		autocommand events
 	-complete=expression	Vim expression
 	-complete=file		file and directory names
+	-complete=shellcmd	Shell command
 	-complete=function	function name
 	-complete=help		help subjects
 	-complete=highlight	highlight groups
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.0aa.  Last change: 2005 Oct 14
+*mbyte.txt*     For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -1257,11 +1257,16 @@ Double-width characters are supported.  
 normal width and a space to fill the gap.  Note that the 'guifontset' option
 is no longer relevant in the GTK+ 2 GUI.
 
-Up to two combining characters can be used.  The combining character is drawn
-on top of the preceding character.  When editing text a composing character is
-mostly considered part of the preceding character.  For example "x" will
-delete a character and its following composing characters by default.  If the
-'delcombine' option is on, then pressing 'x' will delete the combining
+					*mbyte-combining* *mbyte-composing*
+A composing or combining character is used to change the meaning of the
+character before it.  The combining characters are drawn on top of the
+preceding character.  
+Up to two combining characters can be used by default.  This can be changed
+with the 'maxcombine' option.
+When editing text a composing character is mostly considered part of the
+preceding character.  For example "x" will delete a character and its
+following composing characters by default.
+If the 'delcombine' option is on, then pressing 'x' will delete the combining
 characters, one at a time, then the base character.  But when inserting, you
 type the first character and the following composing characters separately,
 after which they will be joined.  The "r" command will not allow you to type a
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 04
+*options.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1050,7 +1050,10 @@ A jump table for the options with a shor
 
 	To check whether line breaks in the balloon text work use this check: >
 		if has("balloon_multiline")
-<
+<	When they are supported "\n" characters will start a new line.  If the
+	expression evaluates to a |List| this is equal to using each List item
+	as a string and putting "\n" in between them.
+
 				     *'binary'* *'bin'* *'nobinary'* *'nobin'*
 'binary' 'bin'		boolean	(default off)
 			local to buffer
@@ -3262,6 +3265,8 @@ A jump table for the options with a shor
 	  'e'	Add tab pages when indicated with 'showtabline'.
 		'guitablabel' can be used to change the text in the labels.
 		When 'e' is missing a non-GUI tab pages line may be used.
+		The GUI tabs are only supported on some systens, currently
+		only for GTK.
 
 	  'f'	Foreground: Don't use fork() to detach the GUI from the shell
 		where it was started.  Use this for programs that wait for the
@@ -4289,6 +4294,20 @@ A jump table for the options with a shor
 	set.  Note that this is not in milliseconds, like other options that
 	set a time.  This is to be compatible with Nvi.
 
+						*'maxcombine'* *'mco'*
+'maxcombine' 'mco'	number (default 2)
+			global
+			{not in Vi}
+			{only available when compiled with the |+multi_byte|
+			feature}
+	The maximum number of combining characters supported for displaying.
+	Only used when 'encoding' is "utf-8".
+	The default is OK for most languages.  Hebrew may require 4.
+	Maximum value is 6.
+	Even when this option is set to 2 you can still edit text with more
+	combining characters, you just can't see them.  Use |g8| or |ga|.
+	See |mbyte-combining|.
+
 						*'maxfuncdepth'* *'mfd'*
 'maxfuncdepth' 'mfd'	number	(default 100)
 			global
@@ -7176,9 +7195,9 @@ A jump table for the options with a shor
 	"dh".  If you use this, you may also want to use the mapping
 	":map <BS> X" to make backspace delete the character in front of the
 	cursor.
-	When 'l' is included, you get a side effect: "yl" on an empty line
-	will include the <EOL>, so that "p" will insert a new line.  That's
-	why including 'h' and 'l' are not recommended.
+	When 'l' is included and it is used after an operator at the end of a
+	line then it will not move to the next line.  This makes "dl", "cl",
+	"yl" etc. work normally.
 	NOTE: This option is set to the Vi default value when 'compatible' is
 	set and to the Vim default value when 'compatible' is reset.
 
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 01
+*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -16,8 +16,9 @@ 4. Overview of pattern items	|pattern-ov
 5. Multi items			|pattern-multi-items|
 6. Ordinary atoms		|pattern-atoms|
 7. Ignoring case in a pattern	|/ignorecase|
-8. Compare with Perl patterns	|perl-patterns|
-9. Highlighting matches		|match-highlight|
+8. Composing characters		|patterns-composing|
+9. Compare with Perl patterns	|perl-patterns|
+10. Highlighting matches	|match-highlight|
 
 ==============================================================================
 1. Search commands				*search-commands* *E486*
@@ -1104,12 +1105,6 @@ Examples:
 	\cfoo	  -		-		foo Foo FOO
 	foo\C	  -		-		foo
 
-							*/\Z*
-When "\Z" appears anywhere in the pattern, composing characters are ignored.
-Thus only the base characters need to match, the composing characters may be
-different and the number of composing characters may differ.  Only relevant
-when 'encoding' is "utf-8".
-
 Technical detail:				*NL-used-for-Nul*
 <Nul> characters in the file are stored as <NL> in memory.  In the display
 they are shown as "^@".  The translation is done when reading and writing
@@ -1134,7 +1129,27 @@ expect.  But invalid bytes may cause tro
 will probably never match.
 
 ==============================================================================
-8. Compare with Perl patterns				*perl-patterns*
+8. Composing characters					*patterns-composing*
+
+							*/\Z*
+When "\Z" appears anywhere in the pattern, composing characters are ignored.
+Thus only the base characters need to match, the composing characters may be
+different and the number of composing characters may differ.  Only relevant
+when 'encoding' is "utf-8".
+
+When a composing character appears at the start of the pattern of after an
+item that doesn't include the composing character, a match is found at any
+character that includes this composing character.
+
+When using a dot and a composing character, this works the same as the
+composing character by itself, except that it doesn't matter what comes before
+this.
+
+The order of composing characters matters, even though changing the order
+doen't change what a character looks like.  This may change in the future.
+
+==============================================================================
+9. Compare with Perl patterns				*perl-patterns*
 
 Vim's regexes are most similar to Perl's, in terms of what you can do.  The
 difference between them is mostly just notation;  here's a summary of where
@@ -1144,7 +1159,7 @@ Capability			in Vimspeak	in Perlspeak ~
 ----------------------------------------------------------------
 force case insensitivity	\c		(?i)
 force case sensitivity		\C		(?-i)
-backref-less grouping		\%(atom)	(?:atom)
+backref-less grouping		\%(atom\)	(?:atom)
 conservative quantifiers	\{-n,m}		*?, +?, ??, {}?
 0-width match			atom\@=		(?=atom)
 0-width non-match		atom\@!		(?!atom)
@@ -1177,10 +1192,10 @@ Finally, these constructs are unique to 
 - \& (which is to \| what "and" is to "or";  it forces several branches
    to match at one spot)
 - matching lines/columns by number:  \%5l \%5c \%5v
-- limiting the "return value" of a regex:  \zs \ze
+- setting the start and end of the match:  \zs \ze
 
 ==============================================================================
-9. Highlighting matches					*match-highlight*
+10. Highlighting matches				*match-highlight*
 
 							*:mat* *:match*
 :mat[ch] {group} /{pattern}/
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 13
+*quickref.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -588,337 +588,341 @@ In Insert or Command-line mode:
 					  the help.
 
 Short explanation of each option:		*option-list*
-|'aleph'|	  |'al'|     ASCII code of the letter Aleph (Hebrew)
-|'allowrevins'|	  |'ari'|    allow CTRL-_ in Insert and Command-line mode
-|'altkeymap'|	  |'akm'|    for default second language (Farsi/Hebrew)
-|'ambiwidth'|	  |'ambw'|   what to do with Unicode chars of ambiguous width
-|'antialias'|	  |'anti'|   Mac OS X: use smooth, antialiased fonts
-|'autochdir'|	  |'acd'|    change directory to the file in the current window
-|'arabic'|	  |'arab'|   for Arabic as a default second language
-|'arabicshape'|   |'arshape'| do shaping for Arabic characters
-|'autoindent'|	  |'ai'|     take indent for new line from previous line
-|'autoread'|	  |'ar'|     autom. read file when changed outside of Vim
-|'autowrite'|	  |'aw'|     automatically write file if changed
-|'autowriteall'|  |'awa'|    as 'autowrite', but works with more commands
-|'background'|	  |'bg'|     "dark" or "light", used for highlight colors
-|'backspace'|	  |'bs'|     how backspace works at start of line
-|'backup'|	  |'bk'|     keep backup file after overwriting a file
-|'backupcopy'|	  |'bkc'|    make backup as a copy, don't rename the file
-|'backupdir'|	  |'bdir'|   list of directories for the backup file
-|'backupext'|	  |'bex'|    extension used for the backup file
-|'backupskip'|	  |'bsk'|    no backup for files that match these patterns
-|'balloondelay'|  |'bdlay'|  delay in mS before a balloon may pop up
-|'ballooneval'|   |'beval'|  switch on balloon evaluation
-|'balloonexpr'|   |'bexpr'|  expression to show in balloon
-|'binary'|	  |'bin'|    read/write/edit file in binary mode
-|'bioskey'|	  |'biosk'|  MS-DOS: use bios calls for input characters
-|'bomb'|		     prepend a Byte Order Mark to the file
-|'breakat'|	  |'brk'|    characters that may cause a line break
-|'browsedir'|	  |'bsdir'|  which directory to start browsing in
-|'bufhidden'|	  |'bh'|     what to do when buffer is no longer in window
-|'buflisted'|	  |'bl'|     whether the buffer shows up in the buffer list
-|'buftype'|	  |'bt'|     special type of buffer
-|'casemap'|	  |'cmp'|    specifies how case of letters is changed
-|'cdpath'|	  |'cd'|     list of directories searched with ":cd"
-|'cedit'|		     key used to open the command-line window
-|'charconvert'|   |'ccv'|    expression for character encoding conversion
-|'cindent'|	  |'cin'|    do C program indenting
-|'cinkeys'|	  |'cink'|   keys that trigger indent when 'cindent' is set
-|'cinoptions'|	  |'cino'|   how to do indenting when 'cindent' is set
-|'cinwords'|	  |'cinw'|   words where 'si' and 'cin' add an indent
-|'clipboard'|	  |'cb'|     use the clipboard as the unnamed register
-|'cmdheight'|	  |'ch'|     number of lines to use for the command-line
-|'cmdwinheight'|  |'cwh'|    height of the command-line window
-|'columns'|	  |'co'|     number of columns in the display
-|'comments'|	  |'com'|    patterns that can start a comment line
-|'commentstring'| |'cms'|    template for comments; used for fold marker
-|'compatible'|	  |'cp'|     behave Vi-compatible as much as possible
-|'complete'|	  |'cpt'|    specify how Insert mode completion works
-|'completefunc'|  |'cfu'|    function to be used for Insert mode completion
-|'completeopt'|   |'cot'|    options for Insert mode completion
-|'confirm'|	  |'cf'|     ask what to do about unsaved/read-only files
-|'conskey'|	  |'consk'|  get keys directly from console (MS-DOS only)
-|'copyindent'|    |'ci'|     make 'autoindent' use existing indent structure
-|'cpoptions'|	  |'cpo'|    flags for Vi-compatible behavior
-|'cscopepathcomp'| |'cspc'|  how many components of the path to show
-|'cscopeprg'|	  |'csprg'|  command to execute cscope
-|'cscopequickfix'| |'csqf'|  use quickfix window for cscope results
-|'cscopetag'|	  |'cst'|    use cscope for tag commands
-|'cscopetagorder'| |'csto'|  determines ":cstag" search order
-|'cscopeverbose'| |'csverb'| give messages when adding a cscope database
-|'debug'|		     set to "msg" to see all error messages
-|'define'|	  |'def'|    pattern to be used to find a macro definition
-|'delcombine'|	  |'deco'|   delete combining characters on their own
-|'dictionary'|	  |'dict'|   list of file names used for keyword completion
-|'diff'|		     use diff mode for the current window
-|'diffexpr'|	  |'dex'|    expression used to obtain a diff file
-|'diffopt'|	  |'dip'|    options for using diff mode
-|'digraph'|	  |'dg'|     enable the entering of digraphs in Insert mode
-|'directory'|	  |'dir'|    list of directory names for the swap file
-|'display'|	  |'dy'|     list of flags for how to display text
-|'eadirection'|   |'ead'|    in which direction 'equalalways' works
-|'edcompatible'|  |'ed'|     toggle flags of ":substitute" command
-|'encoding'|	  |'enc'|    encoding used internally
-|'endofline'|	  |'eol'|    write <EOL> for last line in file
-|'equalalways'|   |'ea'|     windows are automatically made the same size
-|'equalprg'|	  |'ep'|     external program to use for "=" command
-|'errorbells'|	  |'eb'|     ring the bell for error messages
-|'errorfile'|	  |'ef'|     name of the errorfile for the QuickFix mode
-|'errorformat'|   |'efm'|    description of the lines in the error file
-|'esckeys'|	  |'ek'|     recognize function keys in Insert mode
-|'eventignore'|	  |'ei'|     autocommand events that are ignored
-|'expandtab'|	  |'et'|     use spaces when <Tab> is inserted
-|'exrc'|	  |'ex'|     read .vimrc and .exrc in the current directory
-|'fileencoding'|  |'fenc'|   file encoding for multi-byte text
-|'fileencodings'| |'fencs'|  automatically detected character encodings
-|'fileformat'|	  |'ff'|     file format used for file I/O
-|'fileformats'|	  |'ffs'|    automatically detected values for 'fileformat'
-|'filetype'|	  |'ft'|     type of file, used for autocommands
-|'fillchars'|	  |'fcs'|    characters to use for displaying special items
-|'fkmap'|	  |'fk'|     Farsi keyboard mapping
-|'foldclose'|	  |'fcl'|    close a fold when the cursor leaves it
-|'foldcolumn'|	  |'fdc'|    width of the column used to indicate folds
-|'foldenable'|	  |'fen'|    set to display all folds open
-|'foldexpr'|	  |'fde'|    expression used when 'foldmethod' is "expr"
-|'foldignore'|	  |'fdi'|    ignore lines when 'foldmethod' is "indent"
-|'foldlevel'|	  |'fdl'|    close folds with a level higher than this
-|'foldlevelstart'| |'fdls'|  'foldlevel' when starting to edit a file
-|'foldmarker'|	  |'fmr'|    markers used when 'foldmethod' is "marker"
-|'foldmethod'|	  |'fdm'|    folding type
-|'foldminlines'|  |'fml'|    minimum number of lines for a fold to be closed
-|'foldnestmax'|   |'fdn'|    maximum fold depth
-|'foldopen'|	  |'fdo'|    for which commands a fold will be opened
-|'foldtext'|	  |'fdt'|    expression used to display for a closed fold
-|'formatlistpat'| |'flp'|    pattern used to recognize a list header
-|'formatoptions'| |'fo'|     how automatic formatting is to be done
-|'formatprg'|	  |'fp'|     name of external program used with "gq" command
-|'formatexpr'|	  |'fex'|    expression used with "gq" command
-|'fsync'|	  |'fs'|     whether to invoke fsync() after file write
-|'gdefault'|	  |'gd'|     the ":substitute" flag 'g' is default on
-|'grepformat'|	  |'gfm'|    format of 'grepprg' output
-|'grepprg'|	  |'gp'|     program to use for ":grep"
-|'guicursor'|	  |'gcr'|    GUI: settings for cursor shape and blinking
-|'guifont'|	  |'gfn'|    GUI: Name(s) of font(s) to be used
-|'guifontset'|	  |'gfs'|    GUI: Names of multi-byte fonts to be used
-|'guifontwide'|   |'gfw'|    list of font names for double-wide characters
-|'guiheadroom'|	  |'ghr'|    GUI: pixels room for window decorations
-|'guioptions'|	  |'go'|     GUI: Which components and options are used
-|'guipty'|		     GUI: try to use a pseudo-tty for ":!" commands
-|'helpfile'|	  |'hf'|     full path name of the main help file
-|'helpheight'|	  |'hh'|     minimum height of a new help window
-|'helplang'|	  |'hlg'|    preferred help languages
-|'hidden'|	  |'hid'|    don't unload buffer when it is |abandon|ed
-|'highlight'|	  |'hl'|     sets highlighting mode for various occasions
-|'hlsearch'|	  |'hls'|    highlight matches with last search pattern
-|'history'|	  |'hi'|     number of command-lines that are remembered
-|'hkmap'|	  |'hk'|     Hebrew keyboard mapping
-|'hkmapp'|	  |'hkp'|    phonetic Hebrew keyboard mapping
-|'icon'|		     let Vim set the text of the window icon
-|'iconstring'|		     string to use for the Vim icon text
-|'ignorecase'|	  |'ic'|     ignore case in search patterns
-|'imactivatekey'| |'imak'|   key that activates the X input method
-|'imcmdline'|	  |'imc'|    use IM when starting to edit a command line
-|'imdisable'|	  |'imd'|    do not use the IM in any mode
-|'iminsert'|	  |'imi'|    use :lmap or IM in Insert mode
-|'imsearch'|	  |'ims'|    use :lmap or IM when typing a search pattern
-|'include'|	  |'inc'|    pattern to be used to find an include file
-|'includeexpr'|   |'inex'|   expression used to process an include line
-|'incsearch'|	  |'is'|     highlight match while typing search pattern
-|'indentexpr'|	  |'inde'|   expression used to obtain the indent of a line
-|'indentkeys'|	  |'indk'|   keys that trigger indenting with 'indentexpr'
-|'infercase'|	  |'inf'|    adjust case of match for keyword completion
-|'insertmode'|	  |'im'|     start the edit of a file in Insert mode
-|'isfname'|	  |'isf'|    characters included in file names and pathnames
-|'isident'|	  |'isi'|    characters included in identifiers
-|'iskeyword'|	  |'isk'|    characters included in keywords
-|'isprint'|	  |'isp'|    printable characters
-|'joinspaces'|	  |'js'|     two spaces after a period with a join command
-|'key'|			     encryption key
-|'keymap'|	  |'kmp'|    name of a keyboard mapping
-|'keymodel'|	  |'km'|     enable starting/stopping selection with keys
-|'keywordprg'|	  |'kp'|     program to use for the "K" command
-|'langmap'|	  |'lmap'|   alphabetic characters for other language mode
-|'langmenu'|	  |'lm'|     language to be used for the menus
-|'laststatus'|	  |'ls'|     tells when last window has status lines
-|'lazyredraw'|	  |'lz'|     don't redraw while executing macros
-|'linebreak'|	  |'lbr'|    wrap long lines at a blank
-|'lines'|		     number of lines in the display
-|'linespace'|	  |'lsp'|    number of pixel lines to use between characters
-|'lisp'|		     automatic indenting for Lisp
-|'lispwords'|	  |'lw'|     words that change how lisp indenting works
-|'list'|		     show <Tab> and <EOL>
-|'listchars'|	  |'lcs'|    characters for displaying in list mode
-|'loadplugins'|   |'lpl'|    load plugin scripts when starting up
-|'magic'|		     changes special characters in search patterns
-|'makeef'|	  |'mef'|    name of the errorfile for ":make"
-|'makeprg'|	  |'mp'|     program to use for the ":make" command
-|'matchpairs'|	  |'mps'|    pairs of characters that "%" can match
-|'matchtime'|	  |'mat'|    tenths of a second to show matching paren
-|'maxfuncdepth'|  |'mfd'|    maximum recursive depth for user functions
-|'maxmapdepth'|   |'mmd'|    maximum recursive depth for mapping
-|'maxmem'|	  |'mm'|     maximum memory (in Kbyte) used for one buffer
-|'maxmempattern'| |'mmp'|    maximum memory (in Kbyte) used for pattern search
-|'maxmemtot'|	  |'mmt'|    maximum memory (in Kbyte) used for all buffers
-|'menuitems'|	  |'mis'|    maximum number of items in a menu
-|'mkspellmem'|    |'msm'|    memory used before |:mkspell| compresses the tree
-|'modeline'|	  |'ml'|     recognize modelines at start or end of file
-|'modelines'|	  |'mls'|    number of lines checked for modelines
-|'modifiable'|	  |'ma'|     changes to the text are not possible
-|'modified'|	  |'mod'|    buffer has been modified
-|'more'|		     pause listings when the whole screen is filled
-|'mouse'|		     enable the use of mouse clicks
-|'mousefocus'|	  |'mousef'| keyboard focus follows the mouse
-|'mousehide'|	  |'mh'|     hide mouse pointer while typing
-|'mousemodel'|	  |'mousem'| changes meaning of mouse buttons
-|'mouseshape'|	  |'mouses'| shape of the mouse pointer in different modes
-|'mousetime'|	  |'mouset'| max time between mouse double-click
-|'mzquantum'|	  |'mzq'|    the interval between polls for MzScheme threads
-|'nrformats'|	  |'nf'|     number formats recognized for CTRL-A command
-|'number'|	  |'nu'|     print the line number in front of each line
-|'numberwidth'|	  |'nuw'|    number of columns used for the line number
-|'omnifunc'|      |'ofu'|    function for filetype-specific completion
-|'operatorfunc'|  |'opfunc'| funtion to be called for |g@| operator
-|'osfiletype'|	  |'oft'|    operating system-specific filetype information
-|'paragraphs'|	  |'para'|   nroff macros that separate paragraphs
-|'paste'|		     allow pasting text
-|'pastetoggle'|	  |'pt'|     key code that causes 'paste' to toggle
-|'patchexpr'|	  |'pex'|    expression used to patch a file
-|'patchmode'|	  |'pm'|     keep the oldest version of a file
-|'path'|	  |'pa'|     list of directories searched with "gf" et.al.
-|'preserveindent'| |'pi'|    preserve the indent structure when reindenting
-|'previewheight'| |'pvh'|    height of the preview window
-|'previewwindow'| |'pvw'|    identifies the preview window
-|'printdevice'|   |'pdev'|   name of the printer to be used for :hardcopy
-|'printencoding'| |'penc'|   encoding to be used for printing
-|'printexpr'|     |'pexpr'|  expression used to print PostScript for :hardcopy
-|'printfont'|	  |'pfn'|    name of the font to be used for :hardcopy
-|'printheader'|   |'pheader'| format of the header used for :hardcopy
-|'printmbcharset'| |'pmbcs'| CJK character set to be used for :hardcopy
-|'printmbfont'|   |'pmbfn'|  font names to be used for CJK output of :hardcopy
-|'printoptions'|  |'popt'|   controls the format of :hardcopy output
-|'quoteescape'|   |'qe'|     escape characters used in a string
-|'readonly'|	  |'ro'|     disallow writing the buffer
-|'remap'|		     allow mappings to work recursively
-|'report'|		     threshold for reporting nr. of lines changed
-|'restorescreen'| |'rs'|     Win32: restore screen when exiting
-|'revins'|	  |'ri'|     inserting characters will work backwards
-|'rightleft'|	  |'rl'|     window is right-to-left oriented
-|'rightleftcmd'|  |'rlc'|    commands for which editing works right-to-left
-|'ruler'|	  |'ru'|     show cursor line and column in the status line
-|'rulerformat'|	  |'ruf'|    custom format for the ruler
-|'runtimepath'|   |'rtp'|    list of directories used for runtime files
-|'scroll'|	  |'scr'|    lines to scroll with CTRL-U and CTRL-D
-|'scrollbind'|	  |'scb'|    scroll in window as other windows scroll
-|'scrolljump'|	  |'sj'|     minimum number of lines to scroll
-|'scrolloff'|	  |'so'|     minimum nr. of lines above and below cursor
-|'scrollopt'|	  |'sbo'|    how 'scrollbind' should behave
-|'sections'|	  |'sect'|   nroff macros that separate sections
-|'secure'|		     secure mode for reading .vimrc in current dir
-|'selection'|	  |'sel'|    what type of selection to use
-|'selectmode'|	  |'slm'|    when to use Select mode instead of Visual mode
-|'sessionoptions'| |'ssop'|  options for |:mksession|
-|'shell'|	  |'sh'|     name of shell to use for external commands
-|'shellcmdflag'|  |'shcf'|   flag to shell to execute one command
-|'shellpipe'|	  |'sp'|     string to put output of ":make" in error file
-|'shellquote'|	  |'shq'|    quote character(s) for around shell command
-|'shellredir'|	  |'srr'|    string to put output of filter in a temp file
-|'shellslash'|	  |'ssl'|    use forward slash for shell file names
-|'shelltemp'|	  |'stmp'|   whether to use a temp file for shell commands
-|'shelltype'|	  |'st'|     Amiga: influences how to use a shell
-|'shellxquote'|	  |'sxq'|    like 'shellquote', but include redirection
-|'shiftround'|	  |'sr'|     round indent to multiple of shiftwidth
-|'shiftwidth'|	  |'sw'|     number of spaces to use for (auto)indent step
-|'shortmess'|	  |'shm'|    list of flags, reduce length of messages
-|'shortname'|	  |'sn'|     non-MS-DOS: Filenames assumed to be 8.3 chars
-|'showbreak'|	  |'sbr'|    string to use at the start of wrapped lines
-|'showcmd'|	  |'sc'|     show (partial) command in status line
-|'showfulltag'|	  |'sft'|    show full tag pattern when completing tag
-|'showmatch'|	  |'sm'|     briefly jump to matching bracket if insert one
-|'showmode'|	  |'smd'|    message on status line to show current mode
-|'sidescroll'|	  |'ss'|     minimum number of columns to scroll horizontal
-|'sidescrolloff'| |'siso'|   min. nr. of columns to left and right of cursor
-|'smartcase'|	  |'scs'|    no ignore case when pattern has uppercase
-|'smartindent'|   |'si'|     smart autoindenting for C programs
-|'smarttab'|	  |'sta'|    use 'shiftwidth' when inserting <Tab>
-|'softtabstop'|	  |'sts'|    number of spaces that <Tab> uses while editing
-|'spell'|		     enable spell checking
-|'spellcapcheck'| |'spc'|    pattern to locate end of a sentence
-|'spellfile'|	  |'spf'|    files where |zg| and |zw| store words
-|'spelllang'|	  |'spl'|    language(s) to do spell checking for
-|'spellsuggest'|  |'sps'|    method(s) used to suggest spelling corrections
-|'splitbelow'|	  |'sb'|     new window from split is below the current one
-|'splitright'|	  |'spr'|    new window is put right of the current one
-|'startofline'|   |'sol'|    commands move cursor to first blank in line
-|'statusline'|	  |'stl'|    custom format for the status line
-|'suffixes'|	  |'su'|     suffixes that are ignored with multiple match
-|'suffixesadd'|   |'sua'|    suffixes added when searching for a file
-|'swapfile'|	  |'swf'|    whether to use a swapfile for a buffer
-|'swapsync'|	  |'sws'|    how to sync the swap file
-|'switchbuf'|	  |'swb'|    sets behavior when switching to another buffer
-|'synmaxcol'|	  |'smc'|    maximum column to find syntax items
-|'syntax'|	  |'syn'|    syntax to be loaded for current buffer
-|'tabstop'|	  |'ts'|     number of spaces that <Tab> in file uses
-|'tagbsearch'|	  |'tbs'|    use binary searching in tags files
-|'taglength'|	  |'tl'|     number of significant characters for a tag
-|'tagrelative'|   |'tr'|     file names in tag file are relative
-|'tags'|	  |'tag'|    list of file names used by the tag command
-|'tagstack'|	  |'tgst'|   push tags onto the tag stack
-|'term'|		     name of the terminal
-|'termbidi'|	  |'tbidi'|  terminal takes care of bi-directionality
-|'termencoding'|  |'tenc'|   character encoding used by the terminal
-|'terse'|		     shorten some messages
-|'textauto'|	  |'ta'|     obsolete, use 'fileformats'
-|'textmode'|	  |'tx'|     obsolete, use 'fileformat'
-|'textwidth'|	  |'tw'|     maximum width of text that is being inserted
-|'thesaurus'|	  |'tsr'|    list of thesaurus files for keyword completion
-|'tildeop'|	  |'top'|    tilde command "~" behaves like an operator
-|'timeout'|	  |'to'|     time out on mappings and key codes
-|'timeoutlen'|	  |'tm'|     time out time in milliseconds
-|'title'|		     let Vim set the title of the window
-|'titlelen'|		     percentage of 'columns' used for window title
-|'titleold'|		     old title, restored when exiting
-|'titlestring'|		     string to use for the Vim window title
-|'toolbar'|	  |'tb'|     GUI: which items to show in the toolbar
-|'toolbariconsize'| |'tbis'| size of the toolbar icons (for GTK 2 only)
-|'ttimeout'|		     time out on mappings
-|'ttimeoutlen'|	  |'ttm'|    time out time for key codes in milliseconds
-|'ttybuiltin'|	  |'tbi'|    use built-in termcap before external termcap
-|'ttyfast'|	  |'tf'|     indicates a fast terminal connection
-|'ttymouse'|	  |'ttym'|   type of mouse codes generated
-|'ttyscroll'|	  |'tsl'|    maximum number of lines for a scroll
-|'ttytype'|	  |'tty'|    alias for 'term'
-|'undolevels'|	  |'ul'|     maximum number of changes that can be undone
-|'updatecount'|   |'uc'|     after this many characters flush swap file
-|'updatetime'|	  |'ut'|     after this many milliseconds flush swap file
-|'verbose'|	  |'vbs'|    give informative messages
-|'verbosefile'|	  |'vfile'|  file to write messages in
-|'viewdir'|	  |'vdir'|   directory where to store files with :mkview
-|'viewoptions'|   |'vop'|    specifies what to save for :mkview
-|'viminfo'|	  |'vi'|     use .viminfo file upon startup and exiting
-|'virtualedit'|   |'ve'|     when to use virtual editing
-|'visualbell'|	  |'vb'|     use visual bell instead of beeping
-|'warn'|		     warn for shell command when buffer was changed
-|'weirdinvert'|   |'wi'|     for terminals that have weird inversion method
-|'whichwrap'|	  |'ww'|     allow specified keys to cross line boundaries
-|'wildchar'|	  |'wc'|     command-line character for wildcard expansion
-|'wildcharm'|	  |'wcm'|    like 'wildchar' but also works when mapped
-|'wildignore'|	  |'wig'|    files matching these patterns are not completed
-|'wildmenu'|	  |'wmnu'|   use menu for command line completion
-|'wildmode'|	  |'wim'|    mode for 'wildchar' command-line expansion
-|'wildoptions'|   |'wop'|    specifies how command line completion is done.
-|'winaltkeys'|	  |'wak'|    when the windows system handles ALT keys
-|'winheight'|	  |'wh'|     minimum number of lines for the current window
-|'winfixheight'|  |'wfh'|    keep window height when opening/closing windows
-|'winminheight'|  |'wmh'|    minimum number of lines for any window
-|'winminwidth'|   |'wmw'|    minimal number of columns for any window
-|'winwidth'|	  |'wiw'|    minimal number of columns for current window
-|'wrap'|		     long lines wrap and continue on the next line
-|'wrapmargin'|	  |'wm'|     chars from the right where wrapping starts
-|'wrapscan'|	  |'ws'|     searches wrap around the end of the file
-|'write'|		     writing to a file is allowed
-|'writeany'|	  |'wa'|     write to file with no need for "!" override
-|'writebackup'|   |'wb'|     make a backup before overwriting a file
-|'writedelay'|	  |'wd'|     delay this many msec for each char (for debug)
+'aleph'           'al'      ASCII code of the letter Aleph (Hebrew)
+'allowrevins'     'ari'     allow CTRL-_ in Insert and Command-line mode
+'altkeymap'       'akm'     for default second language (Farsi/Hebrew)
+'ambiwidth'       'ambw'    what to do with Unicode chars of ambiguous width
+'antialias'       'anti'    Mac OS X: use smooth, antialiased fonts
+'autochdir'       'acd'     change directory to the file in the current window
+'arabic'          'arab'    for Arabic as a default second language
+'arabicshape'     'arshape' do shaping for Arabic characters
+'autoindent'      'ai'      take indent for new line from previous line
+'autoread'        'ar'      autom. read file when changed outside of Vim
+'autowrite'       'aw'      automatically write file if changed
+'autowriteall'    'awa'     as 'autowrite', but works with more commands
+'background'      'bg'      "dark" or "light", used for highlight colors
+'backspace'       'bs'      how backspace works at start of line
+'backup'          'bk'      keep backup file after overwriting a file
+'backupcopy'      'bkc'     make backup as a copy, don't rename the file
+'backupdir'       'bdir'    list of directories for the backup file
+'backupext'       'bex'     extension used for the backup file
+'backupskip'      'bsk'     no backup for files that match these patterns
+'balloondelay'    'bdlay'   delay in mS before a balloon may pop up
+'ballooneval'     'beval'   switch on balloon evaluation
+'balloonexpr'     'bexpr'   expression to show in balloon
+'binary'          'bin'     read/write/edit file in binary mode
+'bioskey'         'biosk'   MS-DOS: use bios calls for input characters
+'bomb'                      prepend a Byte Order Mark to the file
+'breakat'         'brk'     characters that may cause a line break
+'browsedir'       'bsdir'   which directory to start browsing in
+'bufhidden'       'bh'      what to do when buffer is no longer in window
+'buflisted'       'bl'      whether the buffer shows up in the buffer list
+'buftype'         'bt'      special type of buffer
+'casemap'         'cmp'     specifies how case of letters is changed
+'cdpath'          'cd'      list of directories searched with ":cd"
+'cedit'                     key used to open the command-line window
+'charconvert'     'ccv'     expression for character encoding conversion
+'cindent'         'cin'     do C program indenting
+'cinkeys'         'cink'    keys that trigger indent when 'cindent' is set
+'cinoptions'      'cino'    how to do indenting when 'cindent' is set
+'cinwords'        'cinw'    words where 'si' and 'cin' add an indent
+'clipboard'       'cb'      use the clipboard as the unnamed register
+'cmdheight'       'ch'      number of lines to use for the command-line
+'cmdwinheight'    'cwh'     height of the command-line window
+'columns'         'co'      number of columns in the display
+'comments'        'com'     patterns that can start a comment line
+'commentstring'   'cms'     template for comments; used for fold marker
+'compatible'      'cp'      behave Vi-compatible as much as possible
+'complete'        'cpt'     specify how Insert mode completion works
+'completefunc'    'cfu'     function to be used for Insert mode completion
+'completeopt'     'cot'     options for Insert mode completion
+'confirm'         'cf'      ask what to do about unsaved/read-only files
+'conskey'         'consk'   get keys directly from console (MS-DOS only)
+'copyindent'      'ci'      make 'autoindent' use existing indent structure
+'cpoptions'       'cpo'     flags for Vi-compatible behavior
+'cscopepathcomp'  'cspc'    how many components of the path to show
+'cscopeprg'       'csprg'   command to execute cscope
+'cscopequickfix'  'csqf'    use quickfix window for cscope results
+'cscopetag'       'cst'     use cscope for tag commands
+'cscopetagorder'  'csto'    determines ":cstag" search order
+'cscopeverbose'   'csverb'  give messages when adding a cscope database
+'debug'                     set to "msg" to see all error messages
+'define'          'def'     pattern to be used to find a macro definition
+'delcombine'      'deco'    delete combining characters on their own
+'dictionary'      'dict'    list of file names used for keyword completion
+'diff'                      use diff mode for the current window
+'diffexpr'        'dex'     expression used to obtain a diff file
+'diffopt'         'dip'     options for using diff mode
+'digraph'         'dg'      enable the entering of digraphs in Insert mode
+'directory'       'dir'     list of directory names for the swap file
+'display'         'dy'      list of flags for how to display text
+'eadirection'     'ead'     in which direction 'equalalways' works
+'edcompatible'    'ed'      toggle flags of ":substitute" command
+'encoding'        'enc'     encoding used internally
+'endofline'       'eol'     write <EOL> for last line in file
+'equalalways'     'ea'      windows are automatically made the same size
+'equalprg'        'ep'      external program to use for "=" command
+'errorbells'      'eb'      ring the bell for error messages
+'errorfile'       'ef'      name of the errorfile for the QuickFix mode
+'errorformat'     'efm'     description of the lines in the error file
+'esckeys'         'ek'      recognize function keys in Insert mode
+'eventignore'     'ei'      autocommand events that are ignored
+'expandtab'       'et'      use spaces when <Tab> is inserted
+'exrc'            'ex'      read .vimrc and .exrc in the current directory
+'fileencoding'    'fenc'    file encoding for multi-byte text
+'fileencodings'   'fencs'   automatically detected character encodings
+'fileformat'      'ff'      file format used for file I/O
+'fileformats'     'ffs'     automatically detected values for 'fileformat'
+'filetype'        'ft'      type of file, used for autocommands
+'fillchars'       'fcs'     characters to use for displaying special items
+'fkmap'           'fk'      Farsi keyboard mapping
+'foldclose'       'fcl'     close a fold when the cursor leaves it
+'foldcolumn'      'fdc'     width of the column used to indicate folds
+'foldenable'      'fen'     set to display all folds open
+'foldexpr'        'fde'     expression used when 'foldmethod' is "expr"
+'foldignore'      'fdi'     ignore lines when 'foldmethod' is "indent"
+'foldlevel'       'fdl'     close folds with a level higher than this
+'foldlevelstart'  'fdls'    'foldlevel' when starting to edit a file
+'foldmarker'      'fmr'     markers used when 'foldmethod' is "marker"
+'foldmethod'      'fdm'     folding type
+'foldminlines'    'fml'     minimum number of lines for a fold to be closed
+'foldnestmax'     'fdn'     maximum fold depth
+'foldopen'        'fdo'     for which commands a fold will be opened
+'foldtext'        'fdt'     expression used to display for a closed fold
+'formatlistpat'   'flp'     pattern used to recognize a list header
+'formatoptions'   'fo'      how automatic formatting is to be done
+'formatprg'       'fp'      name of external program used with "gq" command
+'formatexpr'      'fex'     expression used with "gq" command
+'fsync'           'fs'      whether to invoke fsync() after file write
+'gdefault'        'gd'      the ":substitute" flag 'g' is default on
+'grepformat'      'gfm'     format of 'grepprg' output
+'grepprg'         'gp'      program to use for ":grep"
+'guicursor'       'gcr'     GUI: settings for cursor shape and blinking
+'guifont'         'gfn'     GUI: Name(s) of font(s) to be used
+'guifontset'      'gfs'     GUI: Names of multi-byte fonts to be used
+'guifontwide'     'gfw'     list of font names for double-wide characters
+'guiheadroom'     'ghr'     GUI: pixels room for window decorations
+'guioptions'      'go'      GUI: Which components and options are used
+'guipty'                    GUI: try to use a pseudo-tty for ":!" commands
+'guitablabel'     'gtl'     GUI: custom label for a tab page
+'helpfile'        'hf'      full path name of the main help file
+'helpheight'      'hh'      minimum height of a new help window
+'helplang'        'hlg'     preferred help languages
+'hidden'          'hid'     don't unload buffer when it is |abandon|ed
+'highlight'       'hl'      sets highlighting mode for various occasions
+'hlsearch'        'hls'     highlight matches with last search pattern
+'history'         'hi'      number of command-lines that are remembered
+'hkmap'           'hk'      Hebrew keyboard mapping
+'hkmapp'          'hkp'     phonetic Hebrew keyboard mapping
+'icon'                      let Vim set the text of the window icon
+'iconstring'                string to use for the Vim icon text
+'ignorecase'      'ic'      ignore case in search patterns
+'imactivatekey'   'imak'    key that activates the X input method
+'imcmdline'       'imc'     use IM when starting to edit a command line
+'imdisable'       'imd'     do not use the IM in any mode
+'iminsert'        'imi'     use :lmap or IM in Insert mode
+'imsearch'        'ims'     use :lmap or IM when typing a search pattern
+'include'         'inc'     pattern to be used to find an include file
+'includeexpr'     'inex'    expression used to process an include line
+'incsearch'       'is'      highlight match while typing search pattern
+'indentexpr'      'inde'    expression used to obtain the indent of a line
+'indentkeys'      'indk'    keys that trigger indenting with 'indentexpr'
+'infercase'       'inf'     adjust case of match for keyword completion
+'insertmode'      'im'      start the edit of a file in Insert mode
+'isfname'         'isf'     characters included in file names and pathnames
+'isident'         'isi'     characters included in identifiers
+'iskeyword'       'isk'     characters included in keywords
+'isprint'         'isp'     printable characters
+'joinspaces'      'js'      two spaces after a period with a join command
+'key'                       encryption key
+'keymap'          'kmp'     name of a keyboard mapping
+'keymodel'        'km'      enable starting/stopping selection with keys
+'keywordprg'      'kp'      program to use for the "K" command
+'langmap'         'lmap'    alphabetic characters for other language mode
+'langmenu'        'lm'      language to be used for the menus
+'laststatus'      'ls'      tells when last window has status lines
+'lazyredraw'      'lz'      don't redraw while executing macros
+'linebreak'       'lbr'     wrap long lines at a blank
+'lines'                     number of lines in the display
+'linespace'       'lsp'     number of pixel lines to use between characters
+'lisp'                      automatic indenting for Lisp
+'lispwords'       'lw'      words that change how lisp indenting works
+'list'                      show <Tab> and <EOL>
+'listchars'       'lcs'     characters for displaying in list mode
+'loadplugins'     'lpl'     load plugin scripts when starting up
+'magic'                     changes special characters in search patterns
+'makeef'          'mef'     name of the errorfile for ":make"
+'makeprg'         'mp'      program to use for the ":make" command
+'matchpairs'      'mps'     pairs of characters that "%" can match
+'matchtime'       'mat'     tenths of a second to show matching paren
+'maxfuncdepth'    'mfd'     maximum recursive depth for user functions
+'maxmapdepth'     'mmd'     maximum recursive depth for mapping
+'maxmem'          'mm'      maximum memory (in Kbyte) used for one buffer
+'maxmempattern'   'mmp'     maximum memory (in Kbyte) used for pattern search
+'maxmemtot'       'mmt'     maximum memory (in Kbyte) used for all buffers
+'menuitems'       'mis'     maximum number of items in a menu
+'mkspellmem'      'msm'     memory used before |:mkspell| compresses the tree
+'modeline'        'ml'      recognize modelines at start or end of file
+'modelines'       'mls'     number of lines checked for modelines
+'modifiable'      'ma'      changes to the text are not possible
+'modified'        'mod'     buffer has been modified
+'more'                      pause listings when the whole screen is filled
+'mouse'                     enable the use of mouse clicks
+'mousefocus'      'mousef'  keyboard focus follows the mouse
+'mousehide'       'mh'      hide mouse pointer while typing
+'mousemodel'      'mousem'  changes meaning of mouse buttons
+'mouseshape'      'mouses'  shape of the mouse pointer in different modes
+'mousetime'       'mouset'  max time between mouse double-click
+'mzquantum'       'mzq'     the interval between polls for MzScheme threads
+'nrformats'       'nf'      number formats recognized for CTRL-A command
+'number'          'nu'      print the line number in front of each line
+'numberwidth'     'nuw'     number of columns used for the line number
+'omnifunc'        'ofu'     function for filetype-specific completion
+'operatorfunc'    'opfunc'  funtion to be called for |g@| operator
+'osfiletype'      'oft'     operating system-specific filetype information
+'paragraphs'      'para'    nroff macros that separate paragraphs
+'paste'                     allow pasting text
+'pastetoggle'     'pt'      key code that causes 'paste' to toggle
+'patchexpr'       'pex'     expression used to patch a file
+'patchmode'       'pm'      keep the oldest version of a file
+'path'            'pa'      list of directories searched with "gf" et.al.
+'preserveindent'  'pi'      preserve the indent structure when reindenting
+'previewheight'   'pvh'     height of the preview window
+'previewwindow'   'pvw'     identifies the preview window
+'printdevice'     'pdev'    name of the printer to be used for :hardcopy
+'printencoding'   'penc'    encoding to be used for printing
+'printexpr'       'pexpr'   expression used to print PostScript for :hardcopy
+'printfont'       'pfn'     name of the font to be used for :hardcopy
+'printheader'     'pheader' format of the header used for :hardcopy
+'printmbcharset'  'pmbcs'   CJK character set to be used for :hardcopy
+'printmbfont'     'pmbfn'   font names to be used for CJK output of :hardcopy
+'printoptions'    'popt'    controls the format of :hardcopy output
+'quoteescape'     'qe'      escape characters used in a string
+'readonly'        'ro'      disallow writing the buffer
+'remap'                     allow mappings to work recursively
+'report'                    threshold for reporting nr. of lines changed
+'restorescreen'   'rs'      Win32: restore screen when exiting
+'revins'          'ri'      inserting characters will work backwards
+'rightleft'       'rl'      window is right-to-left oriented
+'rightleftcmd'    'rlc'     commands for which editing works right-to-left
+'ruler'           'ru'      show cursor line and column in the status line
+'rulerformat'     'ruf'     custom format for the ruler
+'runtimepath'     'rtp'     list of directories used for runtime files
+'scroll'          'scr'     lines to scroll with CTRL-U and CTRL-D
+'scrollbind'      'scb'     scroll in window as other windows scroll
+'scrolljump'      'sj'      minimum number of lines to scroll
+'scrolloff'       'so'      minimum nr. of lines above and below cursor
+'scrollopt'       'sbo'     how 'scrollbind' should behave
+'sections'        'sect'    nroff macros that separate sections
+'secure'                    secure mode for reading .vimrc in current dir
+'selection'       'sel'     what type of selection to use
+'selectmode'      'slm'     when to use Select mode instead of Visual mode
+'sessionoptions'  'ssop'    options for |:mksession|
+'shell'           'sh'      name of shell to use for external commands
+'shellcmdflag'    'shcf'    flag to shell to execute one command
+'shellpipe'       'sp'      string to put output of ":make" in error file
+'shellquote'      'shq'     quote character(s) for around shell command
+'shellredir'      'srr'     string to put output of filter in a temp file
+'shellslash'      'ssl'     use forward slash for shell file names
+'shelltemp'       'stmp'    whether to use a temp file for shell commands
+'shelltype'       'st'      Amiga: influences how to use a shell
+'shellxquote'     'sxq'     like 'shellquote', but include redirection
+'shiftround'      'sr'      round indent to multiple of shiftwidth
+'shiftwidth'      'sw'      number of spaces to use for (auto)indent step
+'shortmess'       'shm'     list of flags, reduce length of messages
+'shortname'       'sn'      non-MS-DOS: Filenames assumed to be 8.3 chars
+'showbreak'       'sbr'     string to use at the start of wrapped lines
+'showcmd'         'sc'      show (partial) command in status line
+'showfulltag'     'sft'     show full tag pattern when completing tag
+'showmatch'       'sm'      briefly jump to matching bracket if insert one
+'showmode'        'smd'     message on status line to show current mode
+'showtabline'     'stal'    tells when the tab pages line is displayed
+'sidescroll'      'ss'      minimum number of columns to scroll horizontal
+'sidescrolloff'   'siso'    min. nr. of columns to left and right of cursor
+'smartcase'       'scs'     no ignore case when pattern has uppercase
+'smartindent'     'si'      smart autoindenting for C programs
+'smarttab'        'sta'     use 'shiftwidth' when inserting <Tab>
+'softtabstop'     'sts'     number of spaces that <Tab> uses while editing
+'spell'                     enable spell checking
+'spellcapcheck'   'spc'     pattern to locate end of a sentence
+'spellfile'       'spf'     files where |zg| and |zw| store words
+'spelllang'       'spl'     language(s) to do spell checking for
+'spellsuggest'    'sps'     method(s) used to suggest spelling corrections
+'splitbelow'      'sb'      new window from split is below the current one
+'splitright'      'spr'     new window is put right of the current one
+'startofline'     'sol'     commands move cursor to first blank in line
+'statusline'      'stl'     custom format for the status line
+'suffixes'        'su'      suffixes that are ignored with multiple match
+'suffixesadd'     'sua'     suffixes added when searching for a file
+'swapfile'        'swf'     whether to use a swapfile for a buffer
+'swapsync'        'sws'     how to sync the swap file
+'switchbuf'       'swb'     sets behavior when switching to another buffer
+'synmaxcol'       'smc'     maximum column to find syntax items
+'syntax'          'syn'     syntax to be loaded for current buffer
+'tabstop'         'ts'      number of spaces that <Tab> in file uses
+'tabline'         'tal'     custom format for the console tab pages line
+'tabpagemax'      'tpm'     maximum number of tab pages for |-p| and "tab all"
+'tagbsearch'      'tbs'     use binary searching in tags files
+'taglength'       'tl'      number of significant characters for a tag
+'tagrelative'     'tr'      file names in tag file are relative
+'tags'            'tag'     list of file names used by the tag command
+'tagstack'        'tgst'    push tags onto the tag stack
+'term'                      name of the terminal
+'termbidi'        'tbidi'   terminal takes care of bi-directionality
+'termencoding'    'tenc'    character encoding used by the terminal
+'terse'                     shorten some messages
+'textauto'        'ta'      obsolete, use 'fileformats'
+'textmode'        'tx'      obsolete, use 'fileformat'
+'textwidth'       'tw'      maximum width of text that is being inserted
+'thesaurus'       'tsr'     list of thesaurus files for keyword completion
+'tildeop'         'top'     tilde command "~" behaves like an operator
+'timeout'         'to'      time out on mappings and key codes
+'timeoutlen'      'tm'      time out time in milliseconds
+'title'                     let Vim set the title of the window
+'titlelen'                  percentage of 'columns' used for window title
+'titleold'                  old title, restored when exiting
+'titlestring'               string to use for the Vim window title
+'toolbar'         'tb'      GUI: which items to show in the toolbar
+'toolbariconsize' 'tbis'    size of the toolbar icons (for GTK 2 only)
+'ttimeout'                  time out on mappings
+'ttimeoutlen'     'ttm'     time out time for key codes in milliseconds
+'ttybuiltin'      'tbi'     use built-in termcap before external termcap
+'ttyfast'         'tf'      indicates a fast terminal connection
+'ttymouse'        'ttym'    type of mouse codes generated
+'ttyscroll'       'tsl'     maximum number of lines for a scroll
+'ttytype'         'tty'     alias for 'term'
+'undolevels'      'ul'      maximum number of changes that can be undone
+'updatecount'     'uc'      after this many characters flush swap file
+'updatetime'      'ut'      after this many milliseconds flush swap file
+'verbose'         'vbs'     give informative messages
+'verbosefile'     'vfile'   file to write messages in
+'viewdir'         'vdir'    directory where to store files with :mkview
+'viewoptions'     'vop'     specifies what to save for :mkview
+'viminfo'         'vi'      use .viminfo file upon startup and exiting
+'virtualedit'     've'      when to use virtual editing
+'visualbell'      'vb'      use visual bell instead of beeping
+'warn'                      warn for shell command when buffer was changed
+'weirdinvert'     'wi'      for terminals that have weird inversion method
+'whichwrap'       'ww'      allow specified keys to cross line boundaries
+'wildchar'        'wc'      command-line character for wildcard expansion
+'wildcharm'       'wcm'     like 'wildchar' but also works when mapped
+'wildignore'      'wig'     files matching these patterns are not completed
+'wildmenu'        'wmnu'    use menu for command line completion
+'wildmode'        'wim'     mode for 'wildchar' command-line expansion
+'wildoptions'     'wop'     specifies how command line completion is done.
+'winaltkeys'      'wak'     when the windows system handles ALT keys
+'winheight'       'wh'      minimum number of lines for the current window
+'winfixheight'    'wfh'     keep window height when opening/closing windows
+'winminheight'    'wmh'     minimum number of lines for any window
+'winminwidth'     'wmw'     minimal number of columns for any window
+'winwidth'        'wiw'     minimal number of columns for current window
+'wrap'                      long lines wrap and continue on the next line
+'wrapmargin'      'wm'      chars from the right where wrapping starts
+'wrapscan'        'ws'      searches wrap around the end of the file
+'write'                     writing to a file is allowed
+'writeany'        'wa'      write to file with no need for "!" override
+'writebackup'     'wb'      make a backup before overwriting a file
+'writedelay'      'wd'      delay this many msec for each char (for debug)
 ------------------------------------------------------------------------------
 *Q_ur*		Undo/Redo commands
 
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt*    For Vim version 7.0aa.  Last change: 2005 Apr 01
+*remote.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -53,8 +53,8 @@ The following command line arguments are
 								*--remote-send*
    --remote-send {keys}		Send {keys} to server and exit.
 								*--remote-expr*
-   --remote-expr {expr}		Evaluate {expr} in server and
-				print the result on stdout.
+   --remote-expr {expr}		Evaluate {expr} in server and print the result
+   				on stdout.
 								*--serverlist*
    --serverlist			Output a list of server names.
 
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 04
+*spell.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -841,6 +841,29 @@ flags.  But Myspell doesn't support that
 anyway.  For compatibility use an 8-bit encoding.
 
 
+INFORMATION
+
+These entries in the affix file can be used to add information to the spell
+file.  There are no restrictions on the format, but they should be in the
+right encoding.
+
+				*spell-NAME* *spell-VERSION* *spell-HOME*
+				*spell-AUTHOR* *spell-EMAIL* *spell-COPYRIGHT*
+	NAME	  	Name of the language
+	VERSION   	1.0.1  with fixes
+	HOME		http://www.myhome.eu
+	AUTHOR		John Doe
+	EMAIL		john AT Doe DOT net
+	COPYRIGHT   	LGPL
+
+These fields are put in the .spl file as-is.  The |:spellinfo| command can be
+used to view the info.
+
+							*:spellinfo* *:spelli*
+:spelli[nfo]		Display the information for the spell file(s) used for
+			the current buffer.
+
+
 CHARACTER TABLES
 							*spell-affix-chars*
 When using an 8-bit encoding the affix file should define what characters are
@@ -1157,12 +1180,12 @@ words with this flag combine in any orde
 over which word comes first.  Example:
 	COMPOUNDFLAG c ~
 
-							*spell-COMPOUNDFLAGS*
+							*spell-COMPOUNDRULE*
 A more advanced method to specify how compound words can be formed uses
 multiple items with multiple flags.  This is not compatible with Myspell 3.0.
 Let's start with an example:
-	COMPOUNDFLAGS c+ ~
-	COMPOUNDFLAGS se ~
+	COMPOUNDRULE c+ ~
+	COMPOUNDRULE se ~
 
 The first line defines that words with the "c" flag can be concatenated in any
 order.  The second line defines compound words that are made of one word with
@@ -1180,7 +1203,7 @@ You can make these words:
 	soup
 	onionsoup
 
-The COMPOUNDFLAGS item may appear multiple times.  The argument is made out of
+The COMPOUNDRULE item may appear multiple times.  The argument is made out of
 one or more groups, where each group can be:
 	one flag			e.g., c
 	alternate flags inside []	e.g., [abc]
@@ -1190,20 +1213,20 @@ Optionally this may be followed by:
 
 This is similar to the regexp pattern syntax (but not the same!).  A few
 examples with the sequence of word flags they require:
-    COMPOUNDFLAGS x+	    x xx xxx etc.
-    COMPOUNDFLAGS yz	    yz
-    COMPOUNDFLAGS x+z	    xz xxz xxxz etc.
-    COMPOUNDFLAGS yx+	    yx yxx yxxx etc.
+    COMPOUNDRULE x+	    x xx xxx etc.
+    COMPOUNDRULE yz	    yz
+    COMPOUNDRULE x+z	    xz xxz xxxz etc.
+    COMPOUNDRULE yx+	    yx yxx yxxx etc.
 
-    COMPOUNDFLAGS [abc]z    az bz cz
-    COMPOUNDFLAGS [abc]+z   az aaz abaz bz baz bcbz cz caz cbaz etc.
-    COMPOUNDFLAGS a[xyz]+   ax axx axyz ay ayx ayzz az azy azxy etc.
-    COMPOUNDFLAGS sm*e	    se sme smme smmme etc.
-    COMPOUNDFLAGS s[xyz]*e  se sxe sxye sxyxe sye syze sze szye szyxe  etc.
+    COMPOUNDRULE [abc]z    az bz cz
+    COMPOUNDRULE [abc]+z   az aaz abaz bz baz bcbz cz caz cbaz etc.
+    COMPOUNDRULE a[xyz]+   ax axx axyz ay ayx ayzz az azy azxy etc.
+    COMPOUNDRULE sm*e	    se sme smme smmme etc.
+    COMPOUNDRULE s[xyz]*e  se sxe sxye sxyxe sye syze sze szye szyxe  etc.
 
 A specific example: Allow a compound to be made of two words and a dash:
 	In the .aff file:
-	    COMPOUNDFLAGS sde ~
+	    COMPOUNDRULE sde ~
 	    NEEDAFFIX x ~
 	    COMPOUNDMAX 3 ~
 	    COMPOUNDMIN 1 ~
@@ -1237,7 +1260,7 @@ specified with COMPOUNDMAX.  Example:
 When omitted there is no maximum.  It applies to all compound words.
 
 To set a limit for words with specific flags make sure the items in
-COMPOUNDFLAGS where they appear don't allow too many words.
+COMPOUNDRULE where they appear don't allow too many words.
 
 							*spell-COMPOUNDSYLMAX*
 The maximum number of syllables that a compound word may contain is specified
@@ -1458,14 +1481,20 @@ CIRCUMFIX	(Hunspell)				*spell-CIRCUMFIX
 COMPLEXPREFIXES  (Hunspell)				*spell-COMPLEXPREFIXES*
 		Enables using two prefixes.  Not supported.
 
+COMPOUND	(Hunspell)				*spell-COMPOUND*
+                This is one line with the count of COMPOUND items, followd by
+                that many COMPOUND lines with a pattern.
+                Remove the first line with the count and rename the other
+                items to COMPOUNDRULE |spell-COMPOUNDRULE|
+
 COMPOUNDBEGIN	(Hunspell)				*spell-COMPOUNDBEGIN*
-		Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
+		Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
 
 COMPOUNDEND	(Hunspell)				*spell-COMPOUNDEND*
-		Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
+		Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
 
 COMPOUNDMIDDLE	(Hunspell)				*spell-COMPOUNDMIDDLE*
-		Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
+		Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
 
 COMPOUNDROOT	(Hunspell)				*spell-COMPOUNDROOT*
 		Flag for words in the dictionary that are already a compound.
@@ -1481,9 +1510,6 @@ COMPOUNDWORDMAX	(Hunspell)				*spell-COM
 FORBIDDENWORD	(Hunspell)				*spell-FORBIDDENWORD*
 		Use BAD instead. |spell-BAD|
 
-HOME		(Hunspell)				*spell-HOME*
-		Specifies the website for the language.  Not supported.
-
 LANG		(Hunspell)				*spell-LANG*
 		This specifies language-specific behavior.  This actually
 		moves part of the language knowledge into the program,
@@ -1496,9 +1522,6 @@ LEMMA_PRESENT	(Hunspell)				*spell-LEMMA
 MAXNGRAMSUGS	(Hunspell)				*spell-MAXNGRAMSUGS*
 		Not supported.
 
-NAME		(Hunspell)				*spell-NAME*
-		Specifies the name of the language.  Not supported.
-
 ONLYINCOMPOUND	(Hunspell)				*spell-ONLYINCOMPOUND*
 		Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
 
@@ -1515,9 +1538,6 @@ TRY		(Myspell, Hunspell, others)		*spell
 		Vim does not use the TRY item, it is ignored.  For making
 		suggestions the actual characters in the words are used.
 
-VERSION		(Hunspell)				*spell-VERSION*
-		Specifies the version for the language.  Not supported.
-
 WORDCHARS	(Hunspell)				*spell-WORDCHARS*
 		Used to recognize words.  Vim doesn't need it, because there
 		is no need to separate words before checking them (using a
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 01
+*starting.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1129,6 +1129,7 @@ you want to make this file your default 
 (on Unix), s: (Amiga) or $VIM directory (MS-DOS).  You could also use
 autocommands |autocommand| and/or modelines |modeline|.
 
+						*vimrc-option-example*
 If you only want to add a single option setting to your vimrc, you can use
 these steps:
 1. Edit your vimrc file with Vim.
@@ -1138,6 +1139,7 @@ 3. Append a line to set the value of the
    '=' to enter the value.  E.g., for the 'guifont' option: >
    o:set guifont=<C-R>=&guifont<CR><Esc>
 <  [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key]
+   You need to escape special characters, esp. spaces.
 
 Note that when you create a .vimrc file, this can influence the 'compatible'
 option, which has several side effects.  See |'compatible'|.
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -356,11 +356,13 @@
 'mat'	options.txt	/*'mat'*
 'matchpairs'	options.txt	/*'matchpairs'*
 'matchtime'	options.txt	/*'matchtime'*
+'maxcombine'	options.txt	/*'maxcombine'*
 'maxfuncdepth'	options.txt	/*'maxfuncdepth'*
 'maxmapdepth'	options.txt	/*'maxmapdepth'*
 'maxmem'	options.txt	/*'maxmem'*
 'maxmempattern'	options.txt	/*'maxmempattern'*
 'maxmemtot'	options.txt	/*'maxmemtot'*
+'mco'	options.txt	/*'mco'*
 'mef'	options.txt	/*'mef'*
 'menuitems'	options.txt	/*'menuitems'*
 'mesg'	vi_diff.txt	/*'mesg'*
@@ -2547,8 +2549,12 @@ 90.5	usr_90.txt	/*90.5*
 :spelld	spell.txt	/*:spelld*
 :spelldump	spell.txt	/*:spelldump*
 :spellgood	spell.txt	/*:spellgood*
+:spelli	spell.txt	/*:spelli*
+:spellinfo	spell.txt	/*:spellinfo*
 :spellr	spell.txt	/*:spellr*
 :spellrepall	spell.txt	/*:spellrepall*
+:spellu	spell.txt	/*:spellu*
+:spellundo	spell.txt	/*:spellundo*
 :spellw	spell.txt	/*:spellw*
 :spellwrong	spell.txt	/*:spellwrong*
 :split	windows.txt	/*:split*
@@ -5188,6 +5194,7 @@ ft-ocaml-syntax	syntax.txt	/*ft-ocaml-sy
 ft-papp-syntax	syntax.txt	/*ft-papp-syntax*
 ft-pascal-syntax	syntax.txt	/*ft-pascal-syntax*
 ft-perl-syntax	syntax.txt	/*ft-perl-syntax*
+ft-php-omni	insert.txt	/*ft-php-omni*
 ft-php-syntax	syntax.txt	/*ft-php-syntax*
 ft-php3-syntax	syntax.txt	/*ft-php3-syntax*
 ft-phtml-syntax	syntax.txt	/*ft-phtml-syntax*
@@ -5932,6 +5939,8 @@ matchstr()	eval.txt	/*matchstr()*
 max()	eval.txt	/*max()*
 mbyte-IME	mbyte.txt	/*mbyte-IME*
 mbyte-XIM	mbyte.txt	/*mbyte-XIM*
+mbyte-combining	mbyte.txt	/*mbyte-combining*
+mbyte-composing	mbyte.txt	/*mbyte-composing*
 mbyte-conversion	mbyte.txt	/*mbyte-conversion*
 mbyte-encoding	mbyte.txt	/*mbyte-encoding*
 mbyte-first	mbyte.txt	/*mbyte-first*
@@ -6189,6 +6198,7 @@ new-line-continuation	version5.txt	/*new
 new-location-list	version7.txt	/*new-location-list*
 new-manpage-trans	version7.txt	/*new-manpage-trans*
 new-matchparen	version7.txt	/*new-matchparen*
+new-more-unicode	version7.txt	/*new-more-unicode*
 new-multi-byte	version5.txt	/*new-multi-byte*
 new-multi-lang	version6.txt	/*new-multi-lang*
 new-netrw-explore	version7.txt	/*new-netrw-explore*
@@ -6291,6 +6301,7 @@ pattern-multi-items	pattern.txt	/*patter
 pattern-overview	pattern.txt	/*pattern-overview*
 pattern-searches	pattern.txt	/*pattern-searches*
 pattern.txt	pattern.txt	/*pattern.txt*
+patterns-composing	pattern.txt	/*patterns-composing*
 pdev-option	print.txt	/*pdev-option*
 penc-option	print.txt	/*penc-option*
 perl	if_perl.txt	/*perl*
@@ -6583,6 +6594,7 @@ scrolling	scroll.txt	/*scrolling*
 scrollstart-variable	eval.txt	/*scrollstart-variable*
 sdl.vim	syntax.txt	/*sdl.vim*
 search()	eval.txt	/*search()*
+search()-sub-match	eval.txt	/*search()-sub-match*
 search-commands	pattern.txt	/*search-commands*
 search-offset	pattern.txt	/*search-offset*
 search-pattern	pattern.txt	/*search-pattern*
@@ -6656,6 +6668,7 @@ special-buffers	windows.txt	/*special-bu
 speed-up	tips.txt	/*speed-up*
 spell	spell.txt	/*spell*
 spell-ACCENT	spell.txt	/*spell-ACCENT*
+spell-AUTHOR	spell.txt	/*spell-AUTHOR*
 spell-BAD	spell.txt	/*spell-BAD*
 spell-CHECKCOMPOUNDCASE	spell.txt	/*spell-CHECKCOMPOUNDCASE*
 spell-CHECKCOMPOUNDDUP	spell.txt	/*spell-CHECKCOMPOUNDDUP*
@@ -6665,19 +6678,22 @@ spell-CHECKCOMPOUNDTRIPLE	spell.txt	/*sp
 spell-CIRCUMFIX	spell.txt	/*spell-CIRCUMFIX*
 spell-COMMON	spell.txt	/*spell-COMMON*
 spell-COMPLEXPREFIXES	spell.txt	/*spell-COMPLEXPREFIXES*
+spell-COMPOUND	spell.txt	/*spell-COMPOUND*
 spell-COMPOUNDBEGIN	spell.txt	/*spell-COMPOUNDBEGIN*
 spell-COMPOUNDEND	spell.txt	/*spell-COMPOUNDEND*
 spell-COMPOUNDFLAG	spell.txt	/*spell-COMPOUNDFLAG*
-spell-COMPOUNDFLAGS	spell.txt	/*spell-COMPOUNDFLAGS*
 spell-COMPOUNDFORBIDFLAG	spell.txt	/*spell-COMPOUNDFORBIDFLAG*
 spell-COMPOUNDMAX	spell.txt	/*spell-COMPOUNDMAX*
 spell-COMPOUNDMIDDLE	spell.txt	/*spell-COMPOUNDMIDDLE*
 spell-COMPOUNDMIN	spell.txt	/*spell-COMPOUNDMIN*
 spell-COMPOUNDPERMITFLAG	spell.txt	/*spell-COMPOUNDPERMITFLAG*
 spell-COMPOUNDROOT	spell.txt	/*spell-COMPOUNDROOT*
+spell-COMPOUNDRULE	spell.txt	/*spell-COMPOUNDRULE*
 spell-COMPOUNDSYLLABLE	spell.txt	/*spell-COMPOUNDSYLLABLE*
 spell-COMPOUNDSYLMAX	spell.txt	/*spell-COMPOUNDSYLMAX*
 spell-COMPOUNDWORDMAX	spell.txt	/*spell-COMPOUNDWORDMAX*
+spell-COPYRIGHT	spell.txt	/*spell-COPYRIGHT*
+spell-EMAIL	spell.txt	/*spell-EMAIL*
 spell-FLAG	spell.txt	/*spell-FLAG*
 spell-FOL	spell.txt	/*spell-FOL*
 spell-FORBIDDENWORD	spell.txt	/*spell-FORBIDDENWORD*
@@ -6741,6 +6757,7 @@ spell-wordlist-format	spell.txt	/*spell-
 spell-yiddish	spell.txt	/*spell-yiddish*
 spell.txt	spell.txt	/*spell.txt*
 spellbadword()	eval.txt	/*spellbadword()*
+spellfile-cleanup	spell.txt	/*spellfile-cleanup*
 spellfile.vim	spell.txt	/*spellfile.vim*
 spellsuggest()	eval.txt	/*spellsuggest()*
 split()	eval.txt	/*split()*
@@ -7415,6 +7432,7 @@ viminfo-write	starting.txt	/*viminfo-wri
 vimrc	starting.txt	/*vimrc*
 vimrc-filetype	usr_05.txt	/*vimrc-filetype*
 vimrc-intro	usr_05.txt	/*vimrc-intro*
+vimrc-option-example	starting.txt	/*vimrc-option-example*
 vimrc_example.vim	usr_05.txt	/*vimrc_example.vim*
 vimtutor	usr_01.txt	/*vimtutor*
 virtcol()	eval.txt	/*virtcol()*
@@ -7636,6 +7654,10 @@ zo	fold.txt	/*zo*
 zr	fold.txt	/*zr*
 zs	scroll.txt	/*zs*
 zt	scroll.txt	/*zt*
+zuG	spell.txt	/*zuG*
+zuW	spell.txt	/*zuW*
+zug	spell.txt	/*zug*
+zuw	spell.txt	/*zuw*
 zv	fold.txt	/*zv*
 zw	spell.txt	/*zw*
 zx	fold.txt	/*zx*
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 04
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,69 +30,10 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Add options to optwin.vim:
-tabpagemax
-tabline
-showtabline
-guitablabel
-formatexpr
-
-Add options to quickref.txt:
-guitablabel
-showtabline
-tabline
-tabpagemax
-
-spelling:
-- Rename COMPOUNDFLAGS to COMPOUNDPATTERN or COMPOUNDRULE?
-    Hunspell now uses COMPOUND with a count.
-- Check out Hunspell 1.1.3.
-    Try to make the newly added features compatible.
-    what does MAXNGRAMSUGS do?
-    See announcement (Nemeth, 5 jan)
-    is COMPLEXPREFIXES necessary now that we have flags for affixes?
-- Look into Hungarian dictionary:
-  http://magyarispell.sourceforge.net/hu_HU-1.0.tar.gz
-- When compounding Hunspell doesn't allow affixes inside the compound word,
-  only before and after it.  COMPOUNDPERMITFLAG can be used to allow it.
-  Check Myspell and Aspell if they also work this way.
-  Thus a word + suffix needs a flag that it can't be used with a following
-  compound, and word + prefix can't be after another word in a compound.
-- Implement COMPOUNDFORBIDFLAG .
-
-Mac unicode patch (Da Woon Jung):
--   Mac: Unicode input and display (Eckehard Berns, 2004 June 27)
-    Other patch from Da Woon Jung, 2005 Jan 16.
-8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
-    New patch 2004 Jun 16
-- configuration option for platform: i386, ppc or both.
-    Use __LITTLE_ENDIAN__ to test for current platform.
-- selecting proportional font breaks display
-- UTF-8 text causes display problems.  Font replacement causes this.
-- Command-key mappings do not work. (Alan Schmitt)
-- Add default key mappings for the command key (Alan Schmitt)
-    use http://macvim.org/OSX/files/gvimrc
-- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
-  (Alan Schmitt)
-
-8   Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
-    Add the 'maxcombining' option to set the nr. of composing characters.
-    At the same time support 32 bit Unicode characters?
-8   "ga" should show all composing characters, also if there are more than 2.
-8   Searching for a composing character by itself should work.  Perhaps "."
-    with a composing char should work too.
-
-Win32: Use the free downloadable compiler 7.1 (2003).  Figure out how to do
-debugging (with Agide?) and describe it. (George Reilly)
-Try out using the free MS compiler and debugger, using Make_mvc.mak.
-Also generate the .pdb file that can be used to generate a useful crash report
-on MS-Windows. (George Reilly)
-
-Win32: Check that installer puts menu items in "all users" dir when possible,
-not administrator dir.
-
-When "= evaluation results in a List, use it as a sequence of lines.
-As if join(list, "\n") was used.
+When expanding on the command line, recognize shell commands, such as ":!cmd".
+    Move from ExpandFromContext() to separate function.
+    Check for file being executable.  EW_EXEC
+    Escape special characters ";&<>(){}". Also in file names. (Adri Verhoef)
 
 Autoload:
 - Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
@@ -105,12 +46,23 @@ Autoload:
     helpfile doc/myscript.txt
   For the "helpfile" item ":helptags" is run.
 
-When expanding on the command line, recognize shell commands, such as ":!cmd".
-Complete command names by searching in $PATH.  When completing file names
-escape special characters ";&<>(){}". (Adri Verhoef)
+Win32: Describe how to do debugging and describe it. (George Reilly)
 
 Are there more commands where v:swapcommand can be set to something useful?
 
+Mac unicode patch (Da Woon Jung):
+-   Mac: Unicode input and display (Eckehard Berns, 2004 June 27)
+    Other patch from Da Woon Jung, 2005 Jan 16.
+8   Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
+    New patch 2004 Jun 16
+- selecting proportional font breaks display
+- UTF-8 text causes display problems.  Font replacement causes this.
+- Command-key mappings do not work. (Alan Schmitt)
+- Add default key mappings for the command key (Alan Schmitt)
+    use http://macvim.org/OSX/files/gvimrc
+- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
+  (Alan Schmitt)
+
 
 CONSIDERED FOR VERSION 7.0:
 
@@ -1301,6 +1253,21 @@ 7   Add local highlighting for each tab 
 
 
 Spell checking:
+-   Implement COMPOUNDFORBIDFLAG .
+-   Check out Hunspell 1.1.4.
+    The manpage doesn't match the source code...
+    Try to make the newly added features compatible.
+    what does MAXNGRAMSUGS do?
+    is COMPLEXPREFIXES necessary when we have flags for affixes?
+-   Look into Hungarian dictionary: hu_HU-1.0.tar.gz
+    This one doesn't match with Hunspell 1.1.4.
+-   Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
+    How is it supposed to work?
+-   When compounding Hunspell doesn't allow affixes inside the compound word,
+    only before and after it.  COMPOUNDPERMITFLAG can be used to allow it.
+    Check Myspell and Aspell if they also work this way.
+    Thus a word + suffix needs a flag that it can't be used with a following
+    compound, and word + prefix can't be after another word in a compound.
 -   suggestion for "KG" to "kg" when it's keepcase.
 -   Support flags on a suffix.  Used for second level affixes, rare and
     nocomp.  The flags may also be used for compounding.  Default is an OR
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 20
+*various.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -55,14 +55,16 @@ ga			Print the ascii value of the charac
 			The <Nul> character in a file is stored internally as
 			<NL>, but it will be shown as:
 				<^@>  0,  Hex 00,  Octal 000 ~
+			If the character has composing characters these are
+			also shown.  The value of 'maxcombine' doesn't matter.
 			Mnemonic: Get Ascii value.  {not in Vi}
 
 							*g8*
 g8			Print the hex values of the bytes used in the
 			character under the cursor, assuming it is in |UTF-8|
-			encoding.  This also shows composing characters.
-			Example of a character with three composing
-			characters:
+			encoding.  This also shows composing characters.  The
+			value of 'maxcombine' doesn't matter.
+			Example of a character with two composing characters:
 				e0 b8 81 + e0 b8 b9 + e0 b9 89 ~
 			{not in Vi}
 
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 04
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -23,6 +23,7 @@ Spell checking				|new-spell|
 Omni completion				|new-omni-completion|
 MzScheme interface			|new-MzScheme|
 Printing multi-byte text		|new-print-multi-byte|
+Extended Unicode support		|new-more-unicode|
 Highlighting matching parens		|new-matchparen|
 Translated manual pages			|new-manpage-trans|
 Internal grep				|new-vimgrep|
@@ -234,6 +235,23 @@ The 'printmbcharset' and 'printmbfont' o
 Also see |postscript-cjk-printing|.  (Mike Williams)
 
 
+Extended Unicode support				*new-more-unicode*
+------------------------
+
+Previously only two combining characters were displayed.  The limit is now
+raised to 6.  This can be set with the 'maxcombine' option.  The default is
+still 2.
+
+|ga| now shows all combining characters, not just the first two.
+
+Previously only 16 bit Unicode characters were supported for displaying.  Now
+the full 32 bit character set can be used.  Unless manually disabled at
+compile time.
+
+For pattern matching it is now possible to search for individual composing
+characters. |patterns-composing|
+
+
 Highlighting matching parens				*new-matchparen*
 ----------------------------
 
@@ -1090,13 +1108,6 @@ Dropped the support for the BeOS and Ami
 probably didn't work.  If you want to work on this: get the Vim 6.x version
 and merge it back in.
 
-Mac: "make" now creates the Vim.app directory and "make install" copies it to
-its final destination. (Raf)
-
-Mac: Made it possible to compile with Motif, Athena or GTK without tricks and
-still being able to use the MacRoman conversion.  Added the os_mac_conv.c
-file.
-
 When running the tests and one of them fails to produce "test.out" the
 following tests are still executed.  This helps when running out of memory.
 
@@ -1114,13 +1125,34 @@ functions.
 Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
 without copying the code.
 
-Mac: When running "make install" the runtime files are installed as for Unix.
+--- Mac ---
+
+"make" now creates the Vim.app directory and "make install" copies it to its
+final destination. (Raf)
+
+Made it possible to compile with Motif, Athena or GTK without tricks and still
+being able to use the MacRoman conversion.  Added the os_mac_conv.c file.
+
+When running "make install" the runtime files are installed as for Unix.
 Avoids that too many files are copied.  When running "make" a link to the
 runtime files is created to avoid a recursive copy that takes much time.
 
-Mac: Configure will attempt to build Vim for both Intel and PowerPC.  The
+Configure will attempt to build Vim for both Intel and PowerPC.  The
 --with-mac-arch configure argument can change it.
 
+--- Win32 ---
+
+The Make_mvc.mak file was adjusted to work with the latest MS compilers,
+including the free version of Visual Studio 2005. (George Reilly)
+
+INSTALLpc.txt was updated for the recent changes. (George Reilly)
+
+The distributed executable is now produced with the free Visual C++ Toolkit
+2003 and other free SDK chunks.  msvcsetup.bat was added to support this.
+
+Also generate the .pdb file that can be used to generate a useful crash report
+on MS-Windows. (George Reilly)
+
 ==============================================================================
 BUG FIXES						*bug-fixes-7*
 
@@ -1818,4 +1850,16 @@ When using Select mode from Insert mode 
 deleted and a message displayed, delayed the effect of inserting the key.
 Now overwrite the message without delay.
 
+When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line
+worked differently.  Now recognize all operators when using "l" at the end of
+a line.
+
+GTK GUI: when the font selector returned a font name with a comma in it then
+it would be handled like two font names.  Now put a backslash before the
+comma.
+
+MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for
+'iskeyword' was still for CPxxx.  And when 'nocompatible' was set 'isprint'
+would also be the wrong value.
+
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 01
+" Last Change:	2006 Mar 05
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1298,7 +1298,7 @@ au BufNewFile,BufRead *.rexx,*.rex		setf
 au BufNewFile,BufRead *.s,*.S			setf r
 
 " R Help file
-au BufNewFile,BufRead *.rd,*.Rd			setf rd
+au BufNewFile,BufRead *.rd,*.Rd			setf rhelp
 
 " Rexx, Rebol or R
 au BufNewFile,BufRead *.r,*.R			call s:FTr()
--- a/runtime/ftplugin/php.vim
+++ b/runtime/ftplugin/php.vim
@@ -51,6 +51,11 @@ if exists("loaded_matchit")
 endif
 " ###
 
+if exists('&ofu')
+  setlocal ofu=phpcomplete#CompletePHP
+endif
+
+
 setlocal commentstring=/*%s*/
 
 " Undo the stuff we changed.
--- a/runtime/lang/menu_de_de.latin1.vim
+++ b/runtime/lang/menu_de_de.latin1.vim
@@ -2,7 +2,7 @@
 " Maintainer:		Georg Dahn <gorgyd@yahoo.co.uk>
 " Originally By:	Marcin Dalecki <dalecki@cs.net.pl>
 "            		Johannes Zellner <johannes@zellner.org>
-" Last Change:	Sun, 17 Apr 2005 18:28:58 CEST
+" Last Change:	Sun, 5 Mar 2006 07:20:00 CEST
 " vim:set foldmethod=marker tabstop=8:
 
 " Quit when menu translations have already been done.
@@ -21,6 +21,7 @@ endif
 menutrans &File				&Datei
 menutrans &Open\.\.\.<Tab>:e		&Öffnen\.\.\.<Tab>:e
 menutrans Sp&lit-Open\.\.\.<Tab>:sp	In\ geteiltem\ &Fenster\ Öffnen\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	In\ neuem\ &Tab\ Öffnen\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Neue\ Datei<Tab>:enew
 menutrans &Close<Tab>:close		S&chließen<Tab>:close
 menutrans &Save<Tab>:w			&Speichern<Tab>:w
@@ -100,6 +101,22 @@ menutrans &Keymap					&Tastatur-Belegung
 " }}} EDIT / EDITIEREN
 
 " {{{  TOOLS / WERKZEUGE
+if has("syntax")
+    menutrans &Spelling					&Rechtschreibung
+    menutrans &Spell\ Check\ On				&Rechtschreibung\ an
+    menutrans Spell\ Check\ &Off			Rechtschreibung\ &aus
+    menutrans To\ &Next\ error<Tab>]s			Zum\ &nächsten\ Fehler<Tab>]s
+    menutrans To\ &Previous\ error<Tab>[s		Zum\ &letzten\ Fehler<Tab>[s
+    menutrans Suggest\ &Corrections<Tab>z?		&Korrekturvorschläge<Tab>z?
+    menutrans &Repeat\ correction<Tab>:spellrepall	&Wiederhole\ Korrektur<Tab>:spellrepall
+    menutrans Set\ language\ to\ "en"			Verwende\ Wörterbuch\ "en"
+    menutrans Set\ language\ to\ "en_au"		Verwende\ Wörterbuch\ "en_au"
+    menutrans Set\ language\ to\ "en_ca"		Verwende\ Wörterbuch\ "en_ca"
+    menutrans Set\ language\ to\ "en_gb"		Verwende\ Wörterbuch\ "en_gb"
+    menutrans Set\ language\ to\ "en_nz"		Verwende\ Wörterbuch\ "en_nz"
+    menutrans Set\ language\ to\ "en_us"		Verwende\ Wörterbuch\ "en_us"
+    menutrans &Find\ More\ Languages			&Suche\ nach\ Wörterbüchern
+endif
 if has("folding")
   menutrans &Folding					Fa&ltung
   " open close folds
@@ -147,7 +164,7 @@ menutrans &Older\ List<Tab>:cold			&Ältere\ Liste<Tab>:cold
 menutrans N&ewer\ List<Tab>:cnew			&Neuere\ Liste<Tab>:cnew
 
 menutrans Error\ &Window				Feh&ler-Fenster
-menutrans &Set\ Compiler				&Compiler
+menutrans Se&T\ Compiler				&Compiler
 menutrans &Update<Tab>:cwin				&Aktualisieren<Tab>:cwin
 menutrans &Open<Tab>:copen				&Öffnen<Tab>:copen
 menutrans &Close<Tab>:cclose				&Schließen<Tab>:cclose
@@ -184,7 +201,7 @@ menutrans [No\ File]					[Keine\ Datei]
 menutrans &Window			&Ansicht
 menutrans &New<Tab>^Wn			&Neu<Tab>^Wn
 menutrans S&plit<Tab>^Ws		Aufs&palten<Tab>^Ws
-menutrans Split\ &Vertically<Tab>^Wv	&Vertikal\ Aufspalten<Tab>^Ws
+menutrans Split\ &Vertically<Tab>^Wv	&Vertikal\ Aufspalten<Tab>^Wv
 menutrans Split\ File\ E&xplorer	Ver&zeichnis
 menutrans Sp&lit\ To\ #<Tab>^W^^	Aufspa&lten\ in\ #<Tab>^W^^
 menutrans &Close<Tab>^Wc		&Schließen<Tab>^Wc
@@ -228,6 +245,8 @@ menutrans &Paste			&Einfügen
 menutrans &Delete			&Löschen
 menutrans Select\ Blockwise		Auswahl\ Blockartig
 menutrans Select\ &Word			Auswahl\ des\ &Wortes
+menutrans Select\ &Sentence             Auswahl\ des\ Sa&tzes
+menutrans Select\ Pa&ragraph            Auswahl\ des\ Absatzes
 menutrans Select\ &Line			Auswahl\ der\ &Zeile
 menutrans Select\ &Block		Auswahl\ des\ &Blocks
 menutrans Select\ &All			&Alles\ Auswählen
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Feb 25
+" Last Change:	2006 Mar 05
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -419,7 +419,7 @@ if has("spell")
   an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off		:set nospell<CR>
   an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s	]s
   an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s	[s
-  an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z?	z?
+  an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z=	z=
   an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall	:spellrepall<CR>
   an 40.335.200 &Tools.&Spelling.-SEP1-				<Nop>
   an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en"	:set spl=en spell<CR>
--- a/runtime/optwin.vim
+++ b/runtime/optwin.vim
@@ -1,7 +1,7 @@
 " These commands create the option window.
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Jan 13
+" Last Change:	2006 Mar 05
 
 " If there already is an option window, jump to that one.
 if bufwinnr("option-window") > 0
@@ -463,6 +463,17 @@ if has("scrollbind")
 endif
 
 
+call <SID>Header("multiple tab pages")
+call append("$", "showtabline\t0, 1 or 2; when to use a tab pages line")
+call append("$", " \tset stal=" . &stal)
+call append("$", "tabpagemax\tmaximum number of tab pages to open for -p and \"tab all\"")
+call append("$", " \tset tpm=" . &tpm)
+call append("$", "tabline\tcustom tab pages line")
+call <SID>OptionG("tal", &tal)
+call append("$", "guitablabel\tcustom tab page label for the GUI")
+call <SID>OptionG("gtl", &gtl)
+
+
 call <SID>Header("terminal")
 call append("$", "term\tname of the used terminal")
 call <SID>OptionG("term", &term)
@@ -697,6 +708,11 @@ call <SID>OptionL("fo")
 call append("$", "formatlistpat\tpattern to recognize a numbered list")
 call append("$", "\t(local to buffer)")
 call <SID>OptionL("flp")
+if has("eval")
+  call append("$", "formatexpr\texpression used for \"gq\" to format lines")
+  call append("$", "\t(local to buffer)")
+  call <SID>OptionL("fex")
+endif
 if has("insert_expand")
   call append("$", "complete\tspecifies how Insert mode completion works for CTRL-N and CTRL-P")
   call append("$", "\t(local to buffer)")
--- a/runtime/syntax/logtalk.vim
+++ b/runtime/syntax/logtalk.vim
@@ -2,7 +2,7 @@
 "
 " Language:	Logtalk
 " Maintainer:	Paulo Moura <pmoura@logtalk.org>
-" Last Change:	June 6, 2005
+" Last Change:	February 24, 2006
 
 
 " Quit when a syntax file was already loaded:
@@ -89,6 +89,14 @@ syn region	logtalkDir		matchgroup=logtal
 syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- uses("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
 
 
+" Module directives
+
+syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
+syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- export("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
+syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- meta_predicate("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
+syn region	logtalkDir		matchgroup=logtalkDirTag	start=":- use_module("		matchgroup=logtalkDirTag	end=")\."	contains=ALL
+
+
 " Logtalk built-in predicates
 
 syn match	logtalkBuiltIn		"\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
@@ -129,6 +137,7 @@ syn match	logtalkBuiltInMethod	"\<before
 syn match	logtalkBuiltInMethod	"\<after\ze("
 
 syn match	logtalkBuiltInMethod	"\<expand_term\ze("
+syn match	logtalkBuiltInMethod	"\<term_expansion\ze("
 syn match	logtalkBuiltInMethod	"\<phrase\ze("
 
 
deleted file mode 100644
--- a/runtime/syntax/rd.vim
+++ /dev/null
@@ -1,162 +0,0 @@
-" Vim syntax file
-" Language:    R Help File
-" Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2006 Mär 01
-" Version:     0.5
-" Remarks:     - Now includes R syntax highlighting in the appropriate
-"                sections if an r.vim file is in the same directory or in the
-"                default debian location.
-"              - I didn't yet include any special markup for S4 methods.
-"              - The two versions of \item{}{} markup are not 
-"                distinguished (in the \arguments{} environment, the items to
-"                be described are R identifiers, but not in the \describe{}
-"                environment).
-"              - There is no Latex markup in equations
-
-" Version Clears: {{{1
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600 
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
-endif 
-
-syn case match
-
-" Rd identifiers {{{
-syn region rdIdentifier matchgroup=rdSection	start="\\name{" end="}" 
-syn region rdIdentifier matchgroup=rdSection	start="\\alias{" end="}" 
-syn region rdIdentifier matchgroup=rdSection	start="\\pkg{" end="}" 
-syn region rdIdentifier matchgroup=rdSection	start="\\item{" end="}" contained
-syn region rdIdentifier matchgroup=rdSection start="\\method{" end=/}/ contained
-
-" Highlighting of R code using an existing r.vim syntax file if available {{{1
-let s:syntaxdir = expand("<sfile>:p:h") "look in the directory of this file
-let s:rsyntax = s:syntaxdir . "/r.vim"
-if filereadable(s:rsyntax)  
-  syn include @R <sfile>:p:h/r.vim
-elseif filereadable('/usr/share/vim/vim64/syntax/r.vim')  "and debian location
-  syn include @R /usr/share/vim/vimcurrent/syntax/r.vim
-else 
-  syn match rdRComment /\#.*/				"if no r.vim is found, do comments
-  syn cluster R contains=rdRComment 
-endif
-syn region rdRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdSection
-syn region rdRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdIdentifier
-syn region rdRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
-syn region rdRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
-syn region rdRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
-
-" Strings {{{1
-syn region rdString start=/"/ end=/"/ 
-
-" Special TeX characters  ( \$ \& \% \# \{ \} \_) {{{1
-syn match rdSpecialChar        "\\[$&%#{}_]"
-
-" Special Delimiters {{{1
-syn match rdDelimiter		"\\cr"
-syn match rdDelimiter		"\\tab "
-
-" Keywords {{{1
-syn match rdKeyword	"\\R"
-syn match rdKeyword	"\\dots"
-syn match rdKeyword	"\\ldots"
-
-" Links {{{1
-syn region rdLink matchgroup=rdSection start="\\link{" end="}" contained keepend
-syn region rdLink matchgroup=rdSection start="\\link\[.*\]{" end="}" contained keepend
-
-" Type Styles {{{1
-syn match rdType		"\\emph\>"
-syn match rdType		"\\strong\>"
-syn match rdType		"\\bold\>"
-syn match rdType		"\\sQuote\>"
-syn match rdType		"\\dQuote\>"
-syn match rdType		"\\code\>"
-syn match rdType		"\\preformatted\>"
-syn match rdType		"\\kbd\>"
-syn match rdType		"\\samp\>"
-syn match rdType		"\\eqn\>"
-syn match rdType		"\\deqn\>"
-syn match rdType		"\\file\>"
-syn match rdType		"\\email\>"
-syn match rdType		"\\url\>"
-syn match rdType		"\\var\>"
-syn match rdType		"\\env\>"
-syn match rdType		"\\option\>"
-syn match rdType		"\\command\>"
-syn match rdType		"\\dfn\>"
-syn match rdType		"\\cite\>"
-syn match rdType		"\\acronym\>"
-
-" Rd sections {{{1
-syn match rdSection		"\\encoding\>"
-syn match rdSection		"\\title\>"
-syn match rdSection		"\\description\>"
-syn match rdSection		"\\concept\>"
-syn match rdSection		"\\arguments\>"
-syn match rdSection		"\\details\>"
-syn match rdSection		"\\value\>"
-syn match rdSection		"\\references\>"
-syn match rdSection		"\\note\>"
-syn match rdSection		"\\author\>"
-syn match rdSection		"\\seealso\>"
-syn match rdSection		"\\keyword\>"
-syn match rdSection		"\\docType\>"
-syn match rdSection		"\\format\>"
-syn match rdSection		"\\source\>"
-syn match rdSection     "\\itemize\>"
-syn match rdSection     "\\describe\>"
-syn match rdSection     "\\enumerate\>"
-syn match rdSection     "\\item "
-syn match rdSection     "\\item$"
-syn match rdSection		"\\tabular{[lcr]*}"
-syn match rdSection		"\\dontrun\>"
-syn match rdSection		"\\dontshow\>"
-syn match rdSection		"\\testonly\>"
-
-" Freely named Sections {{{1
-syn region rdFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/ 
-
-" Rd comments {{{1
-syn match rdComment /%.*$/ contained 
-
-" Error {{{1
-syn region rdRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rdError,rdBraceError,rdCurlyError
-syn region rdRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rdError,rdBraceError,rdParenError
-syn region rdRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rdError,rdCurlyError,rdParenError
-syn match rdError      /[)\]}]/
-syn match rdBraceError /[)}]/ contained
-syn match rdCurlyError /[)\]]/ contained
-syn match rdParenError /[\]}]/ contained
-
-" Define the default highlighting {{{1
-" 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_rd_syntax_inits")
-  if version < 508
-    let did_rd_syntax_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-  HiLink rdIdentifier  Identifier
-  HiLink rdString      String
-  HiLink rdKeyword     Keyword
-  HiLink rdLink        Underlined
-  HiLink rdType	       Type
-  HiLink rdSection     PreCondit
-  HiLink rdError       Error
-  HiLink rdBraceError  Error
-  HiLink rdCurlyError  Error
-  HiLink rdParenError  Error
-  HiLink rdDelimiter   Delimiter
-  HiLink rdComment     Comment
-  HiLink rdRComment    Comment
-  HiLink rdSpecialChar SpecialChar
-  delcommand HiLink
-endif 
-
-let   b:current_syntax = "rd"
-" vim: foldmethod=marker:
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/rhelp.vim
@@ -0,0 +1,161 @@
+" Vim syntax file
+" Language:    R Help File
+" Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
+" Last Change: 2006 Mär 06
+" Version:     0.5
+" Remarks:     - Now includes R syntax highlighting in the appropriate
+"                sections if an r.vim file is in the same directory or in the
+"                default debian location.
+"              - I didn't yet include any special markup for S4 methods.
+"              - The two versions of \item{}{} markup are not 
+"                distinguished (in the \arguments{} environment, the items to
+"                be described are R identifiers, but not in the \describe{}
+"                environment).
+"              - There is no Latex markup in equations
+
+" Version Clears: {{{1
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600 
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif 
+
+syn case match
+
+" Rd identifiers {{{
+syn region rhelpIdentifier matchgroup=rhelpSection	start="\\name{" end="}" 
+syn region rhelpIdentifier matchgroup=rhelpSection	start="\\alias{" end="}" 
+syn region rhelpIdentifier matchgroup=rhelpSection	start="\\pkg{" end="}" 
+syn region rhelpIdentifier matchgroup=rhelpSection	start="\\item{" end="}" contained
+syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained
+
+" Highlighting of R code using an existing r.vim syntax file if available {{{1
+let s:syntaxdir = expand("<sfile>:p:h") "look in the directory of this file
+let s:rsyntax = s:syntaxdir . "/r.vim"
+if filereadable(s:rsyntax)  
+  syn include @R <sfile>:p:h/r.vim
+elseif filereadable('/usr/share/vim/vim64/syntax/r.vim')  "and debian location
+  syn include @R /usr/share/vim/vimcurrent/syntax/r.vim
+else 
+  syn match rhelpRComment /\#.*/				"if no r.vim is found, do comments
+  syn cluster R contains=rhelpRComment 
+endif
+syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection
+syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier
+syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
+syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
+syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
+
+" Strings {{{1
+syn region rhelpString start=/"/ end=/"/ 
+
+" Special TeX characters  ( \$ \& \% \# \{ \} \_) {{{1
+syn match rhelpSpecialChar        "\\[$&%#{}_]"
+
+" Special Delimiters {{{1
+syn match rhelpDelimiter		"\\cr"
+syn match rhelpDelimiter		"\\tab "
+
+" Keywords {{{1
+syn match rhelpKeyword	"\\R"
+syn match rhelpKeyword	"\\dots"
+syn match rhelpKeyword	"\\ldots"
+
+" Links {{{1
+syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
+syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
+
+" Type Styles {{{1
+syn match rhelpType		"\\emph\>"
+syn match rhelpType		"\\strong\>"
+syn match rhelpType		"\\bold\>"
+syn match rhelpType		"\\sQuote\>"
+syn match rhelpType		"\\dQuote\>"
+syn match rhelpType		"\\preformatted\>"
+syn match rhelpType		"\\kbd\>"
+syn match rhelpType		"\\samp\>"
+syn match rhelpType		"\\eqn\>"
+syn match rhelpType		"\\deqn\>"
+syn match rhelpType		"\\file\>"
+syn match rhelpType		"\\email\>"
+syn match rhelpType		"\\url\>"
+syn match rhelpType		"\\var\>"
+syn match rhelpType		"\\env\>"
+syn match rhelpType		"\\option\>"
+syn match rhelpType		"\\command\>"
+syn match rhelpType		"\\dfn\>"
+syn match rhelpType		"\\cite\>"
+syn match rhelpType		"\\acronym\>"
+
+" rhelp sections {{{1
+syn match rhelpSection		"\\encoding\>"
+syn match rhelpSection		"\\title\>"
+syn match rhelpSection		"\\description\>"
+syn match rhelpSection		"\\concept\>"
+syn match rhelpSection		"\\arguments\>"
+syn match rhelpSection		"\\details\>"
+syn match rhelpSection		"\\value\>"
+syn match rhelpSection		"\\references\>"
+syn match rhelpSection		"\\note\>"
+syn match rhelpSection		"\\author\>"
+syn match rhelpSection		"\\seealso\>"
+syn match rhelpSection		"\\keyword\>"
+syn match rhelpSection		"\\docType\>"
+syn match rhelpSection		"\\format\>"
+syn match rhelpSection		"\\source\>"
+syn match rhelpSection     "\\itemize\>"
+syn match rhelpSection     "\\describe\>"
+syn match rhelpSection     "\\enumerate\>"
+syn match rhelpSection     "\\item "
+syn match rhelpSection     "\\item$"
+syn match rhelpSection		"\\tabular{[lcr]*}"
+syn match rhelpSection		"\\dontrun\>"
+syn match rhelpSection		"\\dontshow\>"
+syn match rhelpSection		"\\testonly\>"
+
+" Freely named Sections {{{1
+syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/ 
+
+" Rd comments {{{1
+syn match rhelpComment /%.*$/ contained 
+
+" Error {{{1
+syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
+syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError
+syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError
+syn match rhelpError      /[)\]}]/
+syn match rhelpBraceError /[)}]/ contained
+syn match rhelpCurlyError /[)\]]/ contained
+syn match rhelpParenError /[\]}]/ contained
+
+" Define the default highlighting {{{1
+" 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_rhelp_syntax_inits")
+  if version < 508
+    let did_rhelp_syntax_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+  HiLink rhelpIdentifier  Identifier
+  HiLink rhelpString      String
+  HiLink rhelpKeyword     Keyword
+  HiLink rhelpLink        Underlined
+  HiLink rhelpType	       Type
+  HiLink rhelpSection     PreCondit
+  HiLink rhelpError       Error
+  HiLink rhelpBraceError  Error
+  HiLink rhelpCurlyError  Error
+  HiLink rhelpParenError  Error
+  HiLink rhelpDelimiter   Delimiter
+  HiLink rhelpComment     Comment
+  HiLink rhelpRComment    Comment
+  HiLink rhelpSpecialChar SpecialChar
+  delcommand HiLink
+endif 
+
+let   b:current_syntax = "rhelp"
+" vim: foldmethod=marker:
--- a/runtime/syntax/sshconfig.vim
+++ b/runtime/syntax/sshconfig.vim
@@ -2,7 +2,7 @@
 " This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: OpenSSH server configuration file (ssh_config)
 " Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2003-05-06
+" Last Change: 2006-03-05
 " URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim
 
 " Setup
@@ -30,7 +30,8 @@ syn keyword sshconfigTodo TODO FIXME NOT
 syn keyword sshconfigYesNo yes no ask
 syn keyword sshconfigCipher blowfish des 3des
 syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
-syn keyword sshconfigCipher arcfour aes192-cbc aes256-cbc
+syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
 syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
 syn keyword sshconfigMAC hmac-md5-96
 syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
@@ -48,24 +49,29 @@ syn match sshconfigHostPort "\<\(\x\{,4}
 
 " Keywords
 syn keyword sshconfigHostSect Host
-syn keyword sshconfigKeyword AFSTokenPassing BatchMode BindAddress
+syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress
 syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP
-syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings Compression
-syn keyword sshconfigKeyword CompressionLevel ConnectionAttempts
-syn keyword sshconfigKeyword DynamicForward EscapeChar ForwardAgent ForwardX11
-syn keyword sshconfigKeyword GatewayPorts GlobalKnownHostsFile
-syn keyword sshconfigKeyword HostbasedAuthentication HostKeyAlgorithms
-syn keyword sshconfigKeyword HostKeyAlias HostName IdentityFile KeepAlive
-syn keyword sshconfigKeyword KerberosAuthentication KerberosTgtPassing
-syn keyword sshconfigKeyword LocalForward LogLevel MACs
-syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
+syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings
+syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout
+syn keyword sshconfigKeyword ConnectionAttempts ControlMaster
+syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign
+syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11
+syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication
+syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts
+syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms
+syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices
+syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication
+syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward
+syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost
 syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication
 syn keyword sshconfigKeyword Port PreferredAuthentications Protocol
-syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication RemoteForward
+syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication
+syn keyword sshconfigKeyword RSAAuthentication RemoteForward
 syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication
-syn keyword sshconfigKeyword RSAAuthentication SmartcardDevice
-syn keyword sshconfigKeyword StrictHostKeyChecking UsePrivilegedPort User
-syn keyword sshconfigKeyword UserKnownHostsFile XAuthLocation
+syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval
+syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking
+syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User
+syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation
 
 " Define the default highlighting
 if version >= 508 || !exists("did_sshconfig_syntax_inits")
--- a/runtime/syntax/sshdconfig.vim
+++ b/runtime/syntax/sshdconfig.vim
@@ -2,7 +2,7 @@
 " This is a GENERATED FILE. Please always refer to source file at the URI below.
 " Language: OpenSSH server configuration file (sshd_config)
 " Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
-" Last Change: 2003-05-06
+" Last Change: 2006-03-05
 " URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim
 
 " Setup
@@ -29,8 +29,8 @@ syn keyword sshdconfigTodo TODO FIXME NO
 " Constants
 syn keyword sshdconfigYesNo yes no
 syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
-syn keyword sshdconfigCipher aes192-cbc aes256-cbc
-syn keyword sshdconfigCipher arcfour
+syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
+syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
 syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
 syn keyword sshdconfigMAC hmac-md5-96
 syn keyword sshdconfigRootLogin without-password forced-commands-only
@@ -46,27 +46,33 @@ syn match sshdconfigHostPort "\<\(\x\{,4
 syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
 
 " Keywords
-syn keyword sshdconfigKeyword AFSTokenPassing AllowGroups AllowTcpForwarding
+syn keyword sshdconfigKeyword AcceptEnv AddressFamily
+syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding
 syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner
-syn keyword sshdconfigKeyword ChallengeResponseAuthentication Ciphers
-syn keyword sshdconfigKeyword ClientAliveInterval ClientAliveCountMax
-syn keyword sshdconfigKeyword Compression DenyGroups DenyUsers GatewayPorts
-syn keyword sshdconfigKeyword HostbasedAuthentication HostKey IgnoreRhosts
-syn keyword sshdconfigKeyword IgnoreUserKnownHosts KeepAlive
+syn keyword sshdconfigKeyword ChallengeResponseAuthentication
+syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax
+syn keyword sshdconfigKeyword ClientAliveInterval Compression
+syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication
+syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts
+syn keyword sshdconfigKeyword HostKey HostbasedAuthentication
+syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts
 syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd
 syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup
+syn keyword sshdconfigKeyword KerberosGetAFSToken
 syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress
-syn keyword sshdconfigKeyword LoginGraceTime LogLevel MACs MaxStartups
-syn keyword sshdconfigKeyword PAMAuthenticationViaKbdInt
-syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords
-syn keyword sshdconfigKeyword PermitRootLogin PermitUserEnvironment PidFile
-syn keyword sshdconfigKeyword Port PrintLastLog PrintMotd Protocol
-syn keyword sshdconfigKeyword PubkeyAuthentication RhostsAuthentication
-syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication
+syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries
+syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication
+syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin
+syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port
+syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol
+syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication
+syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication
 syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem
-syn keyword sshdconfigKeyword SyslogFacility UseLogin UsePrivilegeSeparation
-syn keyword sshdconfigKeyword VerifyReverseMapping X11DisplayOffset
-syn keyword sshdconfigKeyword X11Forwarding X11UseLocalhost XAuthLocation
+syn keyword sshdconfigKeyword ShowPatchLevel
+syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS
+syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation
+syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding
+syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation
 
 " Define the default highlighting
 if version >= 508 || !exists("did_sshdconfig_syntax_inits")
--- a/src/GvimExt/Makefile
+++ b/src/GvimExt/Makefile
@@ -16,8 +16,9 @@ all: gvimext.dll
 
 gvimext.dll:    gvimext.obj	\
 		gvimext.res
-  $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
-  $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
+# $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
+# $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
+  $(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib
 
 gvimext.obj: gvimext.h
 
--- a/src/GvimExt/gvimext.h
+++ b/src/GvimExt/gvimext.h
@@ -33,6 +33,12 @@
 
 #define INC_OLE2	// WIN32, get ole2 from windows.h
 
+/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+#if _MSC_VER >= 1400
+# define _CRT_SECURE_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+
 #include <windows.h>
 #include <windowsx.h>
 #include <shlobj.h>
--- a/src/GvimExt/gvimext.rc
+++ b/src/GvimExt/gvimext.rc
@@ -8,7 +8,7 @@
 // Generated from the TEXTINCLUDE 2 resource.
 //
 #ifndef __BORLANDC__
-# include "afxres.h"
+# include "winresrc.h"
 #endif
 
 /////////////////////////////////////////////////////////////////////////////
--- a/src/INSTALLpc.txt
+++ b/src/INSTALLpc.txt
@@ -3,35 +3,347 @@ INSTALLpc.txt - Installation of Vim on P
 This file contains instructions for compiling Vim. If you already have an
 executable version of Vim, you don't need this.
 
-More information can be found here:
+More information can be found here: (Very stale now.)
 
-	http://mywebpage.netscape.com/sharppeople/vim/howto/
+    http://mywebpage.netscape.com/sharppeople/vim/howto/
 
 The file "feature.h" can be edited to match your preferences. You can skip
 this, then you will get the default behavior as is documented, which should
 be fine for most people.
 
+With the exception of the last two sections (Windows 3.1 and MS-DOS),
+this document assumes that you are building Vim for Win32
+(Windows NT/2000/XP/2003/Vista and Windows 95/98/Me)
+
 
 Contents:
-1. MS-DOS
-2. Win32 (Windows XP/NT and Windows 95/98)
-3. Windows NT with OpenNT
-4. Windows 3.1
-5. Using Mingw
-6. Cross compiling for Win32 from a Linux machine
-7. Building with Python support
-8. Building with MzScheme support
+1. Microsoft Visual C++
+2. Using MinGW
+3. Cygwin
+4. Borland
+5. Cross compiling for Win32 from a Linux machine
+6. Building with Python support
+7. Building with MzScheme support
+8. Windows 3.1
+9. MS-DOS
+
+The currently preferred method is using the free Visual C++ Toolkit 2003.
+
+
+1. Microsoft Visual C++
+=======================
+
+Visual Studio
+-------------
+
+Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, and VS .NET 2005)
+is straightforward. (These instructions should also work for VS 4 and VS 5.)
+
+To build Vim from the command line with MSVC, use Make_mvc.mak.
+Visual Studio installed a batch file called vcvars32.bat, which you must
+run to set up paths for nmake and MSVC.
+
+nmake -f Make_mvc.mak           console   Win32 SDK or Microsoft Visual C++
+nmake -f Make_mvc.mak GUI=yes   GUI       Microsoft Visual C++
+nmake -f Make_mvc.mak OLE=yes   OLE       Microsoft Visual C++
+nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
+                                Perl, Python, etc.
+
+Make_mvc.mak allows a Vim to be built with various different features and
+debug support.  Debugging with MS Devstudio is provided by Make_dvc.mak.
+For a description of the use of Make_dvc.mak, look in Make_mvc.mak.
+
+For compiling Gvim with IME support on far-east Windows, add IME=yes
+to the parameters you pass to Make_mvc.mak.
+
+To build Vim from within the Visual Studio IDE, open the Make_ivc.mak project.
+(Note: Make_ivc.mak is not as rich as Make_mvc.mak, which allows for
+far more configuration.) Make_ivc.mak can also be built with nmake.
+
+nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim"
+                                GUI       Microsoft Visual C++ 4.x or later
+nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE"
+                                OLE       Microsoft Visual C++ 4.x or later
+
+See the specific files for comments and options.
+
+These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
+Ron Aaron; they have been tested.
+
+
+Visual C++ Toolkit 2003
+-----------------------
+
+You can download the Microsoft Visual C++ Toolkit 2003 from
+    http://msdn.microsoft.com/visualc/vctoolkit2003/
+This contains the command-line tools (compiler, linker, CRT headers,
+and libraries) for Visual Studio .NET 2003, but not the Visual Studio IDE.
+To compile and debug Vim with the VC2003 Toolkit, you will also need
+|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|,
+and |windbg-download|.
+
+It's easier to download Visual C++ 2005 Express Edition, |msvc-2005-express|.
+The advantage of the VC 2003 Toolkit is that it will be freely available
+long after VC 2005 Express Edition stops being free in November 2006.
+
+The free Code::Blocks IDE works with the VC2003 Toolkit, as described at
+    http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE
+(This site also takes you through configuring a number of other
+free C compilers for Win32.)
+
+To compile Vim using the VC2003 Toolkit and Make_mvc.mak, you must first
+execute the following commands in a cmd.exe window (the msvcsetup.bat batch
+file can be used):
+       
+    set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH%
+    call "%VCToolkitInstallDir%vcvars32.bat"
+    set MSVCVer=7.1
+    call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd"
+    set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB%
+
+Now you can build Vim with Make_mvc.mak.
+
+
+Getting the Windows Platform SDK            *ms-platform-sdk*
+
+You will also need a copy of the Windows Platform SDK from
+    http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
+Specifically, you need the Windows Core SDK subset of the Platform SDK,
+which contains the Windows headers and libraries.
+
+
+Getting the .NET Framework 1.1 Runtime      *dotnet-1.1-redist*
+
+You need the .NET Framework 1.1 Redistributable Package from
+    http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3
+or from Windows Update:
+    http://windowsupdate.microsoft.com/
+This is needed to install |dotnet-1.1-sdk|. It also contains cvtres.exe,
+which is needed to link Vim.
+
+
+Getting the .NET Framework 1.1 SDK          *dotnet-1.1-sdk*
+
+You need the .NET Framework 1.1 SDK from
+    http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d
+This contains some additional libraries needed to compile Vim,
+such as msvcrt.lib. You must install |dotnet-1.1-redist| before
+installing the .NET 1.1 SDK.
+
+
+Getting the WinDbg debugger                 *windbg-download*
+
+The Debugging Tools for Windows can be downloaded from
+    http://www.microsoft.com/whdc/devtools/debugging/default.mspx
+This includes the WinDbg debugger, which you will want if you ever need
+to debug Vim itself. An earlier version of the Debugging Tools
+is also available through the Platform SDK, |ms-platform-sdk|.
+
+
+Visual C++ 2005 Express Edition
+-------------------------------
+
+Visual C++ 2005 Express Edition can be downloaded for free
+before November 2006 from
+    http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
+This includes the IDE and the debugger. You will also need
+|ms-platform-sdk|. You can build Vim with Make_mvc.mak.
+
+Instructions for integrating the Platform SDK into VC Express:
+    http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
 
 
-1. MS-DOS
+2. MinGW
+========
+
+(written by Ron Aaron: <ronaharon@yahoo.com>)
+
+This is about how to produce a Win32 binary of gvim with MinGW.
+
+First, you need to get the 'mingw32' compiler, which is free for the download
+at:
+
+    http://www.mingw.org/
+
+Once you have downloaded the compiler binaries, unpack them on your hard disk
+somewhere, and put them on your PATH.  If you are on Win95/98 you can edit
+your AUTOEXEC.BAT file with a line like:
+
+    set PATH=C:\GCC-2.95.2\BIN;%PATH%
+
+or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance),
+System, Advanced, and edit the environment from there.
+
+Test if gcc is on your path.  From a CMD (or COMMAND on '95/98) window:
+
+    C:\> gcc --version
+    2.95.2
+
+    C:\> make --version
+    GNU Make version 3.77 (...etc...)
+
+Now you are ready to rock 'n' roll.  Unpack the vim sources (look on
+www.vim.org for exactly which version of the vim files you need).
+
+Change directory to 'vim\src':
+
+    C:\> cd vim\src
+    C:\VIM\SRC>
+
+and you type:
+
+    make -f Make_ming.mak gvim.exe
+
+After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
+directory.
+
+You should not need to do *any* editing of any files to get vim compiled this
+way.  If, for some reason, you want the console-mode-only version of vim (this
+is NOT recommended on Win32, especially on '95/'98!!!), you need only change
+the 'gvim.exe' to 'vim.exe' in the 'make' commands given above.
+
+If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
+(also free!) and compress the file (typical compression is 50%). UPX can be
+found at
+    http://www.upx.org/
+
+ADDITION: NLS support with MinGW
+
+(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
+
+If you want National Language Support, read the file src/po/README_mingw.txt.
+You need to uncomment lines in Make_ming.mak to have NLS defined.
+
+
+3. Cygwin
+=========
+
+Use Make_cyg.mak with Cygwin's GCC. See
+    http://users.skynet.be/antoine.mechelynck/vim/compile.htm
+
+The Cygnus one many not fully work yet.
+With Cygnus gcc you can use the Unix Makefile instead (you need to get the
+Unix archive then).  Then you get a Cygwin application (feels like Vim is
+runnin on Unix), while with Make_cyg.mak you get a Windows application (like
+with the other makefiles).
+
+
+4. Borland
+===========
+
+Use Make_bc5.mak with Borland C++ 5.x. See
+    http://users.skynet.be/antoine.mechelynck/vim/compile.htm
+
+
+5. Cross compiling for Win32 from a Linux machine
+=================================================
+
+[Update of 1) needs to be verified]
+
+If you like, you can compile the 'mingw' Win32 version from the comfort of
+your Linux (or other unix) box.  To do this, you need to follow a few steps:
+    1) Install the mingw32 cross-compiler. See
+        http://www.libsdl.org/extras/win32/cross/README.txt
+    2) get the *unix* version of the vim sources
+    3) in 'Make_ming.mak', set 'CROSS' to '1' instead of '0'.
+    4) make -f Make_ming.mak gvim.exe
+
+Now you have created the Windows binary from your Linux box!  Have fun...
+
+
+6. Building with Python support
+===============================
+
+(written by Ron Aaron: <ronaharon@yahoo.com>)
+
+This has been tested with the mingw32 compiler, and the ActiveState
+ActivePython:
+    http://www.ActiveState.com/Products/ActivePython/
+
+After installing the ActivePython, you will have to create a 'mingw32'
+'libpython20.a' to link with:
+   cd $PYTHON/libs
+   pexports python20.dll > python20.def
+   dlltool -d python20.def -l libpython20.a
+
+Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
+the root of the Python installation (C:\Python20, for example).  If you are
+cross-compiling on Linux with the mingw32 setup, you need to also convert all
+the 'Include' files to *unix* line-endings.  This bash command will do it
+easily:
+   for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
+
+Now just do:
+   make -f Make_ming.mak gvim.exe
+
+and you will end up with a Python-enabled, Win32 version.  Enjoy!
+
+
+7. Building with MzScheme support
+=================================
+
+(written by Sergey Khorev <sergey.khorev@gmail.com>)
+
+Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
+be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
+above (including 299 and 30x series).
+
+The MSVC build is quite straightforward. Simply invoke (in one line)
+nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
+    [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
+where <MzScheme-version> is the last seven characters from MzScheme dll name
+(libmzschXXXXXXX.dll).
+If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
+DLL's, but will load them in runtime on demand.
+
+Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
+account that <Path-to-MzScheme> should contain slashes rather than backslashes
+(e.g. d:/Develop/MzScheme)
+
+"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
+explicitly) on MinGW and Cygwin requires additional step.
+
+libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
+%WINDOWS%\System32 to other location (either build directory, some temporary
+dir or even MzScheme home).
+
+Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
+make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
+    MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
+
+After a successful build, these dlls can be freely removed, leaving them in
+%WINDOWS%\System32 only.
+
+
+8. Windows 3.1x
+===============
+
+make -f Make_w16.mak             16 bit, Borland C++ 5.0
+
+Warning: Be sure to use the right make.exe.  It should be Borland make.
+
+You will almost certainly have to change the paths for libs and include files
+in the Makefile.  Look for "D:\BC5" and "ctl3dv2".  You will get a number of
+warnings which can be ignored ( _chmod, precompiled header files, and
+"possibly incorrect assignment").
+
+The makefile should also work for BC++ 4.0 and 4.5, but may need tweaking to
+remove unsupported compiler & liker options.
+
+For making the Win32s version, you need Microsoft Visual C++ 4.1 OR EARLIER.
+In MSVC 4.2 support for Win32s was dropped!  Use this command:
+    nmake -f Make_mvc.mak GUI=yes
+
+
+9. MS-DOS
 =========
 
 Summary:
-ren Make_bc3.mak Makefile; make      16 bit, Borland C++ and Turbo C++
-ren Make_tcc.mak Makefile; make	     16 bit, Turbo C
-make -f Make_djg.mak		     32 bit, DJGPP 2.0
-make -f Make_bc5.mak		     32 bit, Borland C++ 5.x (edit it to
-					     define DOS)
+ren Make_bc3.mak Makefile; make     16 bit, Borland C++ and Turbo C++
+ren Make_tcc.mak Makefile; make     16 bit, Turbo C
+make -f Make_djg.mak                32 bit, DJGPP 2.0
+make -f Make_bc5.mak                32 bit, Borland C++ 5.x (edit it to
+                                    define DOS)
 
 Warning: Be sure to use the right make.exe.  Microsoft C make doesn't work;
 Borland make only works with Make_bc3.mak, Make_bc5.mak and Make_tcc.mak;
@@ -64,285 +376,3 @@ will work properly!  Esp. handling multi
 
 If you get all kinds of strange error messages when compiling, try adding
 changing the file format from "unix" to "dos".
-
-
-2. Win32 (Windows NT/XP and Windows 95/98)
-====================================
-
-Summary:
-vcvars32				  Setup paths for nmake and MSVC
-
-nmake -f Make_mvc.mak		console   Win32 SDK or Microsoft Visual C++
-nmake -f Make_mvc.mak GUI=yes	GUI	  Microsoft Visual C++
-nmake -f Make_mvc.mak OLE=yes	OLE	  Microsoft Visual C++
-nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
-				Perl, Python, etc.
-					  Microsoft Visual C++
-
-make  -f Make_bc5.mak		GUI	  Borland C++ 5.x
-make  -f Make_bc5.mak		console	  Borland C++ 5.x (change the file)
-nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim"
-				GUI	  Microsoft Visual C++ 4.x or later
-nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE"
-				OLE	  Microsoft Visual C++ 4.x or later
-
-make  -f Make_cyg.mak		various   Cygnus gcc
-make  -f Make_ming.mak		various   MingW with gcc
-
-See the specific files for comments and options.
-
-These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
-Ron Aaron; they have been tested.  The Cygnus one many not fully work yet.
-With Cygnus gcc you can use the Unix Makefile instead (you need to get the
-Unix archive then).  Then you get a Cygwin application (feels like Vim is
-runnin on Unix), while with Make_cyg.mak you get a Windows application (like
-with the other makefiles).
-
-You can also use the Visual C++ IDE: use File/Open workspace, select the
-Make_ivc.mak file, then select Build/Build all.  This builds the GUI version
-by default.
-
-Vim for Win32 compiles with the Microsoft Visual C++ 2.0 compiler and later,
-and with the Borland C++ 4.5 32-bit compiler and later.  It compiles on
-Windows 95 and all four NT platforms: i386, Alpha, MIPS, and PowerPC.  The
-NT/i386 and the Windows 95 binaries are identical.  Use Make_mvc.mak to
-compile with Visual C++ and Make_bc5.mak to compile with Borland C++.
-
-Make_mvc.mak allows a Vim to be built with various different features and
-debug support.  Debugging with MS Devstudio is provided by Make_dvc.mak.
-For a description of the use of Make_dvc.mak, look in Make_mvc.mak.
-
-For compiling Gvim with IME support on far-east Windows, uncomment the
-MULTI_BYTE_IME define in the src/feature.h file before compiling.
-
-The Win32 console binary was compiled with Visual C++ version 5.0, using
-Make_mvc.mak and Make_bc5.mak (Borland C).  Other compilers should also work.
-If you get all kinds of strange error messages when compiling (you shouldn't
-with the Microsoft or Borland 32-bit compilers), try adding <CR> characters
-at the end of each line.
-
-You probably need to run "vcvars32" before using "nmake".
-
-For making the Win32s version, you need Microsoft Visual C++ 4.1 OR EARLIER.
-In version 4.2 support for Win32s was dropped!  Use this command:
-	nmake -f Make_mvc.mak GUI=yes
-
-See the respective Makefiles for more comments.
-
-
-3. Windows NT with OpenNT
-=========================
-
-(contributed by Michael A. Benzinger)
-
-Building Vim on OpenNT 2.0 on Windows NT 4.0, with Softway's prerelease gcc:
-1. export CONFIG_SHELL=//D/OpenNT/bin/sh
-2. Make the following exports for modifying config.mk:
-	export CFLAGS=-O -Wshadow
-	export X_PRE_LIBS=-lXmu
-2. Run configure as follows:
-	configure --prefix=/vim --bindir=/bin/opennt --enable-gui=Motif
-   If you don't have OpenNTif (Motif support), use this:
-	configure --prefix=/vim --bindir=/bin/opennt --enable-gui=Athena
-3. Edit Makefile to perform the following since the Makefile include syntax
-   differs from that of gmake:
-	#include config.mk
-	.include "config.mk"
-4. Change all install links to be "ln -f" and not "ln -s".
-5. Change to the 'ctags' directory and configure.
-6. Edit the Makefile and remove spurious spaces from lines 99 and 114.
-7. Change slink to "ln -f" from "ln -s".
-8. Return to the src directory.
-9. make
-
-
-4. Windows 3.1x
-===============
-
-make -f Make_w16.mak		     16 bit, Borland C++ 5.0
-
-Warning: Be sure to use the right make.exe.  It should be Borland make.
-
-You will almost certainly have to change the paths for libs and include files
-in the Makefile.  Look for "D:\BC5" and "ctl3dv2".  You will get a number of
-warnings which can be ignored ( _chmod, precompiled header files, and
-"possibly incorrect assignment").
-
-The makefile should also work for BC++ 4.0 and 4.5, but may need tweaking to
-remove unsupported compiler & liker options.
-
-
-5. Mingw
-========
-
-(written by Ron Aaron: <ronaharon@yahoo.com>)
-
-This is about how to produce a Win32 binary of gvim with Mingw.
-
-First, you need to get the 'mingw32' compiler, which is free for the download
-at:
-
-	http://www.mingw.org/
-
-Once you have downloaded the compiler binaries, unpack them on your hard disk
-somewhere, and put them on your PATH.  If you are on Win95/98 you can edit
-your AUTOEXEC.BAT file with a line like:
-
-	set PATH=C:\GCC-2.95.2\BIN;%PATH%
-
-or on NT/2000, go to the Control Panel, System, and edit the environment from
-there.
-
-Test if gcc is on your path.  From a CMD (or COMMAND on '95/98):
-
-	C:\> gcc --version
-	2.95.2
-
-	C:\> make --version
-	GNU Make version 3.77 (...etc...)
-
-Now you are ready to rock 'n' roll.  Unpack the vim sources (look on
-www.vim.org for exactly which version of the vim files you need).
-
-Change directory to 'vim\src':
-
-	C:\> cd vim\src
-	C:\VIM\SRC>
-
-and you type:
-
-	make -f Make_ming.mak gvim.exe
-
-After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
-directory.
-
-You should not need to do *any* editing of any files to get vim compiled this
-way.  If, for some reason, you want the console-mode-only version of vim (this
-is NOT recommended on Win32, especially on '95/'98!!!), you need only change
-the 'gvim.exe' to 'vim.exe' in the 'make' commands given above.
-
-If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
-(also free!) and compress the file (typical compression is 50%). UPX can be
-found at
-	http://upx.tsx.org/
-
-
-ADDITION: NLS support with Mingw
-
-(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
-
-If you want National Language Support, read the file src/po/README_mingw.txt.
-You need to uncomment lines in Make_ming.mak to have NLS defined.
-
-
-6. Cross compiling for Win32 from a Linux machine
-=================================================
-
-(written by Ron Aaron: <ronaharon@yahoo.com> with help from
-Martin Kahlert <martin.kahlert@infineon.com>)
-
-If you like, you can compile the 'mingw' Win32 version from the comfort of
-your Linux (or other unix) box.  To do this, you need to follow a few steps:
-
-	1) Install the mingw32 cross-compiler (if you have it, go to step 2)
-		1a) from 'ftp://ftp.nanotech.wisc.edu/pub/khan/gnu-win32/mingw32/snapshots/gcc-2.95.2-1',
-			get:
-				binutils-19990818-1-src.tar.gz
-				mingw-msvcrt-20000203.zip
-				gcc-2.95.2-1-x86-win32.diff.gz
-		1b) from 'http://gcc.gnu.org/' get:
-				gcc-2.95.2.tar.gz
-		1c) create a place to put the compiler source and binaries:
-			(assuming you are in the home directory)
-			mkdir gcc-bin
-			mkdir gcc-src
-		1d) unpack the sources:
-			cd gcc-src
-			tar xzf ../binutils-19990818-1-src.tar.gz
-			tar xzf ../gcc-2.95.2.tar.gz
-			unzip ../mingw-msvcrt-20000203
-		1e) build the different tools:
-			export PREFIX=~/gcc-bin/
-			cd gcc-2.95.2
-			zcat ../gcc-2.95.2-1-x86-win32.diff.gz | patch -p1 -E
-			cd ../binutils-19990818
-			./configure --target=i586-pc-mingw32msvc --prefix=$PREFIX
-			make
-			make install
-			cd ../gcc-2.95.2
-			./configure --target=i586-pc-mingw32msvc \
-				--with-libs=~/gcc-bin/i386-mingw32msvc/lib \
-				--with-headers=~/gcc-bin/i386-mingw32msvc/include \
-				--enable-languages=c++ \
-				--prefix=$PREFIX
-			make
-			make install
-		1f) Add $PREFIX/bin to your $PATH.
-
-	2) get the *unix* version of the vim sources
-	3) in 'Make_ming.mak', set 'CROSS' to '1' instead of '0'.
-	4) make -f Make_ming.mak gvim.exe
-
-Now you have created the Windows binary from your Linux box!  Have fun...
-
-7. Building with Python support
-=================================================
-
-(written by Ron Aaron: <ronaharon@yahoo.com>)
-
-This has been tested with the mingw32 compiler, and the ActiveState
-ActivePython:
-    http://www.ActiveState.com/Products/ActivePython/
-
-After installing the ActivePython, you will have to create a 'mingw32'
-'libpython20.a' to link with:
-   cd $PYTHON/libs
-   pexports python20.dll > python20.def
-   dlltool -d python20.def -l libpython20.a
-
-Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
-the root of the Python installation (C:\Python20, for example).  If you are
-cross-compiling on Linux with the mingw32 setup, you need to also convert all
-the 'Include' files to *unix* line-endings.  This bash command will do it
-easily:
-   for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
-
-Now just do:
-   make -f Make_ming.mak gvim.exe
-
-and you will end up with a Python-enabled, Win32 version.  Enjoy!
-
-8. Building with MzScheme support
-=================================================
-
-(written by Sergey Khorev <sergey.khorev@gmail.com>)
-
-Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
-be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
-above (including 299 and 30x series).
-
-The MSVC build is quite straightforward. Simply invoke (in one line)
-nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
-    [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
-where <MzScheme-version> is the last seven characters from MzScheme dll name
-(libmzschXXXXXXX.dll).
-If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
-DLL's, but will load them in runtime on demand.
-
-Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
-account that <Path-to-MzScheme> should contain slashes rather than backslashes
-(e.g. d:/Develop/MzScheme)
-
-"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
-explicitly) on MinGW and Cygwin requires additional step.
-
-libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
-%WINDOWS%\System32 to other location (either build directory, some temporary
-dir or even MzScheme home).
-
-Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
-make -fMake_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
-    MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
-
-After successful build these dlls can be freely removed, leaving them in
-%WINDOWS%\System32 only.
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -131,9 +131,9 @@
 ### See feature.h for a list of optionals.
 # If you want to build some optional features without modifying the source,
 # you can set DEFINES on the command line, e.g.,
-#	nmake -f makefile.mvc "DEFINES=-DEMACS_TAGS"
+#	nmake -f Make_mvc.mvc "DEFINES=-DEMACS_TAGS"
 
-# Build on both Windows NT and Windows 95
+# Build on both Windows NT/XP and Windows 9x
 
 TARGETOS = BOTH
 
@@ -167,12 +167,12 @@ OBJDIR = $(OBJDIR)Z
 OBJDIR = $(OBJDIR)d
 !endif
 
-# ntwin32.mak requires that CPU be set appropriately
+# Win32.mak requires that CPU be set appropriately
 
 !ifdef PROCESSOR_ARCHITECTURE
-# We're on Windows NT or using VC 6
+# We're on Windows NT or using VC 6+
 CPU = $(PROCESSOR_ARCHITECTURE)
-! if "$(CPU)" == "x86"
+! if ("$(CPU)" == "x86") || ("$(CPU)" == "X86")
 CPU = i386
 ! endif
 !else  # !PROCESSOR_ARCHITECTURE
@@ -190,17 +190,12 @@ MAKEFLAGS_GVIMEXT = DEBUG=yes
 !endif
 
 
-# Build a multithreaded version for the Windows 95 dead keys hack
-# Commented out because it doesn't work.
-# MULTITHREADED = 1
-
-
 # Get all sorts of useful, standard macros from the SDK.  (Note that
 # MSVC 2.2 does not install <ntwin32.mak> in the \msvc20\include
 # directory, but you can find it in \msvc20\include on the CD-ROM.
 # You may also need <win32.mak> from the same place.)
 
-!include <ntwin32.mak>
+!include <Win32.mak>
 
 
 #>>>>> path of the compiler and linker; name of include and lib directories
@@ -263,12 +258,14 @@ XPM_INC	  = -I $(XPM)\include
 !endif
 !endif
 
+# Set which version of the CRT to use
 !if defined(USE_MSVCRT)
 CVARS = $(cvarsdll)
-!elseif defined(MULTITHREADED)
+# !elseif defined(MULTITHREADED)
+# CVARS = $(cvarsmt)
+!else
+# CVARS = $(cvars)
 CVARS = $(cvarsmt)
-!else
-CVARS = $(cvars)
 !endif
 
 # need advapi32.lib for GetUserName()
@@ -276,7 +273,7 @@ CVARS = $(cvars)
 # gdi32.lib and comdlg32.lib for printing support
 # ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
 CON_LIB = advapi32.lib shell32.lib gdi32.lib comdlg32.lib ole32.lib uuid.lib
-!if "$(VC6)" == "yes"
+!if "$(DELAYLOAD)" == "yes"
 CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
 !endif
 
@@ -340,10 +337,14 @@ RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
 ! ifdef USE_MSVCRT
 CFLAGS = $(CFLAGS) -MD
 LIBC = msvcrt.lib
-! elseif defined(MULTITHREADED)
+# CFLAGS = $(CFLAGS) $(cvarsdll)
+# ! elseif defined(MULTITHREADED)
+# LIBC = libcmt.lib
+# CFLAGS = $(CFLAGS) $(cvarsmt)
+! else
+# LIBC = libc.lib
 LIBC = libcmt.lib
-! else
-LIBC = libc.lib
+# CFLAGS = $(CFLAGS) $(cvars)
 ! endif
 !else  # DEBUG
 VIM = vimd
@@ -358,10 +359,14 @@ LIBC = /fixed:no
 ! ifdef USE_MSVCRT
 CFLAGS = $(CFLAGS) -MDd
 LIBC = $(LIBC) msvcrtd.lib
-! elseif defined(MULTITHREADED)
+# CFLAGS = $(CFLAGS) $(cvarsdll)
+# ! elseif defined(MULTITHREADED)
+# LIBC = $(LIBC) libcmtd.lib
+# CFLAGS = $(CFLAGS) $(cvarsmt)
+! else
+# LIBC = $(LIBC) libcd.lib
 LIBC = $(LIBC) libcmtd.lib
-! else
-LIBC = $(LIBC) libcd.lib
+# CFLAGS = $(CFLAGS) $(cvars)
 ! endif
 !endif # DEBUG
 
@@ -666,7 +671,7 @@ CFLAGS = $(CFLAGS) -DFEAT_$(FEATURES)
 # on a crash (doesn't add overhead to the executable).
 #
 CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/
-LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug:full -debugtype:cv,fixup
+LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup
 
 #
 # End extra feature include
@@ -1004,4 +1009,8 @@ proto.h: \
 	proto/window.pro \
 	$(NETBEANS_PRO)
 
+.cod.c:
+	$(CC) $(CFLAGS) /FAc $<
+
+
 # vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:
--- a/src/dosinst.h
+++ b/src/dosinst.h
@@ -9,6 +9,13 @@
 /*
  * dosinst.h: Common code for dosinst.c and uninstal.c
  */
+
+/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+#if _MSC_VER >= 1400
+# define _CRT_SECURE_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -16,7 +23,7 @@
 #include <fcntl.h>
 
 #ifndef UNIX_LINT
-# include <io.h>
+# include "vimio.h"
 # include <ctype.h>
 
 # ifndef __CYGWIN__
--- a/src/edit.c
+++ b/src/edit.c
@@ -7604,7 +7604,7 @@ ins_bs(c, mode, inserted_space_p)
     int		in_indent;
     int		oldState;
 #ifdef FEAT_MBYTE
-    int		p1, p2;
+    int		cpc[MAX_MCO];	    /* composing characters */
 #endif
 
     /*
@@ -7920,16 +7920,16 @@ ins_bs(c, mode, inserted_space_p)
 	    {
 #ifdef FEAT_MBYTE
 		if (enc_utf8 && p_deco)
-		    (void)utfc_ptr2char(ml_get_cursor(), &p1, &p2);
+		    (void)utfc_ptr2char(ml_get_cursor(), cpc);
 #endif
 		(void)del_char(FALSE);
 #ifdef FEAT_MBYTE
 		/*
-		 * If p1 or p2 is non-zero, there are combining characters we
-		 * need to take account of.  Don't back up before the base
+		 * If there are combining characters and 'delcombine' is set
+		 * move the cursor back.  Don't back up before the base
 		 * character.
 		 */
-		if (enc_utf8 && p_deco && (p1 != NUL || p2 != NUL))
+		if (enc_utf8 && p_deco && cpc[0] != NUL)
 		    inc_cursor();
 #endif
 #ifdef FEAT_RIGHTLEFT
--- a/src/eval.c
+++ b/src/eval.c
@@ -11,7 +11,7 @@
  * eval.c: Expression evaluation.
  */
 #if defined(MSDOS) || defined(MSWIN)
-# include <io.h>	/* for mch_open(), must be before vim.h */
+# include "vimio.h"	/* for mch_open(), must be before vim.h */
 #endif
 
 #include "vim.h"
@@ -718,7 +718,7 @@ static void call_user_func __ARGS((ufunc
 static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
 static win_T *find_win_by_nr __ARGS((typval_T *vp));
 static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
-static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
+static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp));
 
 /* Character used as separated in autoload function/variable names. */
 #define AUTOLOAD_CHAR '#'
@@ -1171,18 +1171,28 @@ skip_expr(pp)
  * Return pointer to allocated memory, or NULL for failure.
  */
     char_u *
-eval_to_string(arg, nextcmd)
+eval_to_string(arg, nextcmd, dolist)
     char_u	*arg;
     char_u	**nextcmd;
+    int		dolist;		/* turn List into sequence of lines */
 {
     typval_T	tv;
     char_u	*retval;
+    garray_T	ga;
 
     if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
 	retval = NULL;
     else
     {
-	retval = vim_strsave(get_tv_string(&tv));
+	if (dolist && tv.v_type == VAR_LIST)
+	{
+	    ga_init2(&ga, (int)sizeof(char), 80);
+	    list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0);
+	    ga_append(&ga, NUL);
+	    retval = (char_u *)ga.ga_data;
+	}
+	else
+	    retval = vim_strsave(get_tv_string(&tv));
 	clear_tv(&tv);
     }
 
@@ -1206,7 +1216,7 @@ eval_to_string_safe(arg, nextcmd, use_sa
     if (use_sandbox)
 	++sandbox;
     ++textlock;
-    retval = eval_to_string(arg, nextcmd);
+    retval = eval_to_string(arg, nextcmd, FALSE);
     if (use_sandbox)
 	--sandbox;
     --textlock;
@@ -13273,25 +13283,27 @@ get_search_arg(varp, flagsp)
  * Shared by search() and searchpos() functions
  */
     static int
-search_cmn(argvars, match_pos)
+search_cmn(argvars, match_pos, flagsp)
     typval_T	*argvars;
     pos_T	*match_pos;
-{
+    int		*flagsp;
+{
+    int		flags;
     char_u	*pat;
     pos_T	pos;
     pos_T	save_cursor;
     int		save_p_ws = p_ws;
     int		dir;
-    int		flags = 0;
     int		retval = 0;	/* default: FAIL */
     long	lnum_stop = 0;
     int		options = SEARCH_KEEP;
     int		subpatnum;
 
     pat = get_tv_string(&argvars[0]);
-    dir = get_search_arg(&argvars[1], &flags);	/* may set p_ws */
+    dir = get_search_arg(&argvars[1], flagsp);	/* may set p_ws */
     if (dir == 0)
 	goto theend;
+    flags = *flagsp;
     if (flags & SP_START)
 	options |= SEARCH_START;
     if (flags & SP_END)
@@ -13359,7 +13371,9 @@ f_search(argvars, rettv)
     typval_T	*argvars;
     typval_T	*rettv;
 {
-    rettv->vval.v_number = search_cmn(argvars, NULL);
+    int		flags = 0;
+
+    rettv->vval.v_number = search_cmn(argvars, NULL, &flags);
 }
 
 /*
@@ -13649,13 +13663,16 @@ f_searchpos(argvars, rettv)
     pos_T	match_pos;
     int		lnum = 0;
     int		col = 0;
+    int		n;
+    int		flags = 0;
 
     rettv->vval.v_number = 0;
 
     if (rettv_list_alloc(rettv) == FAIL)
 	return;
 
-    if (search_cmn(argvars, &match_pos) > 0)
+    n = search_cmn(argvars, &match_pos, &flags);
+    if (n > 0)
     {
 	lnum = match_pos.lnum;
 	col = match_pos.col;
@@ -13663,7 +13680,8 @@ f_searchpos(argvars, rettv)
 
     list_append_number(rettv->vval.v_list, (varnumber_T)lnum);
     list_append_number(rettv->vval.v_list, (varnumber_T)col);
-
+    if (flags & SP_SUBPAT)
+	list_append_number(rettv->vval.v_list, (varnumber_T)n);
 }
 
 
@@ -15675,6 +15693,7 @@ f_winrestview(argvars, rettv)
 	curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd");
 #endif
 	curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
+	curwin->w_set_curswant = FALSE;
 
 	curwin->w_topline = get_dict_number(dict, (char_u *)"topline");
 #ifdef FEAT_DIFF
@@ -16208,7 +16227,7 @@ make_expanded_name(in_start, expr_start,
     c1 = *in_end;
     *in_end = NUL;
 
-    temp_result = eval_to_string(expr_start + 1, &nextcmd);
+    temp_result = eval_to_string(expr_start + 1, &nextcmd, FALSE);
     if (temp_result != NULL && nextcmd == NULL)
     {
 	retval = alloc((unsigned)(STRLEN(temp_result) + (expr_start - in_start)
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -52,12 +52,12 @@ do_ascii(eap)
     char	buf2[20];
     char_u	buf3[7];
 #ifdef FEAT_MBYTE
-    int		c1 = 0;
-    int		c2 = 0;
+    int		cc[MAX_MCO];
+    int		ci = 0;
     int		len;
 
     if (enc_utf8)
-	c = utfc_ptr2char(ml_get_cursor(), &c1, &c2);
+	c = utfc_ptr2char(ml_get_cursor(), cc);
     else
 #endif
 	c = gchar_cursor();
@@ -95,9 +95,7 @@ do_ascii(eap)
 		_("<%s>%s%s  %d,  Hex %02x,  Octal %03o"),
 					   transchar(c), buf1, buf2, c, c, c);
 #ifdef FEAT_MBYTE
-	c = c1;
-	c1 = c2;
-	c2 = 0;
+	c = cc[ci++];
 #endif
     }
 
@@ -120,9 +118,9 @@ do_ascii(eap)
 	vim_snprintf((char *)IObuff + len, IOSIZE - len,
 			c < 0x10000 ? _("> %d, Hex %04x, Octal %o")
 				    : _("> %d, Hex %08x, Octal %o"), c, c, c);
-	c = c1;
-	c1 = c2;
-	c2 = 0;
+	if (ci == MAX_MCO)
+	    break;
+	c = cc[ci++];
     }
 #endif
 
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -831,14 +831,16 @@ EX(CMD_split,		"split",	ex_splitview,
 			BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_spellgood,	"spellgood",	ex_spell,
 			BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
-EX(CMD_spellwrong,	"spellwrong",	ex_spell,
-			BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
 EX(CMD_spelldump,	"spelldump",	ex_spelldump,
 			BANG|TRLBAR),
+EX(CMD_spellinfo,	"spellinfo",	ex_spellinfo,
+			TRLBAR),
 EX(CMD_spellrepall,	"spellrepall",	ex_spellrepall,
 			TRLBAR),
 EX(CMD_spellundo,	"spellundo",	ex_spell,
 			BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
+EX(CMD_spellwrong,	"spellwrong",	ex_spell,
+			BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
 EX(CMD_sprevious,	"sprevious",	ex_previous,
 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_srewind,		"srewind",	ex_rewind,
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -12,7 +12,7 @@
  */
 
 #if defined(WIN32) && defined(FEAT_CSCOPE)
-# include <io.h>
+# include "vimio.h"
 #endif
 
 #include "vim.h"
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -240,6 +240,7 @@ static void	ex_popup __ARGS((exarg_T *ea
 # define ex_spell		ex_ni
 # define ex_mkspell		ex_ni
 # define ex_spelldump		ex_ni
+# define ex_spellinfo		ex_ni
 # define ex_spellrepall		ex_ni
 #endif
 #ifndef FEAT_MZSCHEME
@@ -3289,10 +3290,17 @@ set_one_cmd_context(xp, buff)
 	if (bow != NULL && in_quote)
 	    xp->xp_pattern = bow;
 	xp->xp_context = EXPAND_FILES;
+
 #ifndef BACKSLASH_IN_FILENAME
 	/* For a shell command more chars need to be escaped. */
 	if (usefilter || ea.cmdidx == CMD_bang)
+	{
 	    xp->xp_shell = TRUE;
+
+	    /* When still after the command name expand executables. */
+	    if (xp->xp_pattern == skipwhite(arg))
+		    xp->xp_context = EXPAND_SHELLCMD;
+	}
 #endif
 
 	/* Check for environment variable */
@@ -5089,6 +5097,7 @@ static struct
     {EXPAND_MAPPINGS, "mapping"},
     {EXPAND_MENUS, "menu"},
     {EXPAND_SETTINGS, "option"},
+    {EXPAND_SHELLCMD, "shellcmd"},
     {EXPAND_TAGS, "tag"},
     {EXPAND_TAGS_LISTFILES, "tag_listfiles"},
     {EXPAND_USER_VARS, "var"},
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -518,7 +518,8 @@ getcmdline(firstc, count, indent)
 		xpc.xp_context = EXPAND_NOTHING;
 	    }
 	}
-	if (xpc.xp_context == EXPAND_FILES && p_wmnu)
+	if ((xpc.xp_context == EXPAND_FILES
+			      || xpc.xp_context == EXPAND_SHELLCMD) && p_wmnu)
 	{
 	    char_u upseg[5];
 
@@ -2466,9 +2467,9 @@ draw_cmdline(start, len)
 	int		pc, pc1;
 	int		prev_c = 0;
 	int		prev_c1 = 0;
-	int		u8c, u8c_c1, u8c_c2;
+	int		u8c;
+	int		u8cc[MAX_MCO];
 	int		nc = 0;
-	int		dummy;
 
 	/*
 	 * Do arabic shaping into a temporary buffer.  This is very
@@ -2495,7 +2496,7 @@ draw_cmdline(start, len)
 	for (j = start; j < start + len; j += mb_l)
 	{
 	    p = ccline.cmdbuff + j;
-	    u8c = utfc_ptr2char_len(p, &u8c_c1, &u8c_c2, start + len - j);
+	    u8c = utfc_ptr2char_len(p, u8cc, start + len - j);
 	    mb_l = utfc_ptr2len_len(p, start + len - j);
 	    if (ARABIC_CHAR(u8c))
 	    {
@@ -2505,7 +2506,7 @@ draw_cmdline(start, len)
 		    /* displaying from right to left */
 		    pc = prev_c;
 		    pc1 = prev_c1;
-		    prev_c1 = u8c_c1;
+		    prev_c1 = u8cc[0];
 		    if (j + mb_l >= start + len)
 			nc = NUL;
 		    else
@@ -2517,20 +2518,25 @@ draw_cmdline(start, len)
 		    if (j + mb_l >= start + len)
 			pc = NUL;
 		    else
-			pc = utfc_ptr2char_len(p + mb_l, &pc1, &dummy,
+		    {
+			int	pcc[MAX_MCO];
+
+			pc = utfc_ptr2char_len(p + mb_l, pcc,
 						      start + len - j - mb_l);
+			pc1 = pcc[0];
+		    }
 		    nc = prev_c;
 		}
 		prev_c = u8c;
 
-		u8c = arabic_shape(u8c, NULL, &u8c_c1, pc, pc1, nc);
+		u8c = arabic_shape(u8c, NULL, &u8cc[0], pc, pc1, nc);
 
 		newlen += (*mb_char2bytes)(u8c, arshape_buf + newlen);
-		if (u8c_c1 != 0)
+		if (u8cc[0] != 0)
 		{
-		    newlen += (*mb_char2bytes)(u8c_c1, arshape_buf + newlen);
-		    if (u8c_c2 != 0)
-			newlen += (*mb_char2bytes)(u8c_c2,
+		    newlen += (*mb_char2bytes)(u8cc[0], arshape_buf + newlen);
+		    if (u8cc[1] != 0)
+			newlen += (*mb_char2bytes)(u8cc[1],
 							arshape_buf + newlen);
 		}
 	    }
@@ -3353,6 +3359,7 @@ ExpandOne(xp, str, orig, options, mode)
 #ifdef CASE_INSENSITIVE_FILENAME
 		if (xp->xp_context == EXPAND_DIRECTORIES
 			|| xp->xp_context == EXPAND_FILES
+			|| xp->xp_context == EXPAND_SHELLCMD
 			|| xp->xp_context == EXPAND_BUFFERS)
 		{
 		    if (TOLOWER_LOC(xp->xp_files[i][len]) !=
@@ -3454,6 +3461,7 @@ ExpandEscape(xp, str, numfiles, files, o
     if (options & WILD_ESCAPE)
     {
 	if (xp->xp_context == EXPAND_FILES
+		|| xp->xp_context == EXPAND_SHELLCMD
 		|| xp->xp_context == EXPAND_BUFFERS
 		|| xp->xp_context == EXPAND_DIRECTORIES)
 	{
@@ -3648,6 +3656,7 @@ showmatches(xp, wildmenu)
 	for (i = 0; i < num_files; ++i)
 	{
 	    if (!showtail && (xp->xp_context == EXPAND_FILES
+			  || xp->xp_context == EXPAND_SHELLCMD
 			  || xp->xp_context == EXPAND_BUFFERS))
 	    {
 		home_replace(NULL, files_found[i], NameBuff, MAXPATHL, TRUE);
@@ -3700,6 +3709,7 @@ showmatches(xp, wildmenu)
 		for (j = maxlen - lastlen; --j >= 0; )
 		    msg_putchar(' ');
 		if (xp->xp_context == EXPAND_FILES
+					  || xp->xp_context == EXPAND_SHELLCMD
 					  || xp->xp_context == EXPAND_BUFFERS)
 		{
 			    /* highlight directories */
@@ -3789,7 +3799,9 @@ expand_showtail(xp)
     char_u	*end;
 
     /* When not completing file names a "/" may mean something different. */
-    if (xp->xp_context != EXPAND_FILES && xp->xp_context != EXPAND_DIRECTORIES)
+    if (xp->xp_context != EXPAND_FILES
+	    && xp->xp_context != EXPAND_SHELLCMD
+	    && xp->xp_context != EXPAND_DIRECTORIES)
 	return FALSE;
 
     end = gettail(xp->xp_pattern);
@@ -3826,7 +3838,9 @@ addstar(fname, len, context)
     int		new_len;
     char_u	*tail;
 
-    if (context != EXPAND_FILES && context != EXPAND_DIRECTORIES)
+    if (context != EXPAND_FILES
+	    && context != EXPAND_SHELLCMD
+	    && context != EXPAND_DIRECTORIES)
     {
 	/*
 	 * Matching will be done internally (on something other than files).
@@ -3943,6 +3957,7 @@ addstar(fname, len, context)
  *  EXPAND_DIRECTORIES	    In some cases this is used instead of the latter
  *			    when we know only directories are of interest.  eg
  *			    :set dir=^I
+ *  EXPAND_SHELLCMD	    After ":!cmd", ":r !cmd"  or ":w !cmd".
  *  EXPAND_SETTINGS	    Complete variable names.  eg :set d^I
  *  EXPAND_BOOL_SETTINGS    Complete boolean variables only,  eg :set no^I
  *  EXPAND_TAGS		    Complete tags from the files in p_tags.  eg :ta a^I
@@ -4165,6 +4180,93 @@ ExpandFromContext(xp, pat, num_file, fil
 	return ret;
     }
 
+    if (xp->xp_context == EXPAND_SHELLCMD)
+    {
+	/*
+	 * Expand shell command.
+	 */
+	int	    i;
+	char_u	    *path;
+	int	    mustfree = FALSE;
+	garray_T    ga;
+	char_u	    *buf = alloc(MAXPATHL);
+	int	    l;
+	char_u	    *s, *e;
+
+	if (buf == NULL)
+	    return FAIL;
+
+	/* for ":set path=" and ":set tags=" halve backslashes for escaped
+	 * space */
+	pat = vim_strsave(pat);
+	for (i = 0; pat[i]; ++i)
+	    if (pat[i] == '\\' && pat[i + 1] == ' ')
+		STRCPY(pat + i, pat + i + 1);
+
+	flags |= EW_FILE | EW_EXEC;
+	/* For an absolute name we don't use $PATH. */
+	if ((pat[0] == '.' && (vim_ispathsep(pat[1])
+				|| (pat[1] == '.' && vim_ispathsep(pat[2])))))
+	    path = (char_u *)".";
+	else
+	    path = vim_getenv((char_u *)"PATH", &mustfree);
+
+	ga_init2(&ga, (int)sizeof(char *), 10);
+	for (s = path; *s != NUL; s = e)
+	{
+#if defined(MSDOS) || defined(MSWIN) || defined(OS2)
+	    e = vim_strchr(s, ';');
+#else
+	    e = vim_strchr(s, ':');
+#endif
+	    if (e == NULL)
+		e = s + STRLEN(s);
+
+	    l = e - s;
+	    if (l > MAXPATHL - 5)
+		break;
+	    vim_strncpy(buf, s, l);
+	    add_pathsep(buf);
+	    l = STRLEN(buf);
+	    vim_strncpy(buf + l, pat, MAXPATHL - 1 - l);
+
+	    /* Expand matches in one directory of $PATH. */
+	    ret = expand_wildcards(1, &buf, num_file, file, flags);
+	    if (ret == OK)
+	    {
+		if (ga_grow(&ga, *num_file) == FAIL)
+		    FreeWild(*num_file, *file);
+		else
+		{
+		    for (i = 0; i < *num_file; ++i)
+		    {
+			s = (*file)[i];
+			if (STRLEN(s) > l)
+			{
+			    /* Remove the path again. */
+			    mch_memmove(s, s + l, STRLEN(s + l) + 1);
+			    ((char_u **)ga.ga_data)[ga.ga_len] = s;
+			    ++ga.ga_len;
+			}
+			else
+			    vim_free(s);
+		    }
+		    vim_free(*file);
+		}
+	    }
+	    if (*e != NUL)
+		++e;
+	}
+	*file = ga.ga_data;
+	*num_file = ga.ga_len;
+
+	vim_free(buf);
+	vim_free(pat);
+	if (mustfree)
+	    vim_free(path);
+	return ret;
+    }
+
     *file = (char_u **)"";
     *num_file = 0;
     if (xp->xp_context == EXPAND_HELP)
--- a/src/feature.h
+++ b/src/feature.h
@@ -609,6 +609,10 @@
 # define FEAT_MBYTE
 #endif
 
+/* Define this if you want to use 16 bit Unicode only, reduces memory used for
+ * the screen structures. */
+/* #define UNICODE16 */
+
 /*
  * +multi_byte_ime	Win32 IME input method.  Requires +multi_byte.
  *			Only for far-east Windows, so IME can be used to input
@@ -732,7 +736,7 @@
 /*
  * GUI tabline
  */
-#if defined(FEAT_GUI_GTK) && defined(HAVE_GTK2) && defined(FEAT_WINDOWS)
+#if defined(FEAT_GUI_GTK) && defined(FEAT_WINDOWS)
 # define FEAT_GUI_TABLINE
 #endif
 
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -12,11 +12,11 @@
  */
 
 #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
-# include <io.h>	/* for lseek(), must be before vim.h */
+# include "vimio.h"	/* for lseek(), must be before vim.h */
 #endif
 
 #if defined __EMX__
-# include <io.h>	/* for mktemp(), CJW 1997-12-03 */
+# include "vimio.h"	/* for mktemp(), CJW 1997-12-03 */
 #endif
 
 #include "vim.h"
--- a/src/globals.h
+++ b/src/globals.h
@@ -53,8 +53,9 @@ EXTERN char_u	*LineWraps INIT(= NULL);	/
  * Note: These three are only allocated when enc_utf8 is set!
  */
 EXTERN u8char_T	*ScreenLinesUC INIT(= NULL);	/* decoded UTF-8 characters */
-EXTERN u8char_T	*ScreenLinesC1 INIT(= NULL);	/* first composing char */
-EXTERN u8char_T	*ScreenLinesC2 INIT(= NULL);	/* second composing char */
+EXTERN u8char_T	*ScreenLinesC[MAX_MCO];		/* composing characters */
+EXTERN int	Screen_mco INIT(= 0);		/* value of p_mco used when
+						   allocating ScreenLinesC[] */
 
 /* Only used for euc-jp: Second byte of a character that starts with 0x8e.
  * These are single-width. */
--- a/src/gui.h
+++ b/src/gui.h
@@ -391,6 +391,8 @@ typedef struct Gui
     PangoContext     *text_context; /* the context used for all text */
     PangoFont	     *ascii_font;   /* cached font for ASCII strings */
     PangoGlyphString *ascii_glyphs; /* cached code point -> glyph map */
+# endif
+# ifdef FEAT_GUI_TABLINE
     GtkWidget	*tabline;	    /* tab pages line handle */
 # endif
 
--- a/src/gui_beval.c
+++ b/src/gui_beval.c
@@ -61,7 +61,7 @@ general_beval_cb(beval, state)
 	++textlock;
 
 	vim_free(result);
-	result = eval_to_string(p_bexpr, NULL);
+	result = eval_to_string(p_bexpr, NULL, TRUE);
 
 	if (use_sandbox)
 	    --sandbox;
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -3187,6 +3187,10 @@ on_select_tab(
     }
 }
 
+#ifndef HAVE_GTK2
+static int showing_tabline = 0;
+#endif
+
 /*
  * Show or hide the tabline.
  */
@@ -3196,11 +3200,19 @@ gui_mch_show_tabline(int showit)
     if (gui.tabline == NULL)
 	return;
 
+#ifdef HAVE_GTK2
+    /* gtk_notebook_get_show_tabs does not exist in gtk+-1.2.10 */
     if (!showit != !gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline)))
+#else
+    if (!showit != !showing_tabline)
+#endif
     {
 	/* Note: this may cause a resize event */
 	gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gui.tabline), showit);
 	update_window_manager_hints();
+#ifndef HAVE_GTK2
+	showing_tabline = showit;
+#endif
     }
 }
 
@@ -3211,7 +3223,13 @@ gui_mch_show_tabline(int showit)
 gui_mch_showing_tabline(void)
 {
     return gui.tabline != NULL
-		     && gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline));
+#ifdef HAVE_GTK2
+	    /* gtk_notebook_get_show_tabs does not exist in gtk+-1.2.10 */
+		     && gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline))
+#else
+		     && showing_tabline
+#endif
+		     ;
 }
 
 /*
@@ -4456,7 +4474,9 @@ gui_mch_font_dialog(char_u *oldval)
 
     if (gui.fontname != NULL)
     {
-	fontname = vim_strsave(gui.fontname);
+	/* Apparently some font names include a comma, need to escape that,
+	 * because in 'guifont' it separates names. */
+	fontname = vim_strsave_escaped(gui.fontname, (char_u *)",");
 	g_free(gui.fontname);
 	gui.fontname = NULL;
     }
@@ -4526,11 +4546,19 @@ gui_mch_font_dialog(char_u *oldval)
 			    GTK_FONT_SELECTION_DIALOG(dialog));
 	if (name != NULL)
 	{
+	    char_u  *p;
+
+	    /* Apparently some font names include a comma, need to escape
+	     * that, because in 'guifont' it separates names. */
+	    p = vim_strsave_escaped((char_u *)name, (char_u *)",");
+	    g_free(name);
 	    if (input_conv.vc_type != CONV_NONE)
-		fontname = string_convert(&input_conv, (char_u *)name, NULL);
+	    {
+		fontname = string_convert(&input_conv, p, NULL);
+		vim_free(p);
+	    }
 	    else
-		fontname = vim_strsave((char_u *)name);
-	    g_free(name);
+		fontname = p;
 	}
     }
 
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -2025,12 +2025,26 @@ gui_mch_draw_string(
 	int		clen;	/* string length up to composing char */
 	int		cells;	/* cell width of string up to composing char */
 	int		cw;	/* width of current cell */
+	int		c;
+	int		xtra;
 
 	cells = 0;
 	for (clen = 0; i < len; )
 	{
-	    unicodebuf[clen] = utf_ptr2char(text + i);
-	    cw = utf_char2cells(unicodebuf[clen]);
+	    c = utf_ptr2char(text + i);
+	    if (c >= 0x10000)
+	    {
+		/* Turn into UTF-16 encoding. */
+		unicodebuf[clen] = ((c - 0x10000) >> 10) + 0xD800;
+		unicodebuf[clen + 1] = ((c - 0x10000) & 0x3ff) + 0xDC00;
+		xtra = 1;
+	    }
+	    else
+	    {
+		unicodebuf[clen] = c;
+		xtra = 0;
+	    }
+	    cw = utf_char2cells(c);
 	    if (cw > 2)		/* don't use 4 for unprintable char */
 		cw = 1;
 	    if (unicodepdy != NULL)
@@ -2039,10 +2053,12 @@ gui_mch_draw_string(
 		 * when the font uses different widths (e.g., bold character
 		 * is wider).  */
 		unicodepdy[clen] = cw * gui.char_width;
+		if (xtra == 1)
+		    unicodepdy[clen + 1] = cw * gui.char_width;
 	    }
 	    cells += cw;
 	    i += utfc_ptr2len_len(text + i, len - i);
-	    ++clen;
+	    clen += xtra + 1;
 	}
 	ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
 			   foptions, pcliprect, unicodebuf, clen, unicodepdy);
--- a/src/if_cscope.c
+++ b/src/if_cscope.c
@@ -22,7 +22,7 @@
 # include <sys/wait.h>
 #else
     /* not UNIX, must be WIN32 */
-# include <io.h>
+# include "vimio.h"
 # include <fcntl.h>
 # include <process.h>
 # define STDIN_FILENO    0
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -1249,7 +1249,7 @@ vim_eval(void *data, int argc, Scheme_Ob
 
     expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
 
-    str = (char *)eval_to_string((char_u *)expr, NULL);
+    str = (char *)eval_to_string((char_u *)expr, NULL, TRUE);
 
     if (str == NULL)
 	raise_vim_exn(_("invalid expression"));
--- a/src/if_ole.cpp
+++ b/src/if_ole.cpp
@@ -368,7 +368,7 @@ CVim::Eval(BSTR expr, BSTR *result)
 
     /* Evaluate the expression */
     ++emsg_skip;
-    str = (char *)eval_to_string((char_u *)buffer, NULL);
+    str = (char *)eval_to_string((char_u *)buffer, NULL, TRUE);
     --emsg_skip;
     vim_free(buffer);
     if (str == NULL)
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -427,9 +427,10 @@ msg_split(s, attr)
  * work properly.
  */
     char_u *
-eval_to_string(arg, nextcmd)
+eval_to_string(arg, nextcmd, dolist)
     char_u	*arg;
     char_u	**nextcmd;
+    int		dolist;
 {
     return NULL;
 }
@@ -827,7 +828,7 @@ Eval(str)
     PREINIT:
 	char_u *value;
     PPCODE:
-	value = eval_to_string((char_u *)str, (char_u**)0);
+	value = eval_to_string((char_u *)str, (char_u **)0, TRUE);
 	if (value == NULL)
 	{
 	    XPUSHs(sv_2mortal(newSViv(0)));
--- a/src/if_ruby.c
+++ b/src/if_ruby.c
@@ -519,7 +519,7 @@ static VALUE vim_command(VALUE self, VAL
 static VALUE vim_evaluate(VALUE self, VALUE str)
 {
 #ifdef FEAT_EVAL
-    char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL);
+    char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
 
     if (value)
     {
--- a/src/if_sniff.c
+++ b/src/if_sniff.c
@@ -12,7 +12,7 @@
 #ifdef WIN32
 # include <stdio.h>
 # include <fcntl.h>
-# include <io.h>
+# include "vimio.h"
 # include <process.h>
 # include <string.h>
 # include <assert.h>
--- a/src/if_tcl.c
+++ b/src/if_tcl.c
@@ -1407,7 +1407,7 @@ tclvimexpr(interp, objc, objv, objn)
 
 #ifdef FEAT_EVAL
     expr = Tcl_GetStringFromObj(objv[objn], NULL);
-    str = (char *)eval_to_string((char_u *)expr, NULL);
+    str = (char *)eval_to_string((char_u *)expr, NULL, TRUE);
     if (str == NULL)
 	Tcl_SetResult(interp, _("invalid expression"), TCL_STATIC);
     else
--- a/src/main.c
+++ b/src/main.c
@@ -8,7 +8,7 @@
  */
 
 #if defined(MSDOS) || defined(WIN32) || defined(_WIN64)
-# include <io.h>		/* for close() and dup() */
+# include "vimio.h"		/* for close() and dup() */
 #endif
 
 #define EXTERN
@@ -3602,7 +3602,7 @@ eval_client_expr_to_string(expr)
     redir_off = 0;
     ++emsg_skip;
 
-    res = eval_to_string(expr, NULL);
+    res = eval_to_string(expr, NULL, TRUE);
 
     debug_break_level = save_dbl;
     redir_off = save_ro;
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -1486,55 +1486,59 @@ utf_composinglike(p1, p2)
 #endif
 
 /*
- * Convert a UTF-8 byte string to a wide chararacter.  Also get up to two
+ * Convert a UTF-8 byte string to a wide chararacter.  Also get up to MAX_MCO
  * composing characters.
  */
     int
-utfc_ptr2char(p, p1, p2)
+utfc_ptr2char(p, pcc)
     char_u	*p;
-    int		*p1;	/* return: first composing char or 0 */
-    int		*p2;	/* return: second composing char or 0 */
+    int		*pcc;	/* return: composing chars, last one is 0 */
 {
     int		len;
     int		c;
     int		cc;
+    int		i = 0;
 
     c = utf_ptr2char(p);
     len = utf_ptr2len(p);
+
     /* Only accept a composing char when the first char isn't illegal. */
     if ((len > 1 || *p < 0x80)
 	    && p[len] >= 0x80
 	    && UTF_COMPOSINGLIKE(p, p + len))
     {
-	*p1 = utf_ptr2char(p + len);
-	len += utf_ptr2len(p + len);
-	if (p[len] >= 0x80 && utf_iscomposing(cc = utf_ptr2char(p + len)))
-	    *p2 = cc;
-	else
-	    *p2 = 0;
+	cc = utf_ptr2char(p + len);
+	for (;;)
+	{
+	    pcc[i++] = cc;
+	    if (i == MAX_MCO)
+		break;
+	    len += utf_ptr2len(p + len);
+	    if (p[len] < 0x80 || !utf_iscomposing(cc = utf_ptr2char(p + len)))
+		break;
+	}
     }
-    else
-    {
-	*p1 = 0;
-	*p2 = 0;
-    }
+
+    if (i < MAX_MCO)	/* last composing char must be 0 */
+	pcc[i] = 0;
+
     return c;
 }
 
 /*
- * Convert a UTF-8 byte string to a wide chararacter.  Also get up to two
+ * Convert a UTF-8 byte string to a wide chararacter.  Also get up to MAX_MCO
  * composing characters.  Use no more than p[maxlen].
  */
     int
-utfc_ptr2char_len(p, p1, p2, maxlen)
+utfc_ptr2char_len(p, pcc, maxlen)
     char_u	*p;
-    int		*p1;	/* return: first composing char or 0 */
-    int		*p2;	/* return: second composing char or 0 */
+    int		*pcc;	/* return: composing chars, last one is 0 */
     int		maxlen;
 {
     int		len;
     int		c;
     int		cc;
+    int		i = 0;
 
     c = utf_ptr2char(p);
     len = utf_ptr2len_len(p, maxlen);
@@ -1544,20 +1548,23 @@ utfc_ptr2char_len(p, p1, p2, maxlen)
 	    && p[len] >= 0x80
 	    && UTF_COMPOSINGLIKE(p, p + len))
     {
-	*p1 = utf_ptr2char(p + len);
-	len += utf_ptr2len_len(p + len, maxlen - len);
-	if (len < maxlen
-		&& p[len] >= 0x80
-		&& utf_iscomposing(cc = utf_ptr2char(p + len)))
-	    *p2 = cc;
-	else
-	    *p2 = 0;
+	cc = utf_ptr2char(p + len);
+	for (;;)
+	{
+	    pcc[i++] = cc;
+	    if (i == MAX_MCO)
+		break;
+	    len += utf_ptr2len_len(p + len, maxlen - len);
+	    if (len >= maxlen
+		    || p[len] < 0x80
+		    || !utf_iscomposing(cc = utf_ptr2char(p + len)))
+		break;
+	}
     }
-    else
-    {
-	*p1 = 0;
-	*p2 = 0;
-    }
+
+    if (i < MAX_MCO)	/* last composing char must be 0 */
+	pcc[i] = 0;
+
     return c;
 }
 
@@ -1573,13 +1580,14 @@ utfc_char2bytes(off, buf)
     char_u	*buf;
 {
     int		len;
+    int		i;
 
     len = utf_char2bytes(ScreenLinesUC[off], buf);
-    if (ScreenLinesC1[off] != 0)
+    for (i = 0; i < Screen_mco; ++i)
     {
-	len += utf_char2bytes(ScreenLinesC1[off], buf + len);
-	if (ScreenLinesC2[off] != 0)
-	    len += utf_char2bytes(ScreenLinesC2[off], buf + len);
+	if (ScreenLinesC[i][off] == 0)
+	    break;
+	len += utf_char2bytes(ScreenLinesC[i][off], buf + len);
     }
     return len;
 }
--- a/src/memfile.c
+++ b/src/memfile.c
@@ -33,7 +33,7 @@
  */
 
 #if defined MSDOS || defined(WIN32) || defined(_WIN64)
-# include <io.h>	/* for lseek(), must be before vim.h */
+# include "vimio.h"	/* for lseek(), must be before vim.h */
 #endif
 
 #include "vim.h"
--- a/src/memline.c
+++ b/src/memline.c
@@ -43,7 +43,7 @@
  */
 
 #if defined(MSDOS) || defined(WIN32) || defined(_WIN64)
-# include <io.h>
+# include "vimio.h"
 #endif
 
 #include "vim.h"
--- a/src/message.c
+++ b/src/message.c
@@ -293,10 +293,12 @@ trunc_string(s, buf, room)
     else if (enc_utf8)
     {
 	/* For UTF-8 we can go backwards easily. */
-	i = (int)STRLEN(s);
+	half = i = (int)STRLEN(s);
 	for (;;)
 	{
-	    half = i - (*mb_head_off)(s, s + i - 1) - 1;
+	    do
+		half = half - (*mb_head_off)(s, s + half - 1) - 1;
+	    while (utf_iscomposing(utf_ptr2char(s + half)) && half > 0);
 	    n = ptr2cells(s + half);
 	    if (len + n > room)
 		break;
@@ -1723,7 +1725,7 @@ msg_puts_long_attr(longstr, attr)
     char_u	*longstr;
     int		attr;
 {
-    msg_puts_long_len_attr(longstr, (int)strlen((char *)longstr), attr);
+    msg_puts_long_len_attr(longstr, (int)STRLEN(longstr), attr);
 }
 
     void
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -2177,11 +2177,11 @@ del_bytes(count, fixpos, use_delcombine)
     if (p_deco && use_delcombine && enc_utf8
 					 && utfc_ptr2len(oldp + col) >= count)
     {
-	int	c1, c2;
+	int	cc[MAX_MCO];
 	int	n;
 
-	(void)utfc_ptr2char(oldp + col, &c1, &c2);
-	if (c1 != NUL)
+	(void)utfc_ptr2char(oldp + col, cc);
+	if (cc[0] != NUL)
 	{
 	    /* Find the last composing char, there can be several. */
 	    n = col;
@@ -8056,6 +8056,7 @@ fast_breakcheck()
 /*
  * Expand wildcards.  Calls gen_expand_wildcards() and removes files matching
  * 'wildignore'.
+ * Returns OK or FAIL.
  */
     int
 expand_wildcards(num_pat, pat, num_file, file, flags)
@@ -8898,7 +8899,7 @@ expand_backtick(gap, pat, flags)
 
 #ifdef FEAT_EVAL
     if (*cmd == '=')	    /* `={expr}`: Expand expression */
-	buffer = eval_to_string(cmd + 1, &p);
+	buffer = eval_to_string(cmd + 1, &p, TRUE);
     else
 #endif
 	buffer = get_cmd_output(cmd, NULL,
new file mode 100644
--- /dev/null
+++ b/src/msvcsetup.bat
@@ -0,0 +1,12 @@
+rem To be used on MS-Windows when using the Visual C++ Toolkit 2003
+rem See INSTALLpc.txt for information.
+
+set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH%
+call "%VCToolkitInstallDir%vcvars32.bat"
+set MSVCVer=7.1
+
+rem The platform SDK can be installed elsewhere, adjust the path.
+call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd"
+rem call "e:\Microsoft Platform SDK\SetEnv.Cmd"
+
+set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB%
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -26,7 +26,7 @@
 # ifdef DEBUG
 #  include <tchar.h>	/* for _T definition for TRACEn macros */
 # endif
-# include <io.h>
+# include "vimio.h"
 /* WinSock API is separated from C API, thus we can't use read(), write(),
  * errno... */
 # define sock_errno WSAGetLastError()
--- a/src/normal.c
+++ b/src/normal.c
@@ -5691,9 +5691,9 @@ nv_right(cap)
 		|| (PAST_LINE && *ml_get_cursor() == NUL))
 	{
 	    /*
-	     *	  <Space> wraps to next line if 'whichwrap' bit 1 set.
-	     *	      'l' wraps to next line if 'whichwrap' bit 2 set.
-	     * CURS_RIGHT wraps to next line if 'whichwrap' bit 3 set
+	     *	  <Space> wraps to next line if 'whichwrap' has 's'.
+	     *	      'l' wraps to next line if 'whichwrap' has 'l'.
+	     * CURS_RIGHT wraps to next line if 'whichwrap' has '>'.
 	     */
 	    if (       ((cap->cmdchar == ' '
 			    && vim_strchr(p_ww, 's') != NULL)
@@ -5706,8 +5706,7 @@ nv_right(cap)
 		/* When deleting we also count the NL as a character.
 		 * Set cap->oap->inclusive when last char in the line is
 		 * included, move to next line after that */
-		if (	   (cap->oap->op_type == OP_DELETE
-			    || cap->oap->op_type == OP_CHANGE)
+		if (	   cap->oap->op_type != OP_NOP
 			&& !cap->oap->inclusive
 			&& !lineempty(curwin->w_cursor.lnum))
 		    cap->oap->inclusive = TRUE;
--- a/src/ops.c
+++ b/src/ops.c
@@ -780,7 +780,7 @@ get_expr_line()
     if (expr_copy == NULL)
 	return NULL;
 
-    rv = eval_to_string(expr_copy, NULL);
+    rv = eval_to_string(expr_copy, NULL, TRUE);
     vim_free(expr_copy);
     return rv;
 }
--- a/src/option.c
+++ b/src/option.c
@@ -414,6 +414,8 @@ struct vimoption
 #define P_NFNAME       0x200000L/* only normal file name chars allowed */
 #define P_INSECURE     0x400000L/* option was set from a modeline */
 
+#define ISK_LATIN1  (char_u *)"@,48-57,_,192-255"
+
 /*
  * options[] is initialized here.
  * The order of the options MUST be alphabetic for ":set all" and findoption().
@@ -848,8 +850,7 @@ static struct vimoption
 #else
 			    (char_u *)NULL, PV_NONE,
 #endif
-			    {(char_u *)FALSE, (char_u *)0L}
-			    },
+			    {(char_u *)FALSE, (char_u *)0L}},
     {"dictionary",  "dict", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
 #ifdef FEAT_INS_EXPAND
 			    (char_u *)&p_dict, PV_DICT,
@@ -1423,7 +1424,7 @@ static struct vimoption
 # if defined(MSDOS) || defined(MSWIN) || defined(OS2)
 				(char_u *)"@,48-57,_,128-167,224-235"
 # else
-				(char_u *)"@,48-57,_,192-255"
+				ISK_LATIN1
 # endif
 #endif
 				}},
@@ -1602,6 +1603,13 @@ static struct vimoption
     {"matchtime",   "mat",  P_NUM|P_VI_DEF,
 			    (char_u *)&p_mat, PV_NONE,
 			    {(char_u *)5L, (char_u *)0L}},
+    {"maxcombine",  "mco",  P_NUM|P_VI_DEF,
+#ifdef FEAT_MBYTE
+			    (char_u *)&p_mco, PV_NONE,
+#else
+			    (char_u *)NULL, PV_NONE,
+#endif
+			    {(char_u *)2, (char_u *)0L}},
     {"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
 #ifdef FEAT_EVAL
 			    (char_u *)&p_mfd, PV_NONE,
@@ -3198,9 +3206,17 @@ set_init_1()
 # endif
 		    )
 	    {
-		/* Adjust the default for 'isprint' to match latin1. */
+		/* Adjust the default for 'isprint' and 'iskeyword' to match
+		 * latin1.  Also set the defaults for when 'nocompatible' is
+		 * set. */
 		set_string_option_direct((char_u *)"isp", -1,
 				   (char_u *)"@,161-255", OPT_FREE, SID_NONE);
+		set_string_option_direct((char_u *)"isk", -1,
+					      ISK_LATIN1, OPT_FREE, SID_NONE);
+		opt_idx = findoption((char_u *)"isp");
+		options[opt_idx].def_val[VIM_DEFAULT] = (char_u *)"@,161-255";
+		opt_idx = findoption((char_u *)"isk");
+		options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
 		(void)init_chartab();
 	    }
 #endif
@@ -7564,6 +7580,18 @@ set_num_option(opt_idx, varp, value, err
     }
 #endif /* FEAT_FOLDING */
 
+#ifdef FEAT_MBYTE
+    /* 'maxcombine' */
+    else if (pp == &p_mco)
+    {
+	if (p_mco > MAX_MCO)
+	    p_mco = MAX_MCO;
+	else if (p_mco < 0)
+	    p_mco = 0;
+	screenclear();	    /* will re-allocate the screen */
+    }
+#endif
+
     else if (pp == &curbuf->b_p_iminsert)
     {
 	if (curbuf->b_p_iminsert < 0 || curbuf->b_p_iminsert > B_IMODE_LAST)
--- a/src/option.h
+++ b/src/option.h
@@ -583,6 +583,9 @@ EXTERN char_u	*p_mef;		/* 'makeef' */
 EXTERN char_u	*p_mp;		/* 'makeprg' */
 #endif
 EXTERN long	p_mat;		/* 'matchtime' */
+#ifdef FEAT_MBYTE
+EXTERN long	p_mco;		/* 'maxcombine' */
+#endif
 #ifdef FEAT_EVAL
 EXTERN long	p_mfd;		/* 'maxfuncdepth' */
 #endif
--- a/src/os_msdos.c
+++ b/src/os_msdos.c
@@ -21,7 +21,7 @@
  * Some functions are also used for Win16 (MS-Windows 3.1).
  */
 
-#include <io.h>
+#include "vimio.h"
 #include "vim.h"
 
 #include <conio.h>
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -22,7 +22,7 @@
 # endif
 #endif
 
-#include <io.h>
+#include "vimio.h"
 #include "vim.h"
 
 #ifdef HAVE_FCNTL_H
--- a/src/os_win16.c
+++ b/src/os_win16.c
@@ -20,7 +20,7 @@
 # pragma warn -obs
 #endif
 
-#include <io.h>
+#include "vimio.h"
 #include "vim.h"
 
 #include <fcntl.h>
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -20,7 +20,7 @@
  * Roger Knobbe <rogerk@wonderware.com> did the initial port of Vim 3.0.
  */
 
-#include <io.h>
+#include "vimio.h"
 #include "vim.h"
 
 #ifdef FEAT_MZSCHEME
@@ -1926,6 +1926,7 @@ RestoreConsoleBuffer(
     return TRUE;
 }
 
+#define FEAT_RESTORE_ORIG_SCREEN
 #ifdef FEAT_RESTORE_ORIG_SCREEN
 static ConsoleBuffer g_cbOrig = { 0 };
 #endif
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -17,7 +17,7 @@ void eval_patch __ARGS((char_u *origfile
 int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
 char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
 int skip_expr __ARGS((char_u **pp));
-char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd));
+char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
 char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
 int eval_to_number __ARGS((char_u *expr));
 list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));
--- a/src/proto/mbyte.pro
+++ b/src/proto/mbyte.pro
@@ -22,8 +22,8 @@ int mb_cptr2char_adv __ARGS((char_u **pp
 int arabic_combine __ARGS((int one, int two));
 int arabic_maycombine __ARGS((int two));
 int utf_composinglike __ARGS((char_u *p1, char_u *p2));
-int utfc_ptr2char __ARGS((char_u *p, int *p1, int *p2));
-int utfc_ptr2char_len __ARGS((char_u *p, int *p1, int *p2, int maxlen));
+int utfc_ptr2char __ARGS((char_u *p, int *pcc));
+int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
 int utfc_char2bytes __ARGS((int off, char_u *buf));
 int utf_ptr2len __ARGS((char_u *p));
 int utf_byte2len __ARGS((int b));
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -16,6 +16,7 @@ void spell_suggest __ARGS((int count));
 void ex_spellrepall __ARGS((exarg_T *eap));
 void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
 char_u *eval_soundfold __ARGS((char_u *word));
+void ex_spellinfo __ARGS((exarg_T *eap));
 void ex_spelldump __ARGS((exarg_T *eap));
 void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
 char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -665,6 +665,9 @@ static char_u	*regconcat __ARGS((int *fl
 static char_u	*regpiece __ARGS((int *));
 static char_u	*regatom __ARGS((int *));
 static char_u	*regnode __ARGS((int));
+#ifdef FEAT_MBYTE
+static int	use_multibytecode __ARGS((int c));
+#endif
 static int	prog_magic_wrong __ARGS((void));
 static char_u	*regnext __ARGS((char_u *));
 static void	regc __ARGS((int b));
@@ -1662,6 +1665,15 @@ regatom(flagp)
 	p = vim_strchr(classchars, no_Magic(c));
 	if (p == NULL)
 	    EMSG_RET_NULL(_("E63: invalid use of \\_"));
+#ifdef FEAT_MBYTE
+	/* When '.' is followed by a composing char ignore the dot, so that
+	 * the composing char is matched here. */
+	if (enc_utf8 && c == Magic('.') && utf_iscomposing(peekchr()))
+	{
+	    c = getchr();
+	    goto do_multibyte;
+	}
+#endif
 	ret = regnode(classcodes[p - classchars] + extra);
 	*flagp |= HASWIDTH | SIMPLE;
 	break;
@@ -1921,7 +1933,12 @@ regatom(flagp)
 			          EMSG_M_RET_NULL(
 					_("E678: Invalid character after %s%%[dxouU]"),
 					reg_magic == MAGIC_ALL);
-			      ret = regnode(EXACTLY);
+#ifdef FEAT_MBYTE
+			      if (use_multibytecode(i))
+				  ret = regnode(MULTIBYTECODE);
+			      else
+#endif
+				  ret = regnode(EXACTLY);
 			      if (i == 0)
 				  regc(0x0a);
 			      else
@@ -2289,10 +2306,10 @@ collection:
 
 #ifdef FEAT_MBYTE
 	    /* A multi-byte character is handled as a separate atom if it's
-	     * before a multi. */
-	    if (has_mbyte && (*mb_char2len)(c) > 1
-				     && re_multi_type(peekchr()) != NOT_MULTI)
+	     * before a multi and when it's a composing char. */
+	    if (use_multibytecode(c))
 	    {
+do_multibyte:
 		ret = regnode(MULTIBYTECODE);
 		regmbc(c);
 		*flagp |= HASWIDTH | SIMPLE;
@@ -2323,27 +2340,17 @@ collection:
 		    regmbc(c);
 		    if (enc_utf8)
 		    {
-			int	off;
 			int	l;
 
-			/* Need to get composing character too, directly
-			 * access regparse for that, because skipchr() skips
-			 * over composing chars. */
-			ungetchr();
-			if (*regparse == '\\' && regparse[1] != NUL)
-			    off = 1;
-			else
-			    off = 0;
+			/* Need to get composing character too. */
 			for (;;)
 			{
-			    l = utf_ptr2len(regparse + off);
-			    if (!UTF_COMPOSINGLIKE(regparse + off,
-							  regparse + off + l))
+			    l = utf_ptr2len(regparse);
+			    if (!UTF_COMPOSINGLIKE(regparse, regparse + l))
 				break;
-			    off += l;
-			    regmbc(utf_ptr2char(regparse + off));
+			    regmbc(utf_ptr2char(regparse));
+			    skipchr();
 			}
-			skipchr();
 		    }
 		}
 		else
@@ -2364,6 +2371,21 @@ collection:
     return ret;
 }
 
+#ifdef FEAT_MBYTE
+/*
+ * Return TRUE if MULTIBYTECODE should be used instead of EXACTLY for
+ * character "c".
+ */
+    static int
+use_multibytecode(c)
+    int c;
+{
+    return has_mbyte && (*mb_char2len)(c) > 1
+		     && (re_multi_type(peekchr()) != NOT_MULTI
+			     || (enc_utf8 && utf_iscomposing(c)));
+}
+#endif
+
 /*
  * emit a node
  * Return pointer to generated code.
@@ -2747,7 +2769,9 @@ skipchr()
     if (regparse[prevchr_len] != NUL)
     {
 #ifdef FEAT_MBYTE
-	if (has_mbyte)
+	if (enc_utf8)
+	    prevchr_len += utf_char2len(mb_ptr2char(regparse + prevchr_len));
+	else if (has_mbyte)
 	    prevchr_len += (*mb_ptr2len)(regparse + prevchr_len);
 	else
 #endif
@@ -4229,6 +4253,7 @@ regmatch(scan)
 	    {
 		int	i, len;
 		char_u	*opnd;
+		int	opndc, inpc;
 
 		opnd = OPERAND(scan);
 		/* Safety check (just in case 'encoding' was changed since
@@ -4238,12 +4263,37 @@ regmatch(scan)
 		    status = RA_NOMATCH;
 		    break;
 		}
-		for (i = 0; i < len; ++i)
-		    if (opnd[i] != reginput[i])
+		if (enc_utf8)
+		    opndc = mb_ptr2char(opnd);
+		if (enc_utf8 && utf_iscomposing(opndc))
+		{
+		    /* When only a composing char is given match at any
+		     * position where that composing char appears. */
+		    status = RA_NOMATCH;
+		    for (i = 0; reginput[i] != NUL; i += utf_char2len(inpc))
 		    {
-			status = RA_NOMATCH;
-			break;
+			inpc = mb_ptr2char(reginput + i);
+			if (!utf_iscomposing(inpc))
+			{
+			    if (i > 0)
+				break;
+			}
+			else if (opndc == inpc)
+			{
+			    /* Include all following composing chars. */
+			    len = i + mb_ptr2len(reginput + i);
+			    status = RA_MATCH;
+			    break;
+			}
 		    }
+		}
+		else
+		    for (i = 0; i < len; ++i)
+			if (opnd[i] != reginput[i])
+			{
+			    status = RA_NOMATCH;
+			    break;
+			}
 		reginput += len;
 	    }
 	    else
@@ -6745,7 +6795,7 @@ vim_regsub_both(source, dest, copy, magi
 	    save_ireg_ic = ireg_ic;
 	    can_f_submatch = TRUE;
 
-	    eval_result = eval_to_string(source + 2, NULL);
+	    eval_result = eval_to_string(source + 2, NULL, TRUE);
 	    if (eval_result != NULL)
 	    {
 		for (s = eval_result; *s != NUL; mb_ptr_adv(s))
--- a/src/screen.c
+++ b/src/screen.c
@@ -27,7 +27,7 @@
  * ScreenLinesUC[].  ScreenLines[] contains the first byte only.  For an ASCII
  * character without composing chars ScreenLinesUC[] will be 0.  When the
  * character occupies two display cells the next byte in ScreenLines[] is 0.
- * ScreenLinesC1[] and ScreenLinesC2[] contain up to two composing characters
+ * ScreenLinesC[][] contain up to 'maxcombine' composing characters
  * (drawn on top of the first character).  They are 0 when not used.
  * ScreenLines2[] is only used for euc-jp to store the second byte if the
  * first byte is 0x8e (single-width character).
@@ -2187,7 +2187,8 @@ fold_line(wp, fold_count, foldinfo, lnum
     if (has_mbyte)
     {
 	int	cells;
-	int	u8c, u8c_c1, u8c_c2;
+	int	u8c, u8cc[MAX_MCO];
+	int	i;
 	int	idx;
 	int	c_len;
 	char_u	*p;
@@ -2217,8 +2218,8 @@ fold_line(wp, fold_count, foldinfo, lnum
 	    ScreenLines[idx] = *p;
 	    if (enc_utf8)
 	    {
-		u8c = utfc_ptr2char(p, &u8c_c1, &u8c_c2);
-		if (*p < 0x80 && u8c_c1 == 0 && u8c_c2 == 0)
+		u8c = utfc_ptr2char(p, u8cc);
+		if (*p < 0x80 && u8cc[0] == 0)
 		{
 		    ScreenLinesUC[idx] = 0;
 #ifdef FEAT_ARABIC
@@ -2231,7 +2232,8 @@ fold_line(wp, fold_count, foldinfo, lnum
 		    if (p_arshape && !p_tbidi && ARABIC_CHAR(u8c))
 		    {
 			/* Do Arabic shaping. */
-			int	pc, pc1, nc, dummy;
+			int	pc, pc1, nc;
+			int	pcc[MAX_MCO];
 			int	firstbyte = *p;
 
 			/* The idea of what is the previous and next
@@ -2241,16 +2243,17 @@ fold_line(wp, fold_count, foldinfo, lnum
 			    pc = prev_c;
 			    pc1 = prev_c1;
 			    nc = utf_ptr2char(p + c_len);
-			    prev_c1 = u8c_c1;
+			    prev_c1 = u8cc[0];
 			}
 			else
 			{
-			    pc = utfc_ptr2char(p + c_len, &pc1, &dummy);
+			    pc = utfc_ptr2char(p + c_len, pcc);
 			    nc = prev_c;
+			    pc1 = pcc[0];
 			}
 			prev_c = u8c;
 
-			u8c = arabic_shape(u8c, &firstbyte, &u8c_c1,
+			u8c = arabic_shape(u8c, &firstbyte, &u8cc[0],
 								 pc, pc1, nc);
 			ScreenLines[idx] = firstbyte;
 		    }
@@ -2262,8 +2265,12 @@ fold_line(wp, fold_count, foldinfo, lnum
 			ScreenLinesUC[idx] = (cells == 2) ? 0xff1f : (int)'?';
 		    else
 			ScreenLinesUC[idx] = u8c;
-		    ScreenLinesC1[idx] = u8c_c1;
-		    ScreenLinesC2[idx] = u8c_c2;
+		    for (i = 0; i < Screen_mco; ++i)
+		    {
+			ScreenLinesC[i][idx] = u8cc[i];
+			if (u8cc[i] == 0)
+			    break;
+		    }
 		}
 		if (cells > 1)
 		    ScreenLines[idx + 1] = 0;
@@ -2315,8 +2322,7 @@ fold_line(wp, fold_count, foldinfo, lnum
 	    if (fill_fold >= 0x80)
 	    {
 		ScreenLinesUC[off + col] = fill_fold;
-		ScreenLinesC1[off + col] = 0;
-		ScreenLinesC2[off + col] = 0;
+		ScreenLinesC[0][off + col] = 0;
 	    }
 	    else
 		ScreenLinesUC[off + col] = 0;
@@ -2561,8 +2567,7 @@ win_line(wp, lnum, startrow, endrow, noc
     int		mb_l = 1;		/* multi-byte byte length */
     int		mb_c = 0;		/* decoded multi-byte character */
     int		mb_utf8 = FALSE;	/* screen char is UTF-8 char */
-    int		u8c_c1 = 0;		/* first composing UTF-8 char */
-    int		u8c_c2 = 0;		/* second composing UTF-8 char */
+    int		u8cc[MAX_MCO];		/* composing UTF-8 chars */
 #endif
 #ifdef FEAT_DIFF
     int		filler_lines;		/* nr of filler lines to be drawn */
@@ -2581,6 +2586,8 @@ win_line(wp, lnum, startrow, endrow, noc
 #endif
 #ifdef FEAT_SEARCH_EXTRA
     match_T	*shl;			/* points to search_hl or match_hl */
+#endif
+#if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_MBYTE)
     int		i;
 #endif
 #ifdef FEAT_ARABIC
@@ -3433,7 +3440,7 @@ win_line(wp, lnum, startrow, endrow, noc
 		if (enc_utf8 && (*mb_char2len)(c) > 1)
 		{
 		    mb_utf8 = TRUE;
-		    u8c_c1 = u8c_c2 = 0;
+		    u8cc[0] = 0;
 		}
 		else
 		    mb_utf8 = FALSE;
@@ -3456,7 +3463,7 @@ win_line(wp, lnum, startrow, endrow, noc
 			    mb_l = 1;
 			else if (mb_l > 1)
 			{
-			    mb_c = utfc_ptr2char(p_extra, &u8c_c1, &u8c_c2);
+			    mb_c = utfc_ptr2char(p_extra, u8cc);
 			    mb_utf8 = TRUE;
 			}
 		    }
@@ -3520,7 +3527,7 @@ win_line(wp, lnum, startrow, endrow, noc
 		    mb_utf8 = FALSE;
 		    if (mb_l > 1)
 		    {
-			mb_c = utfc_ptr2char(ptr, &u8c_c1, &u8c_c2);
+			mb_c = utfc_ptr2char(ptr, u8cc);
 			/* Overlong encoded ASCII or ASCII with composing char
 			 * is displayed normally, except a NUL. */
 			if (mb_c < 0x80)
@@ -3531,8 +3538,9 @@ win_line(wp, lnum, startrow, endrow, noc
 			 * Draw it as a space with a composing char. */
 			if (utf_iscomposing(mb_c))
 			{
-			    u8c_c2 = u8c_c1;
-			    u8c_c1 = mb_c;
+			    for (i = Screen_mco - 1; i > 0; --i)
+				u8cc[i] = u8cc[i - 1];
+			    u8cc[0] = mb_c;
 			    mb_c = ' ';
 			}
 		    }
@@ -3549,10 +3557,10 @@ win_line(wp, lnum, startrow, endrow, noc
 			if (mb_c < 0x10000)
 			{
 			    transchar_hex(extra, mb_c);
-#ifdef FEAT_RIGHTLEFT
+# ifdef FEAT_RIGHTLEFT
 			    if (wp->w_p_rl)		/* reverse */
 				rl_mirror(extra);
-#endif
+# endif
 			}
 			else if (utf_char2cells(mb_c) != 2)
 			    STRCPY(extra, "?");
@@ -3579,7 +3587,8 @@ win_line(wp, lnum, startrow, endrow, noc
 		    else if (p_arshape && !p_tbidi && ARABIC_CHAR(mb_c))
 		    {
 			/* Do Arabic shaping. */
-			int	pc, pc1, nc, dummy;
+			int	pc, pc1, nc;
+			int	pcc[MAX_MCO];
 
 			/* The idea of what is the previous and next
 			 * character depends on 'rightleft'. */
@@ -3588,16 +3597,17 @@ win_line(wp, lnum, startrow, endrow, noc
 			    pc = prev_c;
 			    pc1 = prev_c1;
 			    nc = utf_ptr2char(ptr + mb_l);
-			    prev_c1 = u8c_c1;
+			    prev_c1 = u8cc[0];
 			}
 			else
 			{
-			    pc = utfc_ptr2char(ptr + mb_l, &pc1, &dummy);
+			    pc = utfc_ptr2char(ptr + mb_l, pcc);
 			    nc = prev_c;
+			    pc1 = pcc[0];
 			}
 			prev_c = mb_c;
 
-			mb_c = arabic_shape(mb_c, &c, &u8c_c1, pc, pc1, nc);
+			mb_c = arabic_shape(mb_c, &c, &u8cc[0], pc, pc1, nc);
 		    }
 		    else
 			prev_c = mb_c;
@@ -3704,7 +3714,7 @@ win_line(wp, lnum, startrow, endrow, noc
 		if (enc_utf8 && (*mb_char2len)(c) > 1)
 		{
 		    mb_utf8 = TRUE;
-		    u8c_c1 = u8c_c2 = 0;
+		    u8cc[0] = 0;
 		}
 		else
 		    mb_utf8 = FALSE;
@@ -3866,7 +3876,7 @@ win_line(wp, lnum, startrow, endrow, noc
 		    if (enc_utf8 && (*mb_char2len)(c) > 1)
 		    {
 			mb_utf8 = TRUE;
-			u8c_c1 = u8c_c2 = 0;
+			u8cc[0] = 0;
 		    }
 		    else
 			mb_utf8 = FALSE;
@@ -3904,7 +3914,7 @@ win_line(wp, lnum, startrow, endrow, noc
 			if (enc_utf8 && (*mb_char2len)(c) > 1)
 			{
 			    mb_utf8 = TRUE;
-			    u8c_c1 = u8c_c2 = 0;
+			    u8cc[0] = 0;
 			}
 #endif
 		    }
@@ -3978,7 +3988,7 @@ win_line(wp, lnum, startrow, endrow, noc
 		    if (enc_utf8 && (*mb_char2len)(c) > 1)
 		    {
 			mb_utf8 = TRUE;
-			u8c_c1 = u8c_c2 = 0;
+			u8cc[0] = 0;
 		    }
 		    else
 			mb_utf8 = FALSE;	/* don't draw as UTF-8 */
@@ -4117,7 +4127,7 @@ win_line(wp, lnum, startrow, endrow, noc
 	    if (enc_utf8 && (*mb_char2len)(c) > 1)
 	    {
 		mb_utf8 = TRUE;
-		u8c_c1 = u8c_c2 = 0;
+		u8cc[0] = 0;
 	    }
 	    else
 		mb_utf8 = FALSE;	/* don't draw as UTF-8 */
@@ -4247,7 +4257,7 @@ win_line(wp, lnum, startrow, endrow, noc
 	    if (enc_utf8 && (*mb_char2len)(c) > 1)
 	    {
 		mb_utf8 = TRUE;
-		u8c_c1 = u8c_c2 = 0;
+		u8cc[0] = 0;
 	    }
 	    else
 		mb_utf8 = FALSE;
@@ -4281,8 +4291,12 @@ win_line(wp, lnum, startrow, endrow, noc
 		if (mb_utf8)
 		{
 		    ScreenLinesUC[off] = mb_c;
-		    ScreenLinesC1[off] = u8c_c1;
-		    ScreenLinesC2[off] = u8c_c2;
+		    for (i = 0; i < Screen_mco; ++i)
+		    {
+			ScreenLinesC[i][off] = u8cc[i];
+			if (u8cc[i] == 0)
+			    break;
+		    }
 		}
 		else
 		    ScreenLinesUC[off] = 0;
@@ -4512,6 +4526,30 @@ win_line(wp, lnum, startrow, endrow, noc
     return row;
 }
 
+#ifdef FEAT_MBYTE
+static int comp_char_differs __ARGS((int, int));
+
+/*
+ * Return if the composing characters at "off_from" and "off_to" differ.
+ */
+    static int
+comp_char_differs(off_from, off_to)
+    int	    off_from;
+    int	    off_to;
+{
+    int	    i;
+
+    for (i = 0; i < Screen_mco; ++i)
+    {
+	if (ScreenLinesC[i][off_from] != ScreenLinesC[i][off_to])
+	    return TRUE;
+	if (ScreenLinesC[i][off_from] == 0)
+	    break;
+    }
+    return FALSE;
+}
+#endif
+
 /*
  * Check whether the given character needs redrawing:
  * - the (first byte of the) character is different
@@ -4538,10 +4576,7 @@ char_needs_redraw(off_from, off_to, cols
 		|| (enc_utf8
 		    && (ScreenLinesUC[off_from] != ScreenLinesUC[off_to]
 			|| (ScreenLinesUC[off_from] != 0
-			    && (ScreenLinesC1[off_from]
-						      != ScreenLinesC1[off_to]
-				|| ScreenLinesC2[off_from]
-						  != ScreenLinesC2[off_to]))))
+			    && comp_char_differs(off_from, off_to))))
 #endif
 	       ))
 	return TRUE;
@@ -4753,8 +4788,10 @@ screen_line(row, coloff, endcol, clear_w
 		ScreenLinesUC[off_to] = ScreenLinesUC[off_from];
 		if (ScreenLinesUC[off_from] != 0)
 		{
-		    ScreenLinesC1[off_to] = ScreenLinesC1[off_from];
-		    ScreenLinesC2[off_to] = ScreenLinesC2[off_from];
+		    int	    i;
+
+		    for (i = 0; i < Screen_mco; ++i)
+			ScreenLinesC[i][off_to] = ScreenLinesC[i][off_from];
 		}
 	    }
 	    if (char_cells == 2)
@@ -4892,8 +4929,8 @@ screen_line(row, coloff, endcol, clear_w
 	    c = fillchar_vsep(&hl);
 	    if (ScreenLines[off_to] != c
 # ifdef FEAT_MBYTE
-		    || (enc_utf8
-			      && ScreenLinesUC[off_to] != (c >= 0x80 ? c : 0))
+		    || (enc_utf8 && (int)ScreenLinesUC[off_to]
+						       != (c >= 0x80 ? c : 0))
 # endif
 		    || ScreenAttrs[off_to] != hl)
 	    {
@@ -4905,8 +4942,7 @@ screen_line(row, coloff, endcol, clear_w
 		    if (c >= 0x80)
 		    {
 			ScreenLinesUC[off_to] = c;
-			ScreenLinesC1[off_to] = 0;
-			ScreenLinesC2[off_to] = 0;
+			ScreenLinesC[0][off_to] = 0;
 		    }
 		    else
 			ScreenLinesUC[off_to] = 0;
@@ -5553,7 +5589,7 @@ get_keymap_str(wp, buf, len)
 	curwin = wp;
 	STRCPY(buf, "b:keymap_name");	/* must be writable */
 	++emsg_skip;
-	s = p = eval_to_string(buf, NULL);
+	s = p = eval_to_string(buf, NULL, FALSE);
 	--emsg_skip;
 	curbuf = old_curbuf;
 	curwin = old_curwin;
@@ -5805,6 +5841,31 @@ screen_getbytes(row, col, bytes, attrp)
     }
 }
 
+#ifdef FEAT_MBYTE
+static int screen_comp_differs __ARGS((int, int*));
+
+/*
+ * Return TRUE if composing characters for screen posn "off" differs from
+ * composing characters in "u8cc".
+ */
+    static int
+screen_comp_differs(off, u8cc)
+    int	    off;
+    int	    *u8cc;
+{
+    int	    i;
+
+    for (i = 0; i < Screen_mco; ++i)
+    {
+	if (ScreenLinesC[i][off] != (u8char_T)u8cc[i])
+	    return TRUE;
+	if (u8cc[i] == 0)
+	    break;
+    }
+    return FALSE;
+}
+#endif
+
 /*
  * Put string '*text' on the screen at position 'row' and 'col', with
  * attributes 'attr', and update ScreenLines[] and ScreenAttrs[].
@@ -5840,12 +5901,12 @@ screen_puts_len(text, len, row, col, att
     int		mbyte_blen = 1;
     int		mbyte_cells = 1;
     int		u8c = 0;
-    int		u8c_c1 = 0;
-    int		u8c_c2 = 0;
+    int		u8cc[MAX_MCO];
     int		clear_next_cell = FALSE;
 # ifdef FEAT_ARABIC
     int		prev_c = 0;		/* previous Arabic character */
-    int		pc, nc, nc1, dummy;
+    int		pc, nc, nc1;
+    int		pcc[MAX_MCO];
 # endif
 #endif
 
@@ -5872,10 +5933,10 @@ screen_puts_len(text, len, row, col, att
 	    else	/* enc_utf8 */
 	    {
 		if (len >= 0)
-		    u8c = utfc_ptr2char_len(ptr, &u8c_c1, &u8c_c2,
+		    u8c = utfc_ptr2char_len(ptr, u8cc,
 						   (int)((text + len) - ptr));
 		else
-		    u8c = utfc_ptr2char(ptr, &u8c_c1, &u8c_c2);
+		    u8c = utfc_ptr2char(ptr, u8cc);
 		mbyte_cells = utf_char2cells(u8c);
 		/* Non-BMP character: display as ? or fullwidth ?. */
 		if (u8c >= 0x10000)
@@ -5895,10 +5956,13 @@ screen_puts_len(text, len, row, col, att
 			nc1 = NUL;
 		    }
 		    else
-			nc = utfc_ptr2char(ptr + mbyte_blen, &nc1, &dummy);
+		    {
+			nc = utfc_ptr2char(ptr + mbyte_blen, pcc);
+			nc1 = pcc[0];
+		    }
 		    pc = prev_c;
 		    prev_c = u8c;
-		    u8c = arabic_shape(u8c, &c, &u8c_c1, nc, nc1, pc);
+		    u8c = arabic_shape(u8c, &c, &u8cc[0], nc, nc1, pc);
 		}
 		else
 		    prev_c = u8c;
@@ -5915,10 +5979,8 @@ screen_puts_len(text, len, row, col, att
 		    && c == 0x8e
 		    && ScreenLines2[off] != ptr[1])
 		|| (enc_utf8
-		    && mbyte_blen > 1
-		    && (ScreenLinesUC[off] != u8c
-			|| ScreenLinesC1[off] != u8c_c1
-			|| ScreenLinesC2[off] != u8c_c2))
+		    && (ScreenLinesUC[off] != (u8char_T)u8c
+			|| screen_comp_differs(off, u8cc)))
 #endif
 		|| ScreenAttrs[off] != attr
 		|| exmode_active
@@ -5994,13 +6056,19 @@ screen_puts_len(text, len, row, col, att
 #ifdef FEAT_MBYTE
 	    if (enc_utf8)
 	    {
-		if (c < 0x80 && u8c_c1 == 0 && u8c_c2 == 0)
+		if (c < 0x80 && u8cc[0] == 0)
 		    ScreenLinesUC[off] = 0;
 		else
 		{
+		    int	    i;
+
 		    ScreenLinesUC[off] = u8c;
-		    ScreenLinesC1[off] = u8c_c1;
-		    ScreenLinesC2[off] = u8c_c2;
+		    for (i = 0; i < Screen_mco; ++i)
+		    {
+			ScreenLinesC[i][off] = u8cc[i];
+			if (u8cc[i] == 0)
+			    break;
+		    }
 		}
 		if (mbyte_cells == 2)
 		{
@@ -6715,7 +6783,8 @@ screen_fill(start_row, end_row, start_co
 	{
 	    if (ScreenLines[off] != c
 #ifdef FEAT_MBYTE
-		    || (enc_utf8 && ScreenLinesUC[off] != (c >= 0x80 ? c : 0))
+		    || (enc_utf8 && (int)ScreenLinesUC[off]
+						       != (c >= 0x80 ? c : 0))
 #endif
 		    || ScreenAttrs[off] != attr
 #if defined(FEAT_GUI) || defined(UNIX)
@@ -6755,8 +6824,7 @@ screen_fill(start_row, end_row, start_co
 		    if (c >= 0x80)
 		    {
 			ScreenLinesUC[off] = c;
-			ScreenLinesC1[off] = 0;
-			ScreenLinesC2[off] = 0;
+			ScreenLinesC[0][off] = 0;
 		    }
 		    else
 			ScreenLinesUC[off] = 0;
@@ -6845,9 +6913,9 @@ screenalloc(clear)
     schar_T	    *new_ScreenLines;
 #ifdef FEAT_MBYTE
     u8char_T	    *new_ScreenLinesUC = NULL;
-    u8char_T	    *new_ScreenLinesC1 = NULL;
-    u8char_T	    *new_ScreenLinesC2 = NULL;
+    u8char_T	    *new_ScreenLinesC[MAX_MCO];
     schar_T	    *new_ScreenLines2 = NULL;
+    int		    i;
 #endif
     sattr_T	    *new_ScreenAttrs;
     unsigned	    *new_LineOffset;
@@ -6870,6 +6938,7 @@ screenalloc(clear)
 #ifdef FEAT_MBYTE
 		&& enc_utf8 == (ScreenLinesUC != NULL)
 		&& (enc_dbcs == DBCS_JPNU) == (ScreenLines2 != NULL)
+		&& p_mco == Screen_mco
 #endif
 		)
 	    || Rows == 0
@@ -6907,13 +6976,13 @@ screenalloc(clear)
     new_ScreenLines = (schar_T *)lalloc((long_u)(
 			      (Rows + 1) * Columns * sizeof(schar_T)), FALSE);
 #ifdef FEAT_MBYTE
+    vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T) * MAX_MCO);
     if (enc_utf8)
     {
 	new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
 			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
-	new_ScreenLinesC1 = (u8char_T *)lalloc((long_u)(
-			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
-	new_ScreenLinesC2 = (u8char_T *)lalloc((long_u)(
+	for (i = 0; i < p_mco; ++i)
+	    new_ScreenLinesC[i] = (u8char_T *)lalloc((long_u)(
 			     (Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
     }
     if (enc_dbcs == DBCS_JPNU)
@@ -6940,10 +7009,14 @@ screenalloc(clear)
 	}
     }
 
+#ifdef FEAT_MBYTE
+    for (i = 0; i < p_mco; ++i)
+	if (new_ScreenLinesC[i] == NULL)
+	    break;
+#endif
     if (new_ScreenLines == NULL
 #ifdef FEAT_MBYTE
-	    || (enc_utf8 && (new_ScreenLinesUC == NULL
-		   || new_ScreenLinesC1 == NULL || new_ScreenLinesC2 == NULL))
+	    || (enc_utf8 && (new_ScreenLinesUC == NULL || i != p_mco))
 	    || (enc_dbcs == DBCS_JPNU && new_ScreenLines2 == NULL)
 #endif
 	    || new_ScreenAttrs == NULL
@@ -6968,10 +7041,11 @@ screenalloc(clear)
 #ifdef FEAT_MBYTE
 	vim_free(new_ScreenLinesUC);
 	new_ScreenLinesUC = NULL;
-	vim_free(new_ScreenLinesC1);
-	new_ScreenLinesC1 = NULL;
-	vim_free(new_ScreenLinesC2);
-	new_ScreenLinesC2 = NULL;
+	for (i = 0; i < p_mco; ++i)
+	{
+	    vim_free(new_ScreenLinesC[i]);
+	    new_ScreenLinesC[i] = NULL;
+	}
 	vim_free(new_ScreenLines2);
 	new_ScreenLines2 = NULL;
 #endif
@@ -7010,9 +7084,9 @@ screenalloc(clear)
 		{
 		    (void)vim_memset(new_ScreenLinesUC + new_row * Columns,
 				       0, (size_t)Columns * sizeof(u8char_T));
-		    (void)vim_memset(new_ScreenLinesC1 + new_row * Columns,
-				       0, (size_t)Columns * sizeof(u8char_T));
-		    (void)vim_memset(new_ScreenLinesC2 + new_row * Columns,
+		    for (i = 0; i < p_mco; ++i)
+			(void)vim_memset(new_ScreenLinesC[i]
+							  + new_row * Columns,
 				       0, (size_t)Columns * sizeof(u8char_T));
 		}
 		if (enc_dbcs == DBCS_JPNU)
@@ -7030,23 +7104,24 @@ screenalloc(clear)
 			len = Columns;
 #ifdef FEAT_MBYTE
 		    /* When switching to utf-8 don't copy characters, they
-		     * may be invalid now. */
-		    if (!(enc_utf8 && ScreenLinesUC == NULL))
+		     * may be invalid now.  Also when p_mco changes. */
+		    if (!(enc_utf8 && ScreenLinesUC == NULL)
+						       && p_mco == Screen_mco)
 #endif
 			mch_memmove(new_ScreenLines + new_LineOffset[new_row],
 				ScreenLines + LineOffset[old_row],
 				(size_t)len * sizeof(schar_T));
 #ifdef FEAT_MBYTE
-		    if (enc_utf8 && ScreenLinesUC != NULL)
+		    if (enc_utf8 && ScreenLinesUC != NULL
+						       && p_mco == Screen_mco)
 		    {
 			mch_memmove(new_ScreenLinesUC + new_LineOffset[new_row],
 				ScreenLinesUC + LineOffset[old_row],
 				(size_t)len * sizeof(u8char_T));
-			mch_memmove(new_ScreenLinesC1 + new_LineOffset[new_row],
-				ScreenLinesC1 + LineOffset[old_row],
-				(size_t)len * sizeof(u8char_T));
-			mch_memmove(new_ScreenLinesC2 + new_LineOffset[new_row],
-				ScreenLinesC2 + LineOffset[old_row],
+			for (i = 0; i < p_mco; ++i)
+			    mch_memmove(new_ScreenLinesC[i]
+						    + new_LineOffset[new_row],
+				ScreenLinesC[i] + LineOffset[old_row],
 				(size_t)len * sizeof(u8char_T));
 		    }
 		    if (enc_dbcs == DBCS_JPNU && ScreenLines2 != NULL)
@@ -7069,8 +7144,9 @@ screenalloc(clear)
     ScreenLines = new_ScreenLines;
 #ifdef FEAT_MBYTE
     ScreenLinesUC = new_ScreenLinesUC;
-    ScreenLinesC1 = new_ScreenLinesC1;
-    ScreenLinesC2 = new_ScreenLinesC2;
+    for (i = 0; i < p_mco; ++i)
+	ScreenLinesC[i] = new_ScreenLinesC[i];
+    Screen_mco = p_mco;
     ScreenLines2 = new_ScreenLines2;
 #endif
     ScreenAttrs = new_ScreenAttrs;
@@ -7118,13 +7194,15 @@ screenalloc(clear)
     void
 free_screenlines()
 {
-    vim_free(ScreenLines);
 #ifdef FEAT_MBYTE
+    int		i;
+
     vim_free(ScreenLinesUC);
-    vim_free(ScreenLinesC1);
-    vim_free(ScreenLinesC2);
+    for (i = 0; i < Screen_mco; ++i)
+	vim_free(ScreenLinesC[i]);
     vim_free(ScreenLines2);
 #endif
+    vim_free(ScreenLines);
     vim_free(ScreenAttrs);
     vim_free(LineOffset);
     vim_free(LineWraps);
@@ -7250,12 +7328,13 @@ linecopy(to, from, wp)
 # ifdef FEAT_MBYTE
     if (enc_utf8)
     {
+	int	i;
+
 	mch_memmove(ScreenLinesUC + off_to, ScreenLinesUC + off_from,
 		wp->w_width * sizeof(u8char_T));
-	mch_memmove(ScreenLinesC1 + off_to, ScreenLinesC1 + off_from,
-		wp->w_width * sizeof(u8char_T));
-	mch_memmove(ScreenLinesC2 + off_to, ScreenLinesC2 + off_from,
-		wp->w_width * sizeof(u8char_T));
+	for (i = 0; i < p_mco; ++i)
+	    mch_memmove(ScreenLinesC[i] + off_to, ScreenLinesC[i] + off_from,
+		    wp->w_width * sizeof(u8char_T));
     }
     if (enc_dbcs == DBCS_JPNU)
 	mch_memmove(ScreenLines2 + off_to, ScreenLines2 + off_from,
--- a/src/spell.c
+++ b/src/spell.c
@@ -117,6 +117,10 @@
  * <sectionend>	  1 byte    SN_END
  *
  *
+ * sectionID == SN_INFO: <infotext>
+ * <infotext>	 N bytes    free format text with spell file info (version,
+ *			    website, etc)
+ *
  * sectionID == SN_REGION: <regionname> ...
  * <regionname>	 2 bytes    Up to 8 region names: ca, au, etc.  Lower case.
  *			    First <regionname> is region 1.
@@ -185,7 +189,7 @@
  * <compmax>     1 byte	    Maximum nr of words in compound word.
  * <compminlen>  1 byte	    Minimal word length for compounding.
  * <compsylmax>  1 byte	    Maximum nr of syllables in compound word.
- * <compflags>   N bytes    Flags from COMPOUNDFLAGS items, separated by
+ * <compflags>   N bytes    Flags from COMPOUNDRULE items, separated by
  *			    slashes.
  *
  * sectionID == SN_NOBREAK: (empty, its presence is enough)
@@ -290,7 +294,7 @@
  */
 
 #if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
-# include <io.h>	/* for lseek(), must be before vim.h */
+# include "vimio.h"	/* for lseek(), must be before vim.h */
 #endif
 
 #include "vim.h"
@@ -431,6 +435,8 @@ struct slang_S
     char_u	*sl_pbyts;	/* prefix tree word bytes */
     idx_T	*sl_pidxs;	/* prefix tree word indexes */
 
+    char_u	*sl_info;	/* infotext string or NULL */
+
     char_u	sl_regions[17];	/* table with up to 8 region names plus NUL */
 
     char_u	*sl_midword;	/* MIDWORD string or NULL */
@@ -440,7 +446,7 @@ struct slang_S
     int		sl_compmax;	/* COMPOUNDMAX (default: MAXWLEN) */
     int		sl_compminlen;	/* COMPOUNDMIN (default: 0) */
     int		sl_compsylmax;	/* COMPOUNDSYLMAX (default: MAXWLEN) */
-    regprog_T	*sl_compprog;	/* COMPOUNDFLAGS turned into a regexp progrm
+    regprog_T	*sl_compprog;	/* COMPOUNDRULE turned into a regexp progrm
 				 * (NULL when no compounding) */
     char_u	*sl_compstartflags; /* flags for first compound word */
     char_u	*sl_compallflags; /* all flags for compound words */
@@ -534,6 +540,7 @@ typedef struct langp_S
 #define SN_REPSAL	12	/* REPSAL items section */
 #define SN_WORDS	13	/* common words */
 #define SN_NOSPLITSUGS	14	/* don't split word for suggestions */
+#define SN_INFO		15	/* info section */
 #define SN_END		255	/* end of sections */
 
 #define SNF_REQUIRED	1	/* <sectionflags>: required section */
@@ -1520,7 +1527,7 @@ find_word(mip, mode)
 		}
 
 		/* If the word ends the sequence of compound flags of the
-		 * words must match with one of the COMPOUNDFLAGS items and
+		 * words must match with one of the COMPOUNDRULE items and
 		 * the number of syllables must not be too large. */
 		mip->mi_compflags[mip->mi_complen] = ((unsigned)flags >> 24);
 		mip->mi_compflags[mip->mi_complen + 1] = NUL;
@@ -2284,6 +2291,9 @@ spell_load_lang(lang)
 	    break;
 #endif
 	}
+#ifdef FEAT_AUTOCMD
+	break;
+#endif
     }
 
     if (r == FAIL)
@@ -2434,6 +2444,9 @@ slang_clear(lp)
     vim_free(lp->sl_prefprog);
     lp->sl_prefprog = NULL;
 
+    vim_free(lp->sl_info);
+    lp->sl_info = NULL;
+
     vim_free(lp->sl_midword);
     lp->sl_midword = NULL;
 
@@ -2620,6 +2633,12 @@ spell_load_file(fname, lang, old_lp, sil
 	res = 0;
 	switch (n)
 	{
+	    case SN_INFO:
+		lp->sl_info = read_string(fd, len);	/* <infotext> */
+		if (lp->sl_info == NULL)
+		    goto endFAIL;
+		break;
+
 	    case SN_REGION:
 		res = read_region_section(fd, lp, len);
 		break;
@@ -3386,7 +3405,7 @@ read_compound(fd, slang, len)
 	c = MAXWLEN;
     slang->sl_compsylmax = c;
 
-    /* Turn the COMPOUNDFLAGS items into a regexp pattern:
+    /* Turn the COMPOUNDRULE items into a regexp pattern:
      * "a[bc]/a*b+" -> "^\(a[bc]\|a*b\+\)$".
      * Inserting backslashes may double the length, "^\(\)$<Nul>" is 7 bytes.
      * Conversion to utf-8 may double the size. */
@@ -4711,6 +4730,7 @@ typedef struct spellinfo_S
     int		si_memtot;	/* runtime memory used */
     int		si_verbose;	/* verbose messages */
     int		si_msg_count;	/* number of words added since last message */
+    char_u	*si_info;	/* info text chars or NULL  */
     int		si_region_count; /* number of regions supported (1 when there
 				    are no regions) */
     char_u	si_region_name[16]; /* region names; used only if
@@ -4743,6 +4763,7 @@ typedef struct spellinfo_S
 } spellinfo_T;
 
 static afffile_T *spell_read_aff __ARGS((spellinfo_T *spin, char_u *fname));
+static int spell_info_item __ARGS((char_u *s));
 static unsigned affitem2flag __ARGS((int flagtype, char_u *item, char_u	*fname, int lnum));
 static unsigned get_affitem __ARGS((int flagtype, char_u **pp));
 static void process_compflags __ARGS((spellinfo_T *spin, afffile_T *aff, char_u *compflags));
@@ -4936,7 +4957,7 @@ spell_read_aff(spin, fname)
     int		compminlen = 0;		/* COMPOUNDMIN value */
     int		compsylmax = 0;		/* COMPOUNDSYLMAX value */
     int		compmax = 0;		/* COMPOUNDMAX value */
-    char_u	*compflags = NULL;	/* COMPOUNDFLAG and COMPOUNDFLAGS
+    char_u	*compflags = NULL;	/* COMPOUNDFLAG and COMPOUNDRULE
 					   concatenated */
     char_u	*midword = NULL;	/* MIDWORD value */
     char_u	*syllable = NULL;	/* SYLLABLE value */
@@ -5023,8 +5044,13 @@ spell_read_aff(spin, fname)
 	    if (itemcnt == MAXITEMCNT)	    /* too many items */
 		break;
 	    items[itemcnt++] = p;
-	    while (*p > ' ')	    /* skip until white space or CR/NL */
-		++p;
+	    /* A few items have arbitrary text argument, don't split them. */
+	    if (itemcnt == 2 && spell_info_item(items[0]))
+		while (*p >= ' ' || *p == TAB)    /* skip until CR/NL */
+		    ++p;
+	    else
+		while (*p > ' ')    /* skip until white space or CR/NL */
+		    ++p;
 	    if (*p == NUL)
 		break;
 	    *p++ = NUL;
@@ -5073,6 +5099,25 @@ spell_read_aff(spin, fname)
 		    smsg((char_u *)_("FLAG after using flags in %s line %d: %s"),
 			    fname, lnum, items[1]);
 	    }
+	    else if (spell_info_item(items[0]))
+	    {
+		    p = (char_u *)getroom(spin,
+			    (spin->si_info == NULL ? 0 : STRLEN(spin->si_info))
+			    + STRLEN(items[0])
+			    + STRLEN(items[1]) + 3, FALSE);
+		    if (p != NULL)
+		    {
+			if (spin->si_info != NULL)
+			{
+			    STRCPY(p, spin->si_info);
+			    STRCAT(p, "\n");
+			}
+			STRCAT(p, items[0]);
+			STRCAT(p, " ");
+			STRCAT(p, items[1]);
+			spin->si_info = p;
+		    }
+	    }
 	    else if (STRCMP(items[0], "MIDWORD") == 0 && itemcnt == 2
 							   && midword == NULL)
 	    {
@@ -5125,7 +5170,7 @@ spell_read_aff(spin, fname)
 	    else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
 							 && compflags == NULL)
 	    {
-		/* Turn flag "c" into COMPOUNDFLAGS compatible string "c+",
+		/* Turn flag "c" into COMPOUNDRULE compatible string "c+",
 		 * "Na" into "Na+", "1234" into "1234+". */
 		p = getroom(spin, STRLEN(items[1]) + 2, FALSE);
 		if (p != NULL)
@@ -5135,7 +5180,7 @@ spell_read_aff(spin, fname)
 		    compflags = p;
 		}
 	    }
-	    else if (STRCMP(items[0], "COMPOUNDFLAGS") == 0 && itemcnt == 2)
+	    else if (STRCMP(items[0], "COMPOUNDRULE") == 0 && itemcnt == 2)
 	    {
 		/* Concatenate this string to previously defined ones, using a
 		 * slash to separate them. */
@@ -5726,6 +5771,21 @@ spell_read_aff(spin, fname)
 }
 
 /*
+ * Return TRUE if "s" is the name of an info item in the affix file.
+ */
+    static int
+spell_info_item(s)
+    char_u	*s;
+{
+    return STRCMP(s, "NAME") == 0
+	|| STRCMP(s, "HOME") == 0
+	|| STRCMP(s, "VERSION") == 0
+	|| STRCMP(s, "AUTHOR") == 0
+	|| STRCMP(s, "EMAIL") == 0
+	|| STRCMP(s, "COPYRIGHT") == 0;
+}
+
+/*
  * Turn an affix flag name into a number, according to the FLAG type.
  * returns zero for failure.
  */
@@ -7366,6 +7426,14 @@ put_bytes(fd, nr, len)
 	putc((int)(nr >> (i * 8)), fd);
 }
 
+#ifdef _MSC_VER
+# if (_MSC_VER <= 1200)
+/* This line is required for VC6 without the service pack.  Also see the
+ * matching #pragma below. */
+/* # pragma optimize("", off) */
+# endif
+#endif
+
 /*
  * Write spin->si_sugtime to file "fd".
  */
@@ -7390,6 +7458,12 @@ put_sugtime(spin, fd)
 	}
 }
 
+#ifdef _MSC_VER
+# if (_MSC_VER <= 1200)
+/* # pragma optimize("", on) */
+# endif
+#endif
+
 static int
 #ifdef __BORLANDC__
 _RTLENTRYF
@@ -7455,6 +7529,17 @@ write_vim_spell(spin, fname)
      * <SECTIONS>: <section> ... <sectionend>
      */
 
+    /* SN_INFO: <infotext> */
+    if (spin->si_info != NULL)
+    {
+	putc(SN_INFO, fd);				/* <sectionID> */
+	putc(0, fd);					/* <sectionflags> */
+
+	i = STRLEN(spin->si_info);
+	put_bytes(fd, (long_u)i, 4);			/* <sectionlen> */
+	fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
+    }
+
     /* SN_REGION: <regionname> ...
      * Write the region names only if there is more than one. */
     if (spin->si_region_count > 1)
@@ -14823,6 +14908,38 @@ pop:
 }
 #endif
 
+/*
+ * ":spellinfo"
+ */
+/*ARGSUSED*/
+    void
+ex_spellinfo(eap)
+    exarg_T *eap;
+{
+    int		lpi;
+    langp_T	*lp;
+    char_u	*p;
+
+    if (no_spell_checking(curwin))
+	return;
+
+    msg_start();
+    for (lpi = 0; lpi < curbuf->b_langp.ga_len && !got_int; ++lpi)
+    {
+	lp = LANGP_ENTRY(curbuf->b_langp, lpi);
+	msg_puts((char_u *)"file: ");
+	msg_puts(lp->lp_slang->sl_fname);
+	msg_putchar('\n');
+	p = lp->lp_slang->sl_info;
+	if (p != NULL)
+	{
+	    msg_puts(p);
+	    msg_putchar('\n');
+	}
+    }
+    msg_end();
+}
+
 #define DUMPFLAG_KEEPCASE   1	/* round 2: keep-case tree */
 #define DUMPFLAG_COUNT	    2	/* include word count */
 #define DUMPFLAG_ICASE	    4	/* ignore case when finding matches */
@@ -14902,9 +15019,9 @@ spell_dump_compl(buf, pat, ic, dir, dump
 		dumpflags |= DUMPFLAG_ONECAP;
 	    else if (n == WF_ALLCAP
 #ifdef FEAT_MBYTE
-		    && STRLEN(pat) > mb_ptr2len(pat)
+		    && (int)STRLEN(pat) > mb_ptr2len(pat)
 #else
-		    && STRLEN(pat) > 1
+		    && (int)STRLEN(pat) > 1
 #endif
 		    )
 		dumpflags |= DUMPFLAG_ALLCAP;
--- a/src/tag.c
+++ b/src/tag.c
@@ -12,7 +12,7 @@
  */
 
 #if defined MSDOS || defined WIN32 || defined(_WIN64)
-# include <io.h>	/* for lseek(), must be before vim.h */
+# include "vimio.h"	/* for lseek(), must be before vim.h */
 #endif
 
 #include "vim.h"
--- a/src/testdir/test58.in
+++ b/src/testdir/test58.in
@@ -390,7 +390,7 @@ 3affstart
 SET ISO8859-1
 
 COMPOUNDMIN 3
-COMPOUNDFLAGS m*
+COMPOUNDRULE m*
 NEEDCOMPOUND x
 3affend
 
@@ -416,9 +416,9 @@ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 
-COMPOUNDFLAGS m+
-COMPOUNDFLAGS sm*e
-COMPOUNDFLAGS sm+
+COMPOUNDRULE m+
+COMPOUNDRULE sm*e
+COMPOUNDRULE sm+
 COMPOUNDMIN 3
 COMPOUNDMAX 3
 
@@ -483,7 +483,7 @@ FLAG long
 
 NEEDAFFIX !!
 
-COMPOUNDFLAGS ssmm*ee
+COMPOUNDRULE ssmm*ee
 
 NEEDCOMPOUND xx
 
@@ -522,7 +522,7 @@ FLAG caplong
 
 NEEDAFFIX A!
 
-COMPOUNDFLAGS sMm*Ee
+COMPOUNDRULE sMm*Ee
 
 NEEDCOMPOUND Xx
 
@@ -561,7 +561,7 @@ FLAG num
 
 NEEDAFFIX 9999
 
-COMPOUNDFLAGS 2,77*123
+COMPOUNDRULE 2,77*123
 
 NEEDCOMPOUND 1
 
--- a/src/testdir/test59.in
+++ b/src/testdir/test59.in
@@ -394,7 +394,7 @@ 3affstart
 SET ISO8859-1
 
 COMPOUNDMIN 3
-COMPOUNDFLAGS m*
+COMPOUNDRULE m*
 NEEDCOMPOUND x
 3affend
 
@@ -420,9 +420,9 @@ FOL  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 LOW  àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
 UPP  ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
 
-COMPOUNDFLAGS m+
-COMPOUNDFLAGS sm*e
-COMPOUNDFLAGS sm+
+COMPOUNDRULE m+
+COMPOUNDRULE sm*e
+COMPOUNDRULE sm+
 COMPOUNDMIN 3
 COMPOUNDMAX 3
 
@@ -490,7 +490,7 @@ FLAG long
 
 NEEDAFFIX !!
 
-COMPOUNDFLAGS ssmm*ee
+COMPOUNDRULE ssmm*ee
 
 NEEDCOMPOUND xx
 
@@ -529,7 +529,7 @@ FLAG caplong
 
 NEEDAFFIX A!
 
-COMPOUNDFLAGS sMm*Ee
+COMPOUNDRULE sMm*Ee
 
 NEEDCOMPOUND Xx
 
@@ -572,7 +572,7 @@ FLAG num
 
 NEEDAFFIX 9999
 
-COMPOUNDFLAGS 2,77*123
+COMPOUNDRULE 2,77*123
 
 NEEDCOMPOUND 1
 
--- a/src/ui.c
+++ b/src/ui.c
@@ -1173,7 +1173,7 @@ clip_copy_modeless_selection(both)
     if (enc_dbcs != 0)
 	len *= 2;	/* max. 2 bytes per display cell */
     else if (enc_utf8)
-	len *= 9;	/* max. 3 bytes per display cell + 2 composing chars */
+	len *= MB_MAXBYTES;
 #endif
     buffer = lalloc((long_u)len, TRUE);
     if (buffer == NULL)	    /* out of memory */
@@ -1234,6 +1234,7 @@ clip_copy_modeless_selection(both)
 	    else if (enc_utf8)
 	    {
 		int	off;
+		int	i;
 
 		off = LineOffset[row];
 		for (i = start_col; i < end_col; ++i)
@@ -1245,14 +1246,13 @@ clip_copy_modeless_selection(both)
 		    else
 		    {
 			bufp += utf_char2bytes(ScreenLinesUC[off + i], bufp);
-			if (ScreenLinesC1[off + i] != 0)
+			for (i = 0; i < Screen_mco; ++i)
 			{
-			    /* Add one or two composing characters. */
-			    bufp += utf_char2bytes(ScreenLinesC1[off + i],
+			    /* Add a composing character. */
+			    if (ScreenLinesC[i][off + i] == 0)
+				break;
+			    bufp += utf_char2bytes(ScreenLinesC[i][off + i],
 									bufp);
-			    if (ScreenLinesC2[off + i] != 0)
-				bufp += utf_char2bytes(ScreenLinesC2[off + i],
-					bufp);
 			}
 		    }
 		    /* Skip right halve of double-wide character. */
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 4)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 4, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 6)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 6, compiled "
--- a/src/vim.h
+++ b/src/vim.h
@@ -93,6 +93,12 @@
 # endif
 #endif
 
+/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+#if _MSC_VER >= 1400
+# define _CRT_SECURE_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+
 #if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16)
 # define FEAT_GUI_MSWIN
 #endif
@@ -358,12 +364,20 @@ typedef unsigned char sattr_T;
 
 /*
  * The u8char_T can hold one decoded UTF-8 character.
- * Vim always use an int (32 bits) for characters most places, so that we can
- * handle 32 bit characters in the file.  u8char_T is only used for
- * displaying.  That should be enough, because there is no font for > 16 bits.
+ * We normally use 32 bits now, since some Asian characters don't fit in 16
+ * bits.  u8char_T is only used for displaying, it could be 16 bits to save
+ * memory.
  */
 #ifdef FEAT_MBYTE
-typedef unsigned short u8char_T;
+# ifdef UNICODE16
+typedef unsigned short u8char_T;    /* short should be 16 bits */
+# else
+#  if SIZEOF_INT >= 4
+typedef unsigned int u8char_T;	    /* int is 32 bits */
+#  else
+typedef unsigned long u8char_T;	    /* long should be 32 bits or more */
+#  endif
+# endif
 #endif
 
 #ifndef UNIX		    /* For Unix this is included in os_unix.h */
@@ -652,6 +666,7 @@ extern char *(*dyn_libintl_textdomain)(c
 #define EXPAND_COMPILER		29
 #define EXPAND_USER_DEFINED	30
 #define EXPAND_USER_LIST	31
+#define EXPAND_SHELLCMD		32
 
 /* Values for exmode_active (0 is no exmode) */
 #define EXMODE_NORMAL		1
@@ -676,12 +691,13 @@ extern char *(*dyn_libintl_textdomain)(c
 #define WILD_ESCAPE		128
 
 /* Flags for expand_wildcards() */
-#define EW_DIR		1	/* include directory names */
-#define EW_FILE		2	/* include file names */
-#define EW_NOTFOUND	4	/* include not found names */
-#define EW_ADDSLASH	8	/* append slash to directory name */
-#define EW_KEEPALL	16	/* keep all matches */
-#define EW_SILENT	32	/* don't print "1 returned" from shell */
+#define EW_DIR		0x01	/* include directory names */
+#define EW_FILE		0x02	/* include file names */
+#define EW_NOTFOUND	0x04	/* include not found names */
+#define EW_ADDSLASH	0x08	/* append slash to directory name */
+#define EW_KEEPALL	0x10	/* keep all matches */
+#define EW_SILENT	0x20	/* don't print "1 returned" from shell */
+#define EW_EXEC		0x40	/* executable files */
 /* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
  * is used when executing commands and EW_SILENT for interactive expanding. */
 
@@ -1480,6 +1496,15 @@ int vim_memcmp __ARGS((void *, void *, s
 # endif
 #endif
 
+#ifdef FEAT_MBYTE
+# define MAX_MCO	6	/* maximum value for 'maxcombine' */
+
+/* Maximum number of bytes in a multi-byte character.  It can be one 32-bit
+ * character of up to 6 bytes, or one 16-bit character of up to three bytes
+ * plus six following composing characters of three bytes each. */
+# define MB_MAXBYTES	21
+#endif
+
 /* Include option.h before structs.h, because the number of window-local and
  * buffer-local options is used there. */
 #include "option.h"	    /* options and default values */
@@ -1783,11 +1808,6 @@ typedef int proftime_T;	    /* dummy for
 #endif
 
 #ifdef FEAT_MBYTE
-/* Maximum number of bytes in a multi-byte character.  It can be one 32-bit
- * character of up to 6 bytes, or one 16-bit character of up to three bytes
- * plus two following composing characters of three bytes each. */
-# define MB_MAXBYTES	9
-
 /*
  * Return byte length of character that starts with byte "b".
  * Returns 1 for a single-byte character.
--- a/src/vim.rc
+++ b/src/vim.rc
@@ -12,11 +12,11 @@
 #include <winver.h>
 #include "version.h"
 #include "gui_w32_rc.h"
-#if defined(__BORLANDC__) || defined(__CYGWIN32__) || defined(__MINGW32__)
+// #if defined(__BORLANDC__) || defined(__CYGWIN32__) || defined(__MINGW32__)
 # include <winresrc.h>
-#else
-# include <winres.h>
-#endif
+// #else
+// # include <winres.h>
+// #endif
 
 //
 // Icons
new file mode 100644
--- /dev/null
+++ b/src/vimio.h
@@ -0,0 +1,16 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+
+/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+#if _MSC_VER >= 1400
+# define _CRT_SECURE_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+
+#include <io.h>
--- a/src/xxd/Make_mvc.mak
+++ b/src/xxd/Make_mvc.mak
@@ -4,7 +4,10 @@
 xxd: xxd.exe
 
 xxd.exe: xxd.c
-     cl /nologo -DWIN32 xxd.c /link setargv.obj
+     cl /nologo -DWIN32 xxd.c
+
+# This was for an older compiler
+#    cl /nologo -DWIN32 xxd.c /link setargv.obj
 
 clean:
      - if exist xxd.obj del xxd.obj
--- a/src/xxd/xxd.c
+++ b/src/xxd/xxd.c
@@ -58,6 +58,13 @@
  * make money and share with me,
  * lose money and don't ask me.
  */
+
+/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
+#if _MSC_VER >= 1400
+# define _CRT_SECURE_NO_DEPRECATE
+# define _CRT_NONSTDC_NO_DEPRECATE
+#endif
+
 #include <stdio.h>
 #ifdef VAXC
 # include <file.h>