diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index a629537..0b4bc5f 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -41,7 +41,7 @@
 			let start = col('.') - 1
 			let b:jscompl = 1
 			let b:jsrange = [scriptstart, scriptend]
-			while start >= 0 && line[start - 1] =~ '\w'
+			while start >= 0 && line[start - 1] =~ '\k'
 				let start -= 1
 			endwhile
 			" We are inside of <script> tag. But we should also get contents
@@ -102,7 +102,7 @@
 		" completion will be badly reported
 		if b:compl_context =~? 'on[a-z]*\s*=\s*\(''[^'']*\|"[^"]*\)$'
 			let start = col('.') - 1
-			while start >= 0 && line[start - 1] =~ '\w'
+			while start >= 0 && line[start - 1] =~ '\k'
 				let start -= 1
 			endwhile
 		endif
@@ -178,13 +178,6 @@
 		endif
 	endif
 
-	" Set attribute groups
-    let coreattrs = ["id", "class", "style", "title"] 
-    let i18n = ["lang", "xml:lang", "dir=\"ltr\" ", "dir=\"rtl\" "]
-    let events = ["onclick", "ondblclick", "onmousedown", "onmouseup", "onmousemove",
-    			\ "onmouseover", "onmouseout", "onkeypress", "onkeydown", "onkeyup"]
-    let focus = ["accesskey", "tabindex", "onfocus", "onblur"]
-    let coregroup = coreattrs + i18n + events
 	" If context contains > it means we are already outside of tag and we
 	" should abandon action
 	" If context contains white space it is attribute. 
@@ -403,12 +396,11 @@
 
 				" 3. Proper call for javascriptcomplete#CompleteJS
 				call cursor(l,c)
-				let js_context = matchstr(a:base, '\w\+$')
+				let js_context = matchstr(a:base, '\k\+$')
 				let js_shortcontext = substitute(a:base, js_context.'$', '', '')
 				let b:compl_context = context
 				let b:jsrange = [l, l]
 				unlet! l c
-				"return map(javascriptcomplete#CompleteJS(0, js_context), 'js_shortcontext.v:val')
 				return javascriptcomplete#CompleteJS(0, js_context)
 
 			endif
@@ -501,95 +493,44 @@
 		" Attribute completion {{{
 		" Shorten context to not include last word
 		let sbase = matchstr(context, '.*\ze\s.*')
-		if tag =~ '^\(abbr\|acronym\|address\|b\|bdo\|big\|caption\|cite\|code\|dd\|dfn\|div\|dl\|dt\|em\|fieldset\|h\d\|hr\|i\|kbd\|li\|noscript\|ol\|p\|samp\|small\|span\|strong\|sub\|sup\|tt\|ul\|var\)$'
-			let attrs = coregroup
-		elseif tag == 'a'
-			let attrs = coregroup + focus + ["charset", "type", "name", "href", "hreflang", "rel", "rev", "shape", "coords"]
-		elseif tag == 'area'
-			let attrs = coregroup + focus + ["shape", "coords", "href", "nohref", "alt"]
-		elseif tag == 'base'
-			let attrs = ["href", "id"]
-		elseif tag == 'blockquote'
-			let attrs = coregroup + ["cite"]
-		elseif tag == 'body'
-			let attrs = coregroup + ["onload", "onunload"]
-		elseif tag == 'br'
-			let attrs = coreattrs
-		elseif tag == 'button'
-			let attrs = coregroup + focus + ["name", "value", "type"]
-		elseif tag == '^\(col\|colgroup\)$'
-			let attrs = coregroup + ["span", "width", "align", "char", "charoff", "valign"]
-		elseif tag =~ '^\(del\|ins\)$'
-			let attrs = coregroup + ["cite", "datetime"]
-		elseif tag == 'form'
-			let attrs = coregroup + ["action", "method=\"get\" ", "method=\"post\" ", "enctype", "onsubmit", "onreset", "accept", "accept-charset"]
-		elseif tag == 'head'
-			let attrs = i18n + ["id", "profile"]
-		elseif tag == 'html'
-			let attrs = i18n + ["id", "xmlns"]
-		elseif tag == 'img'
-			let attrs = coregroup + ["src", "alt", "longdesc", "height", "width", "usemap", "ismap"]
-		elseif tag == 'input'
-			let attrs = coregroup + ["type", "name", "value", "checked", "disabled", "readonly", "size", "maxlength", "src", "alt", "usemap", "onselect", "onchange", "accept"]
-		elseif tag == 'label'
-			let attrs = coregroup + ["for", "accesskey", "onfocus", "onblur"]
-		elseif tag == 'legend'
-			let attrs = coregroup + ["accesskey"]
-		elseif tag == 'link'
-			let attrs = coregroup + ["charset", "href", "hreflang", "type", "rel", "rev", "media"]
-		elseif tag == 'map'
-			let attrs = i18n + events + ["id", "class", "style", "title", "name"]
-		elseif tag == 'meta'
-			let attrs = i18n + ["id", "http-equiv", "content", "scheme", "name"]
-		elseif tag == 'title'
-			let attrs = i18n + ["id"]
-		elseif tag == 'object'
-			let attrs = coregroup + ["declare", "classid", "codebase", "data", "type", "codetype", "archive", "standby", "height", "width", "usemap", "name", "tabindex"]
-		elseif tag == 'optgroup'
-			let attrs = coregroup + ["disbled", "label"]
-		elseif tag == 'option'
-			let attrs = coregroup + ["disbled", "selected", "value", "label"]
-		elseif tag == 'param'
-			let attrs = ["id", "name", "value", "valuetype", "type"]
-		elseif tag == 'pre'
-			let attrs = coregroup + ["xml:space"]
-		elseif tag == 'q'
-			let attrs = coregroup + ["cite"]
-		elseif tag == 'script'
-			let attrs = ["id", "charset", "type=\"text/javascript\"", "type", "src", "defer", "xml:space"]
-		elseif tag == 'select'
-			let attrs = coregroup + ["name", "size", "multiple", "disabled", "tabindex", "onfocus", "onblur", "onchange"]
-		elseif tag == 'style'
-			let attrs = coreattrs + ["id", "type=\"text/css\"", "type", "media", "title", "xml:space"]
-		elseif tag == 'table'
-			let attrs = coregroup + ["summary", "width", "border", "frame", "rules", "cellspacing", "cellpadding"]
-		elseif tag =~ '^\(thead\|tfoot\|tbody\|tr\)$'
-			let attrs = coregroup + ["align", "char", "charoff", "valign"]
-		elseif tag == 'textarea'
-			let attrs = coregroup + ["name", "rows", "cols", "disabled", "readonly", "onselect", "onchange"]
-		elseif tag =~ '^\(th\|td\)$'
-			let attrs = coregroup + ["abbr", "headers", "scope", "rowspan", "colspan", "align", "char", "charoff", "valign"]
-		else
-			return []
+
+		" Load data {{{
+		if !exists("g:xmldata_xhtml10s")
+			runtime! autoload/xml/xhtml10s.vim
 		endif
+		" }}}
+		"
+		let attrs = keys(g:xmldata_xhtml10s[tag][1])
 
 		for m in sort(attrs)
 			if m =~ '^'.attr
-				if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
-					call add(res, m)
-				else
-					call add(res, m.'="')
-				endif
+				call add(res, m)
 			elseif m =~ attr
-				if m =~ '^\(ismap\|defer\|declare\|nohref\|checked\|disabled\|selected\|readonly\)$' || m =~ '='
-					call add(res2, m)
-				else
-					call add(res2, m.'="')
-				endif
+				call add(res2, m)
 			endif
 		endfor
-
-		return res + res2
+		let menu = res + res2
+		if has_key(g:xmldata_xhtml10s, 'vimxmlattrinfo')
+			let final_menu = []
+			for i in range(len(menu))
+				let item = menu[i]
+				if has_key(g:xmldata_xhtml10s['vimxmlattrinfo'], item)
+					let m_menu = g:xmldata_xhtml10s['vimxmlattrinfo'][item][0]
+					let m_info = g:xmldata_xhtml10s['vimxmlattrinfo'][item][1]
+					if m_menu !~ 'Bool'
+						let item .= '="'
+					endif
+				else
+					let m_menu = ''
+					let m_info = ''
+					let item .= '="'
+				endif
+				let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+			endfor
+		else
+			let final_menu = map(menu, 'v:val."=\""')
+		endif
+		return final_menu
 
 	endif
 	" }}}
@@ -625,8 +566,25 @@
 			call add(res2, m)
 		endif
 	endfor
+	let menu = res + res2
+	if has_key(g:xmldata_xhtml10s, 'vimxmltaginfo')
+		let final_menu = []
+		for i in range(len(menu))
+			let item = menu[i]
+			if has_key(g:xmldata_xhtml10s['vimxmltaginfo'], item)
+				let m_menu = g:xmldata_xhtml10s['vimxmltaginfo'][item][0]
+				let m_info = g:xmldata_xhtml10s['vimxmltaginfo'][item][1]
+			else
+				let m_menu = ''
+				let m_info = ''
+			endif
+			let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+		endfor
+	else
+		let final_menu = menu
+	endif
+	return final_menu
 
-	return res + res2
 
 	" }}}
   endif
diff --git a/runtime/autoload/javascriptcomplete.vim b/runtime/autoload/javascriptcomplete.vim
index 0163fd9..87e40f3 100644
--- a/runtime/autoload/javascriptcomplete.vim
+++ b/runtime/autoload/javascriptcomplete.vim
@@ -12,7 +12,7 @@
 	let compl_begin = col('.') - 2
 	" Bit risky but JS is rather limited language and local chars shouldn't
 	" fint way into names
-	while start >= 0 && line[start - 1] =~ '\w'
+	while start >= 0 && line[start - 1] =~ '\k'
 		let start -= 1
 	endwhile
 	let b:compl_context = getline('.')[0:compl_begin]
@@ -120,17 +120,17 @@
 		let stris = striprop + strimeth
 
 		" User created properties
-		let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\w"')
+		let user_props1 = filter(copy(file), 'v:val =~ "this\\.\\k"')
 		let juser_props1 = join(user_props1, ' ')
 		let user_props1 = split(juser_props1, '\zethis\.')
 		unlet! juser_props1
-		call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\w\\+\\ze")')
+		call map(user_props1, 'matchstr(v:val, "this\\.\\zs\\k\\+\\ze")')
 
-		let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\w"')
+		let user_props2 = filter(copy(file), 'v:val =~ "\\.prototype\\.\\k"')
 		let juser_props2 = join(user_props2, ' ')
 		let user_props2 = split(juser_props2, '\zeprototype\.')
 		unlet! juser_props2
-		call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\w\\+\\ze")')
+		call map(user_props2, 'matchstr(v:val, "prototype\\.\\zs\\k\\+\\ze")')
 		let user_props = user_props1 + user_props2
 
 		" HTML DOM properties
@@ -394,11 +394,11 @@
 		"    for regexp "= /re/"
 		" 4. Make correction for Microsoft.XMLHTTP ActiveXObject
 		" 5. Repeat for external files
-		let object = matchstr(shortcontext, '\zs\w\+\ze\(\[.\{-}\]\)\?\.$')
+		let object = matchstr(shortcontext, '\zs\k\+\ze\(\[.\{-}\]\)\?\.$')
 		if len(object) > 0
 			let decl_line = search(object.'.\{-}=\s*new\s*', 'bn')
 			if decl_line > 0
-				let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\w\+\ze')
+				let object_type = matchstr(getline(decl_line), object.'.\{-}=\s*new\s*\zs\k\+\ze')
 				if object_type == 'ActiveXObject' && matchstr(getline(decl_line), object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
 						let object_type = 'XMLHttpRequest'
 				endif
@@ -413,7 +413,7 @@
 			if decl_line == 0 && exists("b:js_extfiles")
 				let dext_line = filter(copy(b:js_extfiles), 'v:val =~ "'.object.'.\\{-}=\\s*new\\s*"')
 				if len(dext_line) > 0
-					let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\w\+\ze')
+					let object_type = matchstr(dext_line[-1], object.'.\{-}=\s*new\s*\zs\k\+\ze')
 					if object_type == 'ActiveXObject' && matchstr(dext_line[-1], object.'.\{-}=\s*new\s*ActiveXObject\s*(.Microsoft\.XMLHTTP.)') != ''
 							let object_type = 'XMLHttpRequest'
 					endif
@@ -532,7 +532,7 @@
 	" constructs like: var var1, var2, var3 = "something";
 	for i in range(len(variables))
 		let comma_separated = split(variables[i], ',\s*')
-		call map(comma_separated, 'matchstr(v:val, "\\w\\+")')
+		call map(comma_separated, 'matchstr(v:val, "\\k\\+")')
 		let vars += comma_separated
 	endfor
 
@@ -540,11 +540,11 @@
 	unlet! vars
 
 	" Add "no var" variables.
-	let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\w\\+\\s*="')
+	let undeclared_variables = filter(copy(file), 'v:val =~ "^\\s*\\k\\+\\s*="')
 	let u_vars = []
 	for i in range(len(undeclared_variables))
 		let  split_equal = split(undeclared_variables[i], '\s*=')
-		call map(split_equal, 'matchstr(v:val, "\\w\\+$")')
+		call map(split_equal, 'matchstr(v:val, "\\k\\+$")')
 		let u_vars += split_equal
 	endfor
 
@@ -554,10 +554,20 @@
 	" Get functions
 	let functions = filter(copy(file), 'v:val =~ "^\\s*function\\s"')
 	let arguments = copy(functions)
-	call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\w\\+")')
+	call map(functions, 'matchstr(v:val, "^\\s*function\\s\\+\\zs\\k\\+")')
 	call map(functions, 'v:val."("')
 	let functions = sort(functions)
 
+	" Create table to keep arguments for additional 'menu' info
+	let b:js_menuinfo = {}
+	for i in arguments
+		let g:ia = i
+		let f_elements = matchlist(i, 'function\s\+\(\k\+\)\s*(\(.\{-}\))')
+		if len(f_elements) == 3
+			let b:js_menuinfo[f_elements[1].'('] = f_elements[2]
+		endif
+	endfor
+
 	" Get functions arguments
 	call map(arguments, 'matchstr(v:val, "function.\\{-}(\\zs.\\{-}\\ze)")')
 	let jargs = join(arguments, ',')
@@ -590,7 +600,26 @@
 		endif
 	endfor
 
-	return res + res2
+	let menu = res + res2
+	let final_menu = []
+	for i in range(len(menu))
+		let item = menu[i]
+		if item =~ '($'
+			let kind = 'f'
+			if has_key(b:js_menuinfo, item)
+				let m_info = b:js_menuinfo[item]
+			else
+				let m_info = ''
+			endif
+		else
+			let kind = 'v'
+			let m_info = ''
+		endif
+		let final_menu += [{'word':item, 'menu':m_info, 'kind':kind}]
+	endfor
+	let g:fm = final_menu
+	return final_menu
+
 endfunction
 
 " vim:set foldmethod=marker:
diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim
index 0d104a0..22e81a4 100644
--- a/runtime/autoload/xmlcomplete.vim
+++ b/runtime/autoload/xmlcomplete.vim
@@ -230,25 +230,42 @@
 
 		for m in sort(attrs)
 			if m =~ '^'.attr
-				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
-					call add(res, m)
-				elseif m =~ '='
-					call add(res, m)
-				else
-					call add(res, m.'="')
-				endif
+				call add(res, m)
 			elseif m =~ attr
-				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
-					call add(res, m)
-				elseif m =~ '='
-					call add(res, m)
-				else
-					call add(res2, m.'="')
-				endif
+				call add(res2, m)
 			endif
 		endfor
-
-		return res + res2
+		let menu = res + res2
+		let final_menu = []
+		if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmlattrinfo')
+			for i in range(len(menu))
+				let item = menu[i]
+				if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'], item)
+					let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][0]
+					let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmlattrinfo'][item][1]
+				else
+					let m_menu = ''
+					let m_info = ''
+				endif
+				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+					let item = item
+				else
+					let item .= '="'
+				endif
+				let final_menu += [{'word':item, 'menu':m_menu, 'info':m_info}]
+			endfor
+		else
+			for i in range(len(menu))
+				let item = menu[i]
+				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][item][0] =~ '^\(BOOL\|'.item.'\)$'
+					let item = item
+				else
+					let item .= '="'
+				endif
+				let final_menu += [item]
+			endfor
+		endif
+		return final_menu
 
 	endif
 	" Close tag
@@ -308,21 +325,36 @@
 	let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
 	let context = substitute(context, '^\k*:', '', '')
 
-	if b:xml_namespace == 'DEFAULT'
-		let b:xml_namespace = ''
-	else
-		let b:xml_namespace .= ':'
-	endif
-
 	for m in tags
 		if m =~ '^'.context
-			call add(res, b:xml_namespace.m)
+			call add(res, m)
 		elseif m =~ context
-			call add(res2, b:xml_namespace.m)
+			call add(res2, m)
 		endif
 	endfor
-
-	return res + res2
+	let menu = res + res2
+	if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, 'vimxmltaginfo')
+		let final_menu = []
+		for i in range(len(menu))
+			let item = menu[i]
+			if has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'], item)
+				let m_menu = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][0]
+				let m_info = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}['vimxmltaginfo'][item][1]
+			else
+				let m_menu = ''
+				let m_info = ''
+			endif
+			if b:xml_namespace == 'DEFAULT'
+				let xml_namespace = ''
+			else
+				let xml_namespace = b:xml_namespace.':'
+			endif
+			let final_menu += [{'word':xml_namespace.item, 'menu':m_menu, 'info':m_info}]
+		endfor
+	else
+		let final_menu = menu
+	endif
+	return final_menu
 
   endif
 endfunction
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index f545faf..3688cda 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 09
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -471,6 +471,7 @@
 CursorMoved			After the cursor was moved in Normal mode.
 				Not triggered when there is typeahead or when
 				an operator is pending.
+				For an example see |match-parens|.
 				Careful: Don't do anything that the user does
 				not expect or that is slow.
 							*CursorMovedI*
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 676da4b..b5283bc 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2005 Dec 16
+*change.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1168,12 +1168,18 @@
 
 							*gq*
 gq{motion}		Format the lines that {motion} moves over.
-			If 'formatprg' is empty formatting is done internally
-			and the 'textwidth' option controls the length of each
-			formatted line (see below).
+			Formatting is done with one of three methods:
+			1. If 'formatexpr' is not empty the expression is
+			   evaluated.  This can differ for each buffer.
+			2. If 'formatprg' is not mepty an external program
+			   is used.
+			3. Otherise formatting is done internally.
+
+			In the third case the 'textwidth' option controls the
+			length of each formatted line (see below).
 			If the 'textwidth' option is 0, the formatted line
 			length is the screen width (with a maximum width of
-			79).  {not in Vi}
+			79).
 			The 'formatoptions' option controls the type of
 			formatting |fo-table|.
 			The cursor is left on the first non-blank of the last
@@ -1193,8 +1199,8 @@
 							*gw*
 gw{motion}		Format the lines that {motion} moves over.  Similar to
 			|gq| but puts the cursor back at the same position in
-			the text.  However, 'formatprg' is not used.
-			{not in Vi}
+			the text.  However, 'formatprg' and 'formatexpr' are
+			not used.  {not in Vi}
 
 gwgw							*gwgw* *gww*
 gww			Format the current line as with "gw".  {not in Vi}
@@ -1225,9 +1231,10 @@
 
 The 'joinspaces' option is used when lines are joined together.
 
-You can set the 'formatprg' option to the name of an external program for Vim
-to use for text formatting.  The 'textwidth' and other options have no effect
-on formatting by an external program.
+You can set the 'formatexpr' option to an expression or the 'formatprg' option
+to the name of an external program for Vim to use for text formatting.  The
+'textwidth' and other options have no effect on formatting by an external
+program.
 
 							*right-justify*
 There is no command in Vim to right justify text.  You can do it with
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 5364f60..0f339e1 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 10
+*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1203,6 +1203,7 @@
 	:map _x :<C-U>echo "the count is " . v:count<CR>
 <		Note: The <C-U> is required to remove the line range that you
 		get when typing ':' after a count.
+		Also used for evaluating the 'formatexpr' option.
 		"count" also works, for backwards compatibility.
 
 					*v:count1* *count1-variable*
@@ -1624,6 +1625,7 @@
 nr2char( {expr})		String	single char with ASCII value {expr}
 prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
 printf( {fmt}, {expr1}...)	String  format text
+pumvisible()			Number  whether popup menu is visible
 range( {expr} [, {max} [, {stride}]])
 				List	items from {expr} to {max}
 readfile({fname} [, {binary} [, {max}]])
@@ -1647,6 +1649,10 @@
 				Number  search for variable declaration
 searchpair( {start}, {middle}, {end} [, {flags} [, {skip}]])
 				Number	search for other end of start/end pair
+searchpairpos( {start}, {middle}, {end} [, {flags} [, {skip}]])
+				List	search for other end of start/end pair
+searchpos( {pattern} [, {flags}])
+				List	search for {pattern}
 server2client( {clientid}, {string})
 				Number	send reply string
 serverlist()			String	get a list of available servers
@@ -3471,6 +3477,15 @@
 		characters.  nr2char(0) is a real NUL and terminates the
 		string, thus results in an empty string.
 
+prevnonblank({lnum})					*prevnonblank()*
+		Return the line number of the first line at or above {lnum}
+		that is not blank.  Example: >
+			let ind = indent(prevnonblank(v:lnum - 1))
+<		When {lnum} is invalid or there is no non-blank line at or
+		above it, zero is returned.
+		Also see |nextnonblank()|.
+
+
 printf({fmt}, {expr1} ...)				*printf()*
 		Return a String with {fmt}, where "%" items are replaced by
 		the formatted form of their respective arguments.  Example: >
@@ -3598,13 +3613,10 @@
 		arguments an error is given.  Up to 18 arguments can be used.
 
 
-prevnonblank({lnum})					*prevnonblank()*
-		Return the line number of the first line at or above {lnum}
-		that is not blank.  Example: >
-			let ind = indent(prevnonblank(v:lnum - 1))
-<		When {lnum} is invalid or there is no non-blank line at or
-		above it, zero is returned.
-		Also see |nextnonblank()|.
+pumvisible()						*pumvisible()*
+		Returns non-zero when the popup menu is visible, zero
+		otherwise.  See |ins-completion-menu|.
+
 
 							*E726* *E727*
 range({expr} [, {max} [, {stride}]])				*range()*
@@ -3714,9 +3726,9 @@
 		Send the {string} to {server}.  The string is sent as input
 		keys and the function returns immediately.  At the Vim server
 		the keys are not mapped |:map|.
-		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.
+		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.
 		See also |clientserver| |RemoteReply|.
 		This function is not available in the |sandbox|.
 		{only available when compiled with the |+clientserver| feature}
@@ -3920,6 +3932,27 @@
 	:echo searchpair('{', '', '}', 'bW',
 	     \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? "string"')
 <
+							*searchpairpos()*
+searchpairpos({start}, {middle}, {end} [, {flags} [, {skip}]])
+		Same as searchpair(), but returns a List with the line and
+		column position of the match. The first element of the List 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] = searchpairpos('{', '', '}', 'n')
+<
+		See |match-parens| for a bigger and more useful example.
+
+searchpos({pattern} [, {flags}])			*searchpos()*
+		Same as search(), but returns a List with the line and column
+		position of the match. The first element of the List 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')
+<
 server2client( {clientid}, {string})			*server2client()*
 		Send a reply string to {clientid}.  The most recent {clientid}
 		that sent a string can be retrieved with expand("<client>").
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index ea87249..066cfd4 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0aa.  Last change: 2005 Aug 07
+*gui.txt*       For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -37,7 +37,8 @@
 
 					*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
 When the GUI starts up initializations are carried out, in this order:
-- The termcap options are reset to their default value for the GUI.
+- The 'term' option is set to "builgin_gui" and terminal options are reset to
+  their default value for the GUI |terminal-options|.
 - If the system menu file exists, it is sourced.  The name of this file is
   normally "$VIMRUNTIME/menu.vim".  You can check this with ":version".  Also
   see |$VIMRUNTIME|.  To skip loading the system menu include 'M' in
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 74c2c58..450f667 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 10
+*insert.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -126,8 +126,10 @@
 			'='	the expression register: you are prompted to
 				enter an expression (see |expression|)
 				Note that 0x80 (128 decimal) is used for
-				special keys, use CTRL-R CTRL-R to insert it
-				literally.
+				special keys.  E.g., you can use this to move
+				the cursor up:
+					CTRL-R ="\<Up>"
+				Use CTRL-R CTRL-R to insert text literally.
 		See |registers| about registers.  {not in Vi}
 
 CTRL-R CTRL-R {0-9a-z"%#*+/:.-=}			*i_CTRL-R_CTRL-R*
@@ -422,7 +424,7 @@
 If you don't really want to break the line, but view the line wrapped at a
 convenient place, see the 'linebreak' option.
 
-The line is only broken automatically when using insert mode, or when
+The line is only broken automatically when using Insert mode, or when
 appending to a line.  When in replace mode and the line length is not
 changed, the line will not be broken.
 
@@ -438,6 +440,10 @@
      current insert command.  Only differs from "l" when entering non-white
      characters while crossing the 'textwidth' boundary.
 
+Normally an internal function will be used to decide where to break the line.
+If you want to do it in a different way set the 'formatexpr' option to an
+expression that will take care of the line break.
+
 If you want to format a block of text, you can use the "gq" operator.  Type
 "gq" and a movement command to move the cursor to the end of the block.  In
 many cases, the command "gq}" will do what you want (format until the end of
@@ -622,8 +628,8 @@
 			the cursor.  Indent is ignored.  The matching line is
 			inserted in front of the cursor.
 			The 'complete' option is used to decide which buffers
-			are searched for a match.  Only loaded buffers are
-			used.
+			are searched for a match.  Both loaded and unloaded
+			buffers are used.
 	CTRL-L	or
 	CTRL-P		Search backwards for next matching line.  This line
 			replaces the previous matching line.
@@ -1071,25 +1077,37 @@
 - The terminal supports at least 8 colors.
 - There are at least two matches.
 
-While the menu is displayed these keys have a special meaning:
-<CR> and <Enter>  Accept the currently selected match
+There are two states:
+1. A complete match has been inserted.
+2. Only part of a match has been inserted.
 
-<PageUp>	  Select a match several entries back
-<PageDown>	  Select a match several entries further
+When "longest" is in 'completeopt' and there is more than one match you start
+in the second state.
 
+In the first state these keys have a special meaning:
+<BS> and CTRL-H   Delete one character, find the matches for the word before
+		  the cursor.  This reduces the list of matches, often to one
+		  entry.  Switches to the second state.
+
+In the second state these keys have a special meaning:
 <BS> and CTRL-H   Delete one character, find the matches for the shorter word
 		  before the cursor.  This may find more matches.
 CTRL-L		  Add one character from the current match, may reduce the
-		  number of matches.  Does not work after selecting one of the
-		  matches with CTRL-N, <Up>, etc.
-<Up>		  Select the previous match, as if CTRL-P was used, but don't
-		  insert it when editing the selection.
-<Down>		  Select the next match, as if CTRL-N was used, but don't
-		  insert it when editing the selection.
+		  number of matches.
+any printable character: Add this character and reduce the number of matches.
 
-The selection is being edited after typing <BS>, CTRL-L or when using the
-longest common match.  This stops when a match is inserted, as with CTRL-N or
-CTRL-P.
+In both states these can be used:
+<CR> and <Enter>  Accept the currently selected match
+<PageUp>	  Select a match several entries back
+<PageDown>	  Select a match several entries further
+<Up>		  Select the previous match, as if CTRL-P was used, but don't
+		  insert the newly selected word.
+<Down>		  Select the next match, as if CTRL-N was used, but don't
+		  insert the newly selected word.
+
+If you select another match, e.g., with CTRL-N or CTRL-P, you go back to the
+first state.  However, the list of matches doesn't change.
+
 
 The colors of the menu can be changed with these highlight groups:
 Pmenu		normal item  |hl-Pmenu|
@@ -1097,8 +1115,16 @@
 PmenuSbar	scrollbar  |hl-PmenuSbar|
 PmenuThumb	thumb of the scrollbar  |hl-PmenuThumb|
 
+There are no special mappings for when the popup menu is visible.  However,
+you can use an Insert mode mapping that checks the |pumvisible()| function to
+do something different.  Example: >
+	:inoremap <Down> <C-R>=pumvisible() ? "\<lt>C-N>" : "\<lt>Down>"<CR>
 
-Filetype-specific remarks for omni completion	    *compl-omni-filetypes*
+
+FILETYPE-SPECIFIC REMARKS FOR OMNI COMPLETION	    *compl-omni-filetypes*
+
+The file used for {filetype} should be autoload/{filetype}complete.vim
+in 'runtimepath'.  Thus for "java" it is autoload/javacomplete.vim.
 
 
 C							*ft-c-omni*
@@ -1144,23 +1170,22 @@
 HTML and XHTML						*ft-html-omni*
 							*ft-xhtml-omni*
 
-CTRL-X CTRL-O provides completion of various elements of (X)HTML files.
-It is designed to support writing of XHTML 1.0 Strict files but will
-also works for other versions of HTML. Features:
+CTRL-X CTRL-O provides completion of various elements of (X)HTML files.  It is
+designed to support writing of XHTML 1.0 Strict files but will also works for
+other versions of HTML. Features:
 
-- after "<" complete tag name depending on context (no div suggestion
-  inside of an a tag)
-- inside of tag complete proper attributes (no width attribute for an
-  a tag)
-- when attribute has limited number of possible values help to complete
-  them
+- after "<" complete tag name depending on context (no div suggestion inside
+  of an a tag); '/>' indicates empty tags
+- inside of tag complete proper attributes (no width attribute for an a tag);
+  show also type of attribute; '*' indicates required attributes
+- when attribute has limited number of possible values help to complete them
 - complete names of entities
 - complete values of "class" and "id" attributes with data obtained from
-  style tag and included CSS files
+  <style> tag and included CSS files
 - when completing value of "style" attribute or working inside of "style" tag
   switch to |ft-css-omni| completion
-- when completing values of events attributes or working inside of "script" tag
-  switch to |ft-javascript-omni| completion
+- when completing values of events attributes or working inside of "script"
+  tag switch to |ft-javascript-omni| completion
 - when used after "</" CTRL-X CTRL-O will close the last opened tag
 
 Note: When used first time completion menu will be shown with little delay
@@ -1176,7 +1201,7 @@
 Complete:
 
 - variables
-- function name
+- function name; show function arguments
 - function arguments
 - properties of variables trying to detect type of variable
 - complete DOM objects and properties depending on context
@@ -1244,7 +1269,7 @@
 
 Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
 
-XML data files are stored in "autoload/xml" directory in 'runtimepath'. They
+XML data files are stored in "autoload/xml" directory in 'runtimepath'.  They
 have meaningful name which will be used in commands. It should be unique name
 which will not create conflicts in future. For example name xhtml10s.vim means
 it is data file for XHTML 1.0 Strict.
@@ -1258,9 +1283,9 @@
 Part two must be exactly the same as name of file.
 
 Variable is data structure in form of |Dictionary|. Keys are tag names and
-values are two element |List|. First element of List is also List with
-names of possible children, second element is |Dictionary| with names of
-attributes as keys and possible values of attributes as values. Example: >
+values are two element |List|. First element of List is also List with names
+of possible children, second element is |Dictionary| with names of attributes
+as keys and possible values of attributes as values. Example: >
 
     let g:xmldata_crippledhtml = {
     \ "html": 
@@ -1272,21 +1297,31 @@
     \ "meta": 
     \ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme": 
     \ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
-    \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]}
+    \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]},
+    \ "vimxmltaginfo": {
+    \ 'meta': ['/>', '']},
+    \ "vimxmlattrinfo": {
+    \ 'http-equiv': ['ContentType', '']}
 
 This example should be put in "autoload/xml/crippledhtml.vim" file.
 
-In example are visible two special elements:
+In example are visible four special elements:
 
 1. "vimxmlentities" - special key with List containing entities of this XML
    dialect.
 2. "BOOL" - value of attribute key showing if attribute should be inserted
    bare ("defer" vs. 'defer="'). It can be the only element of List of
    attribute values.
+3. "vimxmltaginfo" - special key with dictionary containing as key tag names,
+   as value two element List for additional menu info and long description.
+4. "vimxmlattrinfo" - special key with dictionary containing as key attribute
+   names, as value two element List for additional menu info and long
+   description.
 
 Note: Tag names in data file MUST not contain namespace description. Check
 xsl.vim for example.
 
+
 Commands
 
 :XMLns {name} [{namespace}]					*:XMLns*
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 4cf0d33..c9aa452 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 10
+*options.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -127,7 +127,7 @@
 {not available when compiled without the +eval feature}
 
 							*:set-termcap* *E522*
-For {option} the form "t_xx" may be used to set a termcap option.  This will
+For {option} the form "t_xx" may be used to set a terminal option.  This will
 override the value from the termcap.  You can then use it in a mapping.  If
 the "xx" part contains special characters, use the <t_xx> form: >
 	:set <t_#4>=^[Ot
@@ -2036,8 +2036,8 @@
 			global
 			{not in Vi}
 	When set to "msg", error messages that would otherwise be omitted will
-	be given anyway.  This is useful when debugging 'foldexpr' or
-	'indentexpr'.
+	be given anyway.  This is useful when debugging 'foldexpr',
+	'formatexpr' or 'indentexpr'.
 	When set to "beep", a message will be given when otherwise only a beep
 	would be produced.
 	The values can be combined, separated by a comma.
@@ -2882,17 +2882,43 @@
 			global
 			{not in Vi}
 	The name of an external program that will be used to format the lines
-	selected with the "gq" command.  The program must take the input on
+	selected with the |gq| operator.  The program must take the input on
 	stdin and produce the output on stdout.  The Unix program "fmt" is
 	such a program.
-	If this option is an empty string, the internal format function will
-	be used |C-indenting|.
+	If the 'formatexpr' option is not empty it will be used instead.
+	Otherwise, if 'formatprg' option is an empty string, the internal
+	format function will be used |C-indenting|.
 	Environment variables are expanded |:set_env|.  See |option-backslash|
 	about including spaces and backslashes.
-	This option cannot be set from a |modeline| or in the |sandbox|, for
-	security reasons.
+	The expression may be evaluated in the |sandbox|, see
+	|sandbox-option|.
 
-							*'fsync'* *'fs'*
+						*'formatexpr'* *'fex'*
+'formatexpr' 'fex'	string (default "")
+			local to buffer
+			{not in Vi}
+			{not available when compiled without the |+eval|
+			feature}
+	Expression which is evaluated to format a range of lines for the |gq|
+	operator.  The |v:lnum| variable holds the first line to be formatted,
+	|v:count| the number of lines to be formatted.
+	When this option is empty 'formatprg' is used.
+	Example: >
+		:set formatexp=mylang#Format()
+<	This will invoke the mylang#Format() function in the
+	autoload/mylang.vim file in 'runtimepath'. |autoload|
+
+	The expression is also evaluated when 'textwidth' is set and adding
+	text beyond that limit.  This happens under the same conditions as
+	when internal formatting is used.  Make sure the cursor is kept in the
+	same spot relative to the text then!  The |mode()| function will
+	return "i" or "R" in this situation.  When the function returns
+	non-zero Vim will fall back to using the internal format mechanism.
+
+	The expression may be evaluated in the |sandbox|, see
+	|sandbox-option|.
+
+						*'fsync'* *'fs'*
 'fsync' 'fs'		boolean	(default on)
 			global
 			{not in Vi}
@@ -7016,7 +7042,7 @@
 'weirdinvert' 'wiv'	boolean	(default off)
 			global
 			{not in Vi}
-	This option has the same effect as the 't_xs' termcap option.
+	This option has the same effect as the 't_xs' terminal option.
 	It is provided for backwards compatibility with version 4.x.
 	Setting 'weirdinvert' has the effect of making 't_xs' non-empty, and
 	vice versa.  Has no effect when the GUI is running.
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt
index 3c82f17..09f915d 100644
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -1,4 +1,4 @@
-*os_dos.txt*    For Vim version 7.0aa.  Last change: 2003 Dec 20
+*os_dos.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -126,8 +126,8 @@
 See |highlight-groups| for other groups that are available.
 
 A DOS console does not support attributes like bold and underlining.  You can
-set the color used in five modes with nine termcap options.  Note that this is
-not necessary since you can set the color directly with the ":highlight"
+set the color used in five modes with nine terminal options.  Note that this
+is not necessary since you can set the color directly with the ":highlight"
 command; these options are for backward compatibility with older Vim versions.
 The |'highlight'| option specifies which of the five modes is used for which
 action. >
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index 27804b0..2a19909 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 01
+*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -161,7 +161,7 @@
     s[-num]	[num] characters to the left of the start of the match
     b[+num]	[num] identical to s[+num] above (mnemonic: begin)
     b[-num]	[num] identical to s[-num] above (mnemonic: begin)
-    ;{pattern}  perform another searcn, see |//;|
+    ;{pattern}  perform another search, see |//;|
 
 If a '-' or '+' is given but [num] is omitted, a count of one will be used.
 When including an offset with 'e', the search becomes inclusive (the
diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt
index ffa3b07..192778c 100644
--- a/runtime/doc/quickref.txt
+++ b/runtime/doc/quickref.txt
@@ -1,4 +1,4 @@
-*quickref.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 11
+*quickref.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -692,6 +692,7 @@
 |'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
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index 1579e21..d21a52d 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0aa.  Last change: 2006 Jan 19
+*starting.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -706,7 +706,8 @@
 	'shell' option.  On MS-DOS and Win32, the COMSPEC variable is used
 	if SHELL is not set.
 	The environment variable TERM, if it exists, is used to set the 'term'
-	option.
+	option.  However, 'term' will change later when starting the GUI (step
+	8 below).
 
 2. Process the arguments
 	The options and file names from the command that start Vim are
diff --git a/runtime/doc/tags b/runtime/doc/tags
index d2ab20b..9c49ee7 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -202,6 +202,7 @@
 'fen'	options.txt	/*'fen'*
 'fenc'	options.txt	/*'fenc'*
 'fencs'	options.txt	/*'fencs'*
+'fex'	options.txt	/*'fex'*
 'ff'	options.txt	/*'ff'*
 'ffs'	options.txt	/*'ffs'*
 'fileencoding'	options.txt	/*'fileencoding'*
@@ -231,6 +232,7 @@
 'foldnestmax'	options.txt	/*'foldnestmax'*
 'foldopen'	options.txt	/*'foldopen'*
 'foldtext'	options.txt	/*'foldtext'*
+'formatexpr'	options.txt	/*'formatexpr'*
 'formatlistpat'	options.txt	/*'formatlistpat'*
 'formatoptions'	options.txt	/*'formatoptions'*
 'formatprg'	options.txt	/*'formatprg'*
@@ -5870,6 +5872,7 @@
 masm.vim	syntax.txt	/*masm.vim*
 match()	eval.txt	/*match()*
 match-highlight	pattern.txt	/*match-highlight*
+match-parens	tips.txt	/*match-parens*
 matchend()	eval.txt	/*matchend()*
 matchit-install	usr_05.txt	/*matchit-install*
 matchlist()	eval.txt	/*matchlist()*
@@ -6312,6 +6315,7 @@
 progress.vim	syntax.txt	/*progress.vim*
 ptcap.vim	syntax.txt	/*ptcap.vim*
 pterm-mouse	options.txt	/*pterm-mouse*
+pumvisible()	eval.txt	/*pumvisible()*
 put	change.txt	/*put*
 put-Visual-mode	change.txt	/*put-Visual-mode*
 python	if_pyth.txt	/*python*
@@ -6532,6 +6536,8 @@
 search-replace	change.txt	/*search-replace*
 searchdecl()	eval.txt	/*searchdecl()*
 searchpair()	eval.txt	/*searchpair()*
+searchpairpos()	eval.txt	/*searchpairpos()*
+searchpos()	eval.txt	/*searchpos()*
 section	motion.txt	/*section*
 sed.vim	syntax.txt	/*sed.vim*
 self	eval.txt	/*self*
@@ -7014,6 +7020,7 @@
 termcap-colors	term.txt	/*termcap-colors*
 termcap-cursor-color	term.txt	/*termcap-cursor-color*
 termcap-cursor-shape	term.txt	/*termcap-cursor-shape*
+termcap-options	term.txt	/*termcap-options*
 termcap-title	term.txt	/*termcap-title*
 terminal-colors	os_unix.txt	/*terminal-colors*
 terminal-info	term.txt	/*terminal-info*
diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt
index 49da29e..b0a4bd8 100644
--- a/runtime/doc/term.txt
+++ b/runtime/doc/term.txt
@@ -1,4 +1,4 @@
-*term.txt*      For Vim version 7.0aa.  Last change: 2005 Dec 14
+*term.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -208,7 +208,7 @@
 convert all key sequences to their 8-bit variants.
 
 ==============================================================================
-2. Terminal options				*terminal-options* *E436*
+2. Terminal options		*terminal-options* *termcap-options* *E436*
 
 The terminal options can be set just like normal options.  But they are not
 shown with the ":set all" command.  Instead use ":set termcap".
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index d60ff14..5e40cda 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -1,4 +1,4 @@
-*tips.txt*      For Vim version 7.0aa.  Last change: 2005 Apr 19
+*tips.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 13
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -24,6 +24,7 @@
 Hex editing					|hex-editing|
 Executing shell commands in a window		|shell-window|
 Using <> notation in autocommands		|autocmd-<>|
+Highlighting matching parens			|match-parens|
 
 ==============================================================================
 Editing C programs					*C-editing*
@@ -443,4 +444,58 @@
 For a real buffer menu, user functions should be used (see |:function|), but
 then the <> notation isn't used, which defeats using it as an example here.
 
+==============================================================================
+Highlighting matching parens					*match-parens*
+
+This example shows the use of a few advanced tricks:
+- using the |CursorMoved| autocommand event
+- using |searchpairpos()| to find a matching paren
+- using |:match| to highlight something
+- using a |pattern| to match a specific position in the file.
+
+This should be put in a Vim script file, since it uses script-local variables.
+Note that it doesn't recognize strings or comments in the text.
+>
+	let s:paren_hl_on = 0
+	function s:Highlight_Matching_Paren()
+	  if s:paren_hl_on
+	    match none
+	    let s:paren_hl_on = 0
+	  endif
+
+	  let c_lnum = line('.')
+	  let c_col = col('.')
+
+	  let c = getline(c_lnum)[c_col - 1]
+	  let plist = split(&matchpairs, ':\|,')
+	  let i = index(plist, c)
+	  if i < 0
+	    return
+	  endif
+	  if i % 2 == 0
+	    let s_flags = 'nW'
+	    let c2 = plist[i + 1]
+	  else
+	    let s_flags = 'nbW'
+	    let c2 = c
+	    let c = plist[i - 1]
+	  endif
+	  if c == '['
+	    let c = '\['
+	    let c2 = '\]'
+	  endif
+
+	  let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags)
+
+	  if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
+	    exe 'match Search /\(\%' . c_lnum . 'l\%' . c_col .
+		  \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
+	    let s:paren_hl_on = 1
+	  endif
+	endfunction
+
+	autocmd CursorMoved * call s:Highlight_Matching_Paren()
+	autocmd InsertEnter * match none
+<
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 23267a6..59bc24e 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 10
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,19 +30,48 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Support WINDOW TABS.  Works like several pages, each with their own split
+windows.  Let's call them "tab pages".
+
+    todo:
+    - ":qa"?
+    - "2gt" doesn't restore syntax HL.  GUI: scrollbars are wrong.
+    - line at top of frame with tabs.  'tabline' option 0/1/2 like 'laststatus'
+	Use the name of the first buffer in the tab (ignoring the help window,
+	unless it's the only one).  Add a number for the window count.
+	Add 'tabtext' option, like 'statusline'.
+	Select tab with mouse.
+    - When deleting a buffer also close windows in other tab pages.
+    - check all places where (firstwin == lastwin) is used (and vise versa)
+    - check all places wheren only_one_window() is used.
+    - When Vim window is resized all tabs must be resized.
+    - E999
+    - ":tabclose N" close tab N
+    docs:
+	:tabedit
+	:tabfind
+	:tab N
+	:tabs
+	{count}gt
+	:tabclose
+	:close and :quit (last window in tab)
+	"gt": Use "1gt" - "99gt" to switch to another tab.  "gt" goes to the
+	     next one.  Hint in docs: To mess with another buffer, without
+	     changing the window layout, do this in another tab.
+
+    add GUI Tabs for some systems.
+    Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6.
+    Simple patch for GTK by Luis M (nov 7).
+
+    Don't forget to provide an "X" to close the current tab.
+
+    Need to be able to search the windows in inactive tabs, e.g. for the
+    quickfix window.
+
+
 Crash with X command server (Ciaran McCreesh).
 
-ccomplete / omnicomplete:
-- For C add tag "kind" field to each match?
-- Flickering because of syntax highlighting redrawing further lines.
-- Finding out if an item has members (to add '.' or '->') requires a grep in
-  the tags files, that is very slow.  Is there another solution?  At least
-  stop at the first match.
-  Could build the list of items for each structure in memory.  Is that faster?
-  Not using too much memory?
-- When a typedef or struct is local to a file only use it in that file?
-- Special mappings for when the popup menu is visible?  Would allow for making
-  a specific selection (e.g, methods vs variables).
+Ctags still hasn't included the patch...
 
 spelling:
 - Also use the spelling dictionary for dictionary completion.
@@ -87,13 +116,6 @@
   adding a bad word like "zw" would.  Use "zuw" to undo "zw"?  (Antonio
   Colombo)
 
-7   Add plugins for formatting.  Should be able to make a choice depending on
-    the language of a file (English/Korean/Japanese/etc.).
-    Setting the 'langformat' option to "chinese" would load the
-    "format/chinese.vim" plugin.
-Edward L. Fox explains how it should be done for most Asian languages. (2005
-Nov 24)
-
 An error in a function uses a line number that doesn't take line continuation
 into account. (Mikolaj Machowski)  Store line count in an extra array?
 
@@ -113,7 +135,6 @@
   (Alan Schmitt)
 
 Patch to add a few flags to search(). (Benji Fisher, Nov 29, doc update Dec 1)
-Also add search???() function that returns list with lnum and col.
 
 Win32: Use the free downloadable compiler 7.1 (2003).  Figure out how to do
 debugging (with Agide?) and describe it. (George Reilly)
@@ -125,9 +146,6 @@
 Win32: Check that installer puts menu items in "all users" dir when possible,
 not administrator dir.
 
-CTRL-X CTRL-L only completes from loaded buffers.  Make it work for unloaded
-buffers too?
-
 Autoload:
 - Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
   script names and a help file and produces a script that can be sourced to
@@ -158,48 +176,30 @@
 
 CONSIDERED FOR VERSION 7.0:
 
--   Omni completion: Understands the programming language and finds matches
-    that make sense.  Esp. members of classes/structs.
-
-    It's not much different from other Insert-mode completion, use the same
-    mechanism.  Use CTRL-X CTRL-O and 'omnifunc'.  Set 'omnifunc' in the
-    filetype plugin, define the function in the autoload directory.
-    
-    Separately develop the completion logic and the UI.  When adding UI stuff
-    make it work for all completion methods.
+Omni completion:
+    ccomplete:
+    - Finding out if an item has members (to add '.' or '->') requires a grep
+      in the tags files, that is very slow.  Is there another solution?  At
+      least stop at the first match.
+      Could build the list of items for each structure in memory.  Is that
+      faster?  Not using too much memory?
+    - For C add tag "kind" field to each match?
+    - Flickering because of syntax highlighting redrawing further lines.
+    - When a typedef or struct is local to a file only use it in that file?
 
     UI:
-    - Complete longest common string first, like 'wildmode' "longest:full".
     - Add an "auto" mode: after typing a character (or string) completion is
       done for the longest common string.  plugin defines the possible
       characters/strings. (Martin Stubenschrott)
+      And/or: Provide a function to popup the menu, so that an insert mode
+      mapping can start it (with a specific selection).
     - GUI implementation of the popup menu.
-    - When using tags, show match in preview window (function prototype,
-      struct member, etc.).
+    - Show "info" from a match in preview window.
       Or use one window for matches, another for context/info (Doug Kearns,
       2005 Sep 13)
     - Ideas on: http://www.wholetomato.com/
 
-
     Completion logic:
-	Use runtime/autoload/{filetype}complete.vim files.
-
-	In function arguments suggest variables of expected type.
-	Tags file has "signature" field.
-
-	List of completions is a Dictionary with items:
-	    complist[0]['text'] = completion text
-	    complist[0]['type'] = type of completion (e.g. function, var, arg)
-	    complist[0]['help'] = help text (e.g. function declaration)
-	    complist[0]['helpfunc'] = function that shows help text
-	    etc.
-
-	Can CTRL-] (jump to tag) include the "." and "->" to restrict the
-	number of possible matches? (Flemming Madsen)
-
-	In general: Besides completion, figure out the type of a variable
-	and use it for information.
-
 	Ideas from others:
 	http://www.vim.org/scripts/script.php?script_id=747
 	    http://sourceforge.net/projects/insenvim
@@ -212,10 +212,6 @@
 	    Uses ctags to find the info:
 		ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files
 
-	    UI: popup menu with list of alternatives, icon to indicate type
-		optional popup window with info about selected alternative
-	    Unrelated settings are changed (e.g. 'mousemodel').
-
 	www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang)
 	IComplete: http://www.vim.org/scripts/script.php?script_id=1265
 	    and http://stud4.tuwien.ac.at/~e0125672/icomplete/
@@ -223,21 +219,15 @@
 	Ivan Villanueva has something for Java.
 	Emads: http://www.xref-tech.com/xrefactory/more_c_completion.html
 	Ideas from the Vim 7 BOF at SANE:
-	- It's not possible to have one solution for all languages.  Design an
-	  interface for completion plugins.  The matches can be done in a
-	  Vim-script list.
 	- For interpreted languages, use the interpreter to obtain information.
 	  Should work for Java (Eclipse does this), Python, Tcl, etc.
 	  Richard Emberson mentioned working on an interface to Java.
 	- Check Readline for its completion interface.
 	- Use ctags for other languages.  Writing a file could trigger running
 	  ctags, merging the tags of the changed file.
-	"Visual Assist" http://www.wholetomato.com/products:
 	Completion in .NET framework SharpDevelop: http://www.icsharpcode.net
 
         - Pre-expand abbreviations, show which abbrevs would match?
-    - Provide a function to popup the menu, so that an insert mode mapping can
-      start it (with a specific selection).
 
 -   UNDO TREE: keep all states of the text, don't delete undo info.
     When making a change, instead of clearing any future undo (thus redo)
@@ -259,24 +249,6 @@
     before some time/date can be flushed. 'undopersist' gives maximum time to
     keep undo: "3h", "1d", "2w", "1y", etc.  For the file use dot and
     extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
-7   Support WINDOW TABS.  Works like several pages, each with their own
-    split windows.
-    In Emacs these are called frames.  Could also call them "pages".
-    Use the name of the first buffer in the tab (ignoring the help window,
-    unless it's the only one).  Add a number for the window count.
-    First make it work on the console.  Use a line of text with highlighting.
-    Then add GUI Tabs for some systems.
-    Patch for GTK 1.2 passed on by Christian Michon, 2004 Jan 6.
-    Simple patch for GTK by Luis M (nov 7).
-    Don't forget to provide an "X" to close the current tab.
-    Implementation: keep the list of windows as-is.  When switching to another
-    tab make the buffers in the current windows hidden, save the window
-    layout, buildup the other window layout and fill with buffers.
-    Need to be able to search the windows in inactive tabs, e.g. for the
-    quickfix window.
-    Use "1gt" - "99gt" to switch to a tab?
-    Also hidden tabs? Useful for messing with a temp buffer without changing
-    the window layout.
 -   EMBEDDING: Make it possible to run Vim inside a window of another program.
     For Xwindows this can be done with XReparentWindow().
     For GTK Neil Bird has a patch to use Vim like a widget.
@@ -431,7 +403,7 @@
     7   Completion of network shares, patch by Yasuhiro Matsumoto.
 	Update 2004 Sep 6.
 	How does this work?  Missing comments.
-	gettext()	Translate a message.  (Patch from Yasuhiro Matsumoto)
+    -	gettext()	Translate a message.  (Patch from Yasuhiro Matsumoto)
 			Update 2004 Sep 10
 			Another patch from Edward L. Fox (2005 Nov 24)
 			Search in 'runtimepath'?
@@ -2085,6 +2057,9 @@
 
 
 Tags:
+7   Can CTRL-] (jump to tag) include a following "." and "->" to restrict the
+    number of possible matches? Check tags file for an item that has members.
+    (Flemming Madsen)
 7   Count before CTRL-]: jump to N'th match
 8   Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis.
 8   When output of ":tselect" is long, getting the more-prompt, should be able
@@ -3288,6 +3263,13 @@
 
 
 Various improvements:
+7   Add plugins for formatting?  Should be able to make a choice depending on
+    the language of a file (English/Korean/Japanese/etc.).
+    Setting the 'langformat' option to "chinese" would load the
+    "format/chinese.vim" plugin.
+    The plugin would set 'formatexpr' and define the function being called.
+    Edward L. Fox explains how it should be done for most Asian languages.
+    (2005 Nov 24)
 7   [t to move to previous xml/html tag (like "vatov"), ]t to move to next
     ("vatv").
 7   [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to
@@ -3419,9 +3401,6 @@
     paragraph.	Both start a new paragraph on any indent change.
 7   Add a way to define an item list with a pattern in 'formatoptions'.  The
     'n' flag doesn't work for "6.3" or "6a.".
-8   Add 'formatexpr' option: Used for formatting operator "gq" instead of the
-    builtin formatting or 'formatprg'.  Or use a string that starts with "="
-    in 'formatprg': "=MyFormat()".
 8   Allow using a trailing space to signal a paragraph that continues on the
     next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
     continuous formatting.  Could use 'autoformat' option, which specifies a
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 2b73315..62b6a91 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -654,7 +654,9 @@
 	nextnonblank()		find next non-blank line
 	prevnonblank()		find previous non-blank line
 	search()		find a match for a pattern
+	searchpos()		find a match for a pattern
 	searchpair()		find the other end of a start/skip/end
+	searchpairpos()		find the other end of a start/skip/end
 
 System functions and manipulation of files:
 	browse()		put up a file requester
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 14e378a..bbd3d04 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 10
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -414,6 +414,8 @@
 			(based on an idea from Yegappan Lakshmanan)
 'formatlistpat'		pattern to recognize a numbered list for formatting.
 			(idea by Hugo Haas)
+'formatexpr'		expression for formatting text with |gq| and when text
+			goes over 'textwidth' in Insert mode.
 'spell'			switch spell checking on/off
 'spelllang'		languages to check spelling for
 'spellsuggest'		methods for spell suggestions
@@ -558,6 +560,8 @@
 |repeat()| 		repeat "expr" "count" times (Christophe Poucet)
 |reverse()|		reverse the order of a List
 |searchdecl()|		search for declaration of variable
+|searchpairpos()|	return a List with the position of the match
+|searchpos()|	        return a List with the position of the match
 |setloclist()|		modify a location list (Yegappan Lakshmanan)
 |setqflist()|		modify a quickfix list (Yegappan Lakshmanan)
 |sort()|		sort a List
@@ -1004,6 +1008,7 @@
 ":saveas asdf.c" will set 'filetype' to c when it's empty.  Also for ":w
 asdf.c" when it sets the filename for the buffer.
 
+Insert mode completion for whole lines now also searches unloaded buffers.
 
 ==============================================================================
 COMPILE TIME CHANGES					*compile-changes-7*
@@ -1686,4 +1691,9 @@
 In some situations the menu and scrollbar didn't work, when the value contains
 a CSI byte. (Yukihiro Nakadaira)
 
+GTK GUI: When drawing the balloon focus changes and we might get a key release
+event that removed the balloon again.  Ignore the key release event.
+
+'titleold' was included in ":mkexrc" and ":mksession" files.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/indent/vhdl.vim b/runtime/indent/vhdl.vim
index e510f3c..82f0f83 100644
--- a/runtime/indent/vhdl.vim
+++ b/runtime/indent/vhdl.vim
@@ -1,8 +1,8 @@
 " VHDL indent ('93 syntax)
 " Language:    VHDL
 " Maintainer:  Gerald Lai <laigera+vim?gmail.com>
-" Version:     1.3
-" Last Change: 2006 Jan 31
+" Version:     1.34
+" Last Change: 2006 Feb 11
 " URL:         http://www.vim.org/scripts/script.php?script_id=1450
 
 " only load this indent file when no other was loaded
@@ -17,13 +17,35 @@
 setlocal indentkeys+==~if,=~then,=~elsif,=~else
 setlocal indentkeys+==~begin,=~is,=~select,=~--
 
-" move around
+" count repeat
+function! <SID>CountWrapper(cmd)
+  let i = v:count1
+  if a:cmd[0] == ":"
+    while i > 0
+      execute a:cmd
+      let i = i - 1
+    endwhile
+  else
+    execute "normal! gv\<Esc>"
+    execute "normal ".i.a:cmd
+    let curcol = col(".")
+    let curline = line(".")
+    normal! gv
+    call cursor(curline, curcol)
+  endif
+endfunction
+
+" explore motion
 " keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units"
 let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)'
-nnoremap <silent><buffer>[[ :cal search('\%(\<end\s\+\)\@<!\<'.b:vhdl_explore.'\>\c','bW')<CR>
-nnoremap <silent><buffer>]] :cal search('\%(\<end\s\+\)\@<!\<'.b:vhdl_explore.'\>\c','W')<CR>
-nnoremap <silent><buffer>[] :cal search('\<end\s\+'.b:vhdl_explore.'\>\c','bW')<CR>
-nnoremap <silent><buffer>][ :cal search('\<end\s\+'.b:vhdl_explore.'\>\c','W')<CR>
+noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR>
+noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR>
+vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR>
+vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR>
+vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR>
+vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR>
 
 " constants
 " not a comment
