updated for version 7.0c10
diff --git a/runtime/KVim.desktop b/runtime/KVim.desktop
deleted file mode 100644
index 25ef20a..0000000
--- a/runtime/KVim.desktop
+++ /dev/null
@@ -1,44 +0,0 @@
-# KDE Config File
-[Desktop Entry]
-Type=Application
-Exec=kvim -f %F
-Icon=kvim
-MiniIcon=kvim
-DocPath=kvim/index.html
-Comment=
-Comment[xx]=xx
-Terminal=0
-Name=KVim
-Name[eo]=VIM-fasado
-Name[sv]=Kvim
-Name[xx]=xx
-Comment=Text Editor
-Comment[ar]=محرر نصوص
-Comment[bg]=Текст Редактор
-Comment[de]=Texteditor
-Comment[el]=Διορθωτής Κειμένου
-Comment[eo]=Tekstredaktilo
-Comment[et]=Tekstiredaktor
-Comment[eu]=Testu Editorea
-Comment[fi]=Tekstieditori
-Comment[he]=עורך טקסט
-Comment[is]=Textaritill
-Comment[ja]=テキストエディタ
-Comment[lt]=Teksto redaktorius
-Comment[mt]=Editur tat-test
-Comment[pt_BR]=Editor de Texto
-Comment[ro]=Editor de text
-Comment[ru]=редактор
-Comment[sk]=Textový editor
-Comment[sl]=Urejevalnik besedil
-Comment[ta]=¯¨Ã ¦¾¡ÌôÀ¡Ç÷
-Comment[tr]=Metin Düzenleyici
-Comment[uk]=Редактор текстів
-Comment[vi]=Trình soạn văn bản
-Comment[xx]=xx
-Comment[zh_CN]=文本编辑器
-Comment[zh_TW]=文字編輯器
-MimeType=application/mathml+xml;application/xhtml+xml;application/x-perl;application/x-python;application/x-shellscript;audio/x-mpegurl;audio/x-scpls;image/svg+xml;message/news;message/rfc822;text/calendar;text/css;text/english;text/html;text/mrml;text/plain;text/rdf;text/rss;text/rtf;text/sgml;text/vnd.wap.wml;text/x-adasrc;text/x-bibtex;text/x-chdr;text/x-c++hdr;text/x-csrc;text/x-c++src;text/x-csv;text/x-diff;text/x-java;text/x-katefilelist;text/x-latex;text/x-log;text/x-lyx;text/x-makefile;text/xmcd;text/xml;text/x-moc;text/x-mswinurl;text/x-objcsrc;text/x-pascal;text/x-perl;text/x-python;text/x-tcl;text/x-tex;text/x-vcalendar;text/x-vcard;text/x-xslfo;text/x-xslt
-X-KDE-StartupNotify=true
-X-KDE-AuthorizeAction=shell access
-
diff --git a/runtime/autoload/gzip.vim b/runtime/autoload/gzip.vim
index a6467b8..f6f7bc4 100644
--- a/runtime/autoload/gzip.vim
+++ b/runtime/autoload/gzip.vim
@@ -1,6 +1,6 @@
 " Vim autoload file for editing compressed files.
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2005 Jul 26
+" Last Change: 2006 Mar 31
 
 " These functions are used by the gzip plugin.
 
@@ -84,9 +84,14 @@
     '[,']d _
   endif
   " read in the uncompressed lines "'[-1r tmp"
+  " Use ++edit if the buffer was empty, keep the 'ff' and 'fenc' options.
   setlocal nobin
   if exists(":lockmarks")
-    execute "silent lockmarks " . l . "r " . tmp
+    if empty
+      execute "silent lockmarks " . l . "r ++edit " . tmp
+    else
+      execute "silent lockmarks " . l . "r " . tmp
+    endif
   else
     execute "silent " . l . "r " . tmp
   endif
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index 399f671..00a3f3e 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Mar 22, 2006
-" Version:	83
+" Date:		Mar 31, 2006
+" Version:	84
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
@@ -23,7 +23,7 @@
 if &cp || exists("g:loaded_netrw")
   finish
 endif
-let g:loaded_netrw = "v83"
+let g:loaded_netrw = "v84"
 if v:version < 700
  echohl WarningMsg | echo "***netrw*** you need vim version 7.0 or later for version ".g:loaded_netrw." of netrw" | echohl None
  finish
@@ -404,8 +404,9 @@
    call s:NetMethod(choice)
 
    " Check if NetBrowse() should be handling this request
-"   call Decho("checking if netlist: choice<".choice."> netrw_list_cmd<".g:netrw_list_cmd.">")
+"   call Decho("checking if NetBrowse() should handle choice<".choice."> with netrw_list_cmd<".g:netrw_list_cmd.">")
    if choice =~ "^.*[\/]$"
+"    call Decho("yes, choice matches '^.*[\/]$'")
     keepjumps call s:NetBrowse(choice)
 "    call Dret("NetRead")
     return
@@ -457,6 +458,7 @@
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
 "     call Decho("read via ftp+.netrc (method #2)")
      let netrw_fname= escape(b:netrw_fname,g:netrw_fname_escape)
+"     call Decho("netrw_fname<".netrw_fname.">")
      new
      setlocal ff=unix
      exe "put ='".g:netrw_ftpmode."'"
@@ -780,7 +782,7 @@
 "   call Decho("calling NetReadFixup(method<".a:method."> line1=".line1." line2=".line2.")")
    call NetReadFixup(a:method, line1, line2)
 " else " Decho
-"  call Decho("NetReadFixup() not called, doesn't exist")
+"  call Decho("NetReadFixup() not called, doesn't exist  (line1=".line1." line2=".line2.")")
   endif
 
   " update the Buffers menu
@@ -1239,7 +1241,6 @@
    exe "silent doau BufReadPre ".fname
    silent call netrw#NetRead(2,method."://".user.machine."/".path)
    exe "silent doau BufReadPost ".fname
-   keepjumps 1d
 
    " save certain window-oriented variables into buffer-oriented variables
    call s:SetBufWinVars()
@@ -1352,7 +1353,7 @@
    endif
    let w:netrw_bannercnt= w:netrw_bannercnt + 1
   endif
-  keepjumps put ='\"   Quick Help:    ?:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
+  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
   keepjumps put ='\" ==========================================================================='
 
   " remote read the requested directory listing
@@ -2943,7 +2944,7 @@
    endif
    let w:netrw_bannercnt= w:netrw_bannercnt + 1
   endif
-  keepjumps put ='\"   Quick Help:    ?:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
+  keepjumps put ='\"   Quick Help: <F1>:help  -:go up dir  D:delete  R:rename  s:sort-by  x:exec'
   keepjumps put ='\" ============================================================================'
   let w:netrw_bannercnt= w:netrw_bannercnt + 2
 
diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim
index 4d448dc..8cb4db0 100644
--- a/runtime/autoload/phpcomplete.vim
+++ b/runtime/autoload/phpcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	PHP
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Mar ---
+" Last Change:	2006 Apr 05
 "
 "   TODO:
 "   - Class aware completion:
@@ -47,400 +47,594 @@
 			" We can be also inside of phpString with HTML tags. Deal with
 			" it later (time, not lines).
 		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 = []
-		" a:base is very short - we need context
-		if exists("b:compl_context")
-			let context = b:compl_context
-			unlet! b:compl_context
-		endif
 
-		if !exists('g:php_builtin_functions')
-			call phpcomplete#LoadData()
-		endif
+	endif
+	" 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
 
-		let scontext = substitute(context, 
-				\ '\$\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*$', '', '')
+	if !exists('g:php_builtin_functions')
+		call phpcomplete#LoadData()
+	endif
 
-		if scontext =~ '\(=\s*new\|extends\)\s\+$'
-			" Complete class name
-			" Internal solution for finding classes in current file.
-			let file = getline(1, '$')
-			call filter(file, 
-					\ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			let jfile = join(file, ' ')
-			let int_values = split(jfile, 'class\s\+')
-			let int_classes = {}
-			for i in int_values
-				let c_name = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
-				if c_name != ''
-					let int_classes[c_name] = ''
-				endif
-			endfor
+	let scontext = substitute(context, '\$\?[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*$', '', '')
 
-			" Prepare list of functions from tags file
-			let ext_classes = {}
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			if fnames != ''
-				exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					" [:space:] thing: we don't have to be so strict when
-					" dealing with tags files - entries there were already
-					" checked by ctags.
-					let item = matchstr(field['text'], '^[^[:space:]]\+')
-					let ext_classes[item] = ''
-				endfor
+	if scontext =~ '\(=\s*new\|extends\)\s\+$'
+		" Complete class name
+		" Internal solution for finding classes in current file.
+		let file = getline(1, '$')
+		call filter(file, 
+				\ 'v:val =~ "class\\s\\+[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		let jfile = join(file, ' ')
+		let int_values = split(jfile, 'class\s\+')
+		let int_classes = {}
+		for i in int_values
+			let c_name = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
+			if c_name != ''
+				let int_classes[c_name] = ''
 			endif
+		endfor
 
-			call extend(int_classes, ext_classes)
-
-			for m in sort(keys(int_classes))
-				if m =~ '^'.a:base
-					call add(res, m)
-				endif
+		" Prepare list of functions from tags file
+		let ext_classes = {}
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		if fnames != ''
+			exe 'silent! vimgrep /^'.a:base.'.*\tc\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				" [:space:] thing: we don't have to be so strict when
+				" dealing with tags files - entries there were already
+				" checked by ctags.
+				let item = matchstr(field['text'], '^[^[:space:]]\+')
+				let ext_classes[item] = ''
 			endfor
+		endif
 
-			let int_list = res
+		call extend(int_classes, ext_classes)
 
-			let final_menu = []
-			for i in int_list
-				let final_menu += [{'word':i, 'kind':'c'}]
-			endfor
+		for m in sort(keys(int_classes))
+			if m =~ '^'.a:base
+				call add(res, m)
+			endif
+		endfor
 
-			return final_menu
+		let int_list = res
 
-		elseif scontext =~ '\(->\|::\)$'
-			" Complete user functions and variables
-			" Internal solution for current file.
-			" That seems as unnecessary repeating of functions but there are
-			" few not so subtle differences as not appending of $ and addition
-			" of 'kind' tag (not necessary in regular completion)
-			if a:base =~ '^\$'
-				let adddollar = '$'
+		let final_menu = []
+		for i in int_list
+			let final_menu += [{'word':i, 'kind':'c'}]
+		endfor
+
+		return final_menu
+
+	elseif scontext =~ '\(->\|::\)$'
+		" Complete user functions and variables
+		" Internal solution for current file.
+		" That seems as unnecessary repeating of functions but there are
+		" few not so subtle differences as not appending of $ and addition
+		" of 'kind' tag (not necessary in regular completion)
+
+		if scontext =~ '->$' && scontext !~ '\$this->$'
+
+			" Get name of the class
+			let classname = phpcomplete#GetClassName(scontext)
+
+			" Get location of class definition, we have to iterate through all
+			" tags files separately because we need relative path from current
+			" file to the exact file (tags file can be in different dir)
+			if classname != ''
+				let classlocation = phpcomplete#GetClassLocation(classname)
 			else
-				let adddollar = ''
+				let classlocation = ''
 			endif
-			let file = getline(1, '$')
-			let jfile = join(file, ' ')
-			let sfile = split(jfile, '\$')
-			let int_vars = {}
-			for i in sfile
-				if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
-					let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
-				else
-					let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
-				endif
-				if val !~ ''
-					let int_vars[adddollar.val] = ''
-				endif
-			endfor
-			
-			" ctags has good support for PHP, use tags file for external
-			" variables
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			let ext_vars = {}
-			if fnames != ''
-				let sbase = substitute(a:base, '^\$', '', '')
-				exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					let item = matchstr(field['text'], '^[^[:space:]]\+')
-					" Add -> if it is possible object declaration
-					let classname = ''
-					if field['text'] =~ item.'\s*=\s*new\s\+'
-						let item = item.'->'
-						let classname = matchstr(field['text'], 
-								\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
+
+			if filereadable(classlocation)
+				let classfile = readfile(classlocation)
+				let classcontent = ''
+				let classcontent .= "\n".phpcomplete#GetClassContents(classfile, classname)
+				let sccontent = split(classcontent, "\n")
+
+				" YES, YES, YES! - we have whole content including extends!
+				" Now we need to get two elements: public functions and public
+				" vars
+				" NO, NO, NO! - third separate filtering looking for content
+				" :(, but all of them have differences. To squeeze them into
+				" one implementation would require many additional arguments
+				" and ifs. No good solution
+				" Functions declared with public keyword or without any
+				" keyword are public
+				let functions = filter(deepcopy(sccontent), 
+						\ 'v:val =~ "^\\s*\\(public\\s\\*\\)\\?function"')
+				let jfuncs = join(functions, ' ')
+				let sfuncs = split(jfuncs, 'function\s\+')
+				let c_functions = {}
+				for i in sfuncs
+					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)\_s*{')
+					if f_name != ''
+						let c_functions[f_name.'('] = f_args
 					endif
-					let ext_vars[adddollar.item] = classname
 				endfor
-			endif
-
-			" Now we have all variables in int_vars dictionary
-			call extend(int_vars, ext_vars)
-
-			" Internal solution for finding functions in current file.
-			let file = getline(1, '$')
-			call filter(file, 
-					\ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			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)\_s*{')
-				let int_functions[f_name.'('] = f_args
-			endfor
-
-			" Prepare list of functions from tags file
-			let ext_functions = {}
-			if fnames != ''
-				exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					" File name
-					let item = matchstr(field['text'], '^[^[:space:]]\+')
-					let fname = matchstr(field['text'], '\t\zs\f\+\ze')
-					let prototype = matchstr(field['text'], 
-							\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
-					let ext_functions[item.'('] = prototype.') - '.fname
-				endfor
-			endif
-
-			let all_values = {}
-			call extend(all_values, int_functions)
-			call extend(all_values, ext_functions)
-			call extend(all_values, int_vars) " external variables are already in
-			call extend(all_values, g:php_builtin_object_functions)
-
-			for m in sort(keys(all_values))
-				if m =~ '\(^\|::\)'.a:base
-					call add(res, m)
-				endif
-			endfor
-
-			let start_list = res
-
-			let final_list = []
-			for i in start_list
-				if has_key(int_vars, i)
-					let class = ' '
-					if all_values[i] != ''
-						let class = i.' class '
+				" Variables declared with var or with public keyword are
+				" public
+				let variables = filter(deepcopy(sccontent), 
+						\ 'v:val =~ "^\\s*\\(public\\|var\\)\\s\\+\\$"')
+				let jvars = join(variables, ' ')
+				let svars = split(jvars, '\$')
+				let c_variables = {}
+				for i in svars
+					let c_var = matchstr(i, 
+							\ '^\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
+					if c_var != ''
+						let c_variables[c_var] = ''
 					endif
-					let final_list += [{'word':i, 'info':class.all_values[i], 'kind':'v'}]
-				else
-					let final_list += 
-							\ [{'word':substitute(i, '.*::', '', ''), 
-							\   'info':i.all_values[i],
-							\   'kind':'f'}]
-				endif
-			endfor
+				endfor
 
-			return final_list
+				let all_values = {}
+				call extend(all_values, c_functions)
+				call extend(all_values, c_variables)
+				call extend(all_values, g:php_builtin_object_functions)
+
+				for m in sort(keys(all_values))
+					if m =~ '^'.a:base && m !~ '::'
+						call add(res, m)
+					elseif m =~ '::'.a:base
+						call add(res2, m)
+					endif
+				endfor
+
+				let start_list = res + res2
+
+				let final_list = []
+				for i in start_list
+					if has_key(c_variables, i)
+						let class = ' '
+						if all_values[i] != ''
+							let class = i.' class '
+						endif
+						let final_list += 
+								\ [{'word':i, 
+								\   'info':class.all_values[i], 
+								\   'kind':'v'}]
+					else
+						let final_list += 
+								\ [{'word':substitute(i, '.*::', '', ''), 
+								\   'info':i.all_values[i].')',
+								\   'kind':'f'}]
+					endif
+				endfor
+
+				return final_list
+
+			endif
+
 		endif
 
 		if a:base =~ '^\$'
-			" Complete variables
-			" Built-in variables {{{
-			let g: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':'',
-									\ '$this':''
-									\ }
-			" }}}
-
-			" Internal solution for current file.
-			let file = getline(1, '$')
-			let jfile = join(file, ' ')
-			let int_vals = split(jfile, '\ze\$')
-			let int_vars = {}
-			for i in int_vals
-				if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
-					let val = matchstr(i, 
-							\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
-				else
-					let val = matchstr(i, 
-							\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
-				endif
-				if val != ''
-					let int_vars[val] = ''
-				endif
-			endfor
-
-			call extend(int_vars,g:php_builtin_vars)
-			
-			" ctags has good support for PHP, use tags file for external
-			" variables
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			let ext_vars = {}
-			if fnames != ''
-				let sbase = substitute(a:base, '^\$', '', '')
-				exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					let item = '$'.matchstr(field['text'], '^[^[:space:]]\+')
-					let m_menu = ''
-					" Add -> if it is possible object declaration
-					" How to detect if previous line is help line?
-					if field['text'] =~ item.'\s*=\s*new\s\+'
-						let item = item.'->'
-						let m_menu = matchstr(field['text'], 
-								\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
-					endif
-					let ext_vars[item] = m_menu
-				endfor
-			endif
-
-			call extend(int_vars, ext_vars)
-			let g:a0 = keys(int_vars)
-
-			for m in sort(keys(int_vars))
-				if m =~ '^\'.a:base
-					call add(res, m)
-				endif
-			endfor
-
-			let int_list = res
-
-			let int_dict = []
-			for i in int_list
-				if int_vars[i] != ''
-					let class = ' '
-					if int_vars[i] != ''
-						let class = i.' class '
-					endif
-					let int_dict += [{'word':i, 'info':class.int_vars[i], 'kind':'v'}]
-				else
-					let int_dict += [{'word':i, 'kind':'v'}]
-				endif
-			endfor
-
-			return int_dict
-
+			let adddollar = '$'
 		else
-			" Complete everything else - 
-			"  + functions,  DONE
-			"  + keywords of language DONE
-			"  + defines (constant definitions), DONE
-			"  + extend keywords for predefined constants, DONE
-			"  + classes (after new), DONE
-			"  + limit choice after -> and :: to funcs and vars DONE
-
-			" Internal solution for finding functions in current file.
-			let file = getline(1, '$')
-			call filter(file, 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			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*(\s*\zs.\{-}\ze\s*)\_s*{')
-				let int_functions[f_name.'('] = f_args.')'
-			endfor
-
-			" Prepare list of functions from tags file
-			let ext_functions = {}
-			if fnames != ''
-				exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					" File name
-					let item = matchstr(field['text'], '^[^[:space:]]\+')
-					let fname = matchstr(field['text'], '\t\zs\f\+\ze')
-					let prototype = matchstr(field['text'], 
-							\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
-					let ext_functions[item.'('] = prototype.') - '.fname
-				endfor
+			let adddollar = ''
+		endif
+		let file = getline(1, '$')
+		let jfile = join(file, ' ')
+		let sfile = split(jfile, '\$')
+		let int_vars = {}
+		for i in sfile
+			if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
+				let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
+			else
+				let val = matchstr(i, '^[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
 			endif
-
-			" All functions
-			call extend(int_functions, ext_functions)
-			call extend(int_functions, g:php_builtin_functions)
-
-			" Internal solution for finding constants in current file
-			let file = getline(1, '$')
-			call filter(file, 'v:val =~ "define\\s*("')
-			let jfile = join(file, ' ')
-			let int_values = split(jfile, 'define\s*(\s*')
-			let int_constants = {}
-			for i in int_values
-				let c_name = matchstr(i, '\(["'']\)\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze\1')
-				" let c_value = matchstr(i, 
-				" \ '\(["'']\)[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\1\s*,\s*\zs.\{-}\ze\s*)')
-				if c_name != ''
-					let int_constants[c_name] = '' " c_value
-				endif
-			endfor
-
-			" Prepare list of constants from tags file
-			let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
-			let ext_constants = {}
-			if fnames != ''
-				exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames
-				let qflist = getqflist()
-				for field in qflist
-					let item = matchstr(field['text'], '^[^[:space:]]\+')
-					let ext_constants[item] = ''
-				endfor
+			if val !~ ''
+				let int_vars[adddollar.val] = ''
 			endif
-
-			" All constants
-			call extend(int_constants, ext_constants)
-			" Treat keywords as constants
-
-			let all_values = {}
-
-			" One big dictionary of functions
-			call extend(all_values, int_functions)
-
-			" Add constants
-			call extend(all_values, int_constants)
-			" Add keywords
-			call extend(all_values, b:php_keywords)
-
-			for m in sort(keys(all_values))
-				if m =~ '^'.a:base
-					call add(res, m)
+		endfor
+		
+		" ctags has good support for PHP, use tags file for external
+		" variables
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		let ext_vars = {}
+		if fnames != ''
+			let sbase = substitute(a:base, '^\$', '', '')
+			exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				let item = matchstr(field['text'], '^[^[:space:]]\+')
+				" Add -> if it is possible object declaration
+				let classname = ''
+				if field['text'] =~ item.'\s*=\s*new\s\+'
+					let item = item.'->'
+					let classname = matchstr(field['text'], 
+							\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
 				endif
+				let ext_vars[adddollar.item] = classname
 			endfor
-
-			let int_list = res
-
-			let final_list = []
-			for i in int_list
-				if has_key(int_functions, i)
-					let final_list += 
-							\ [{'word':i, 
-							\   'info':i.int_functions[i],
-							\   'kind':'f'}]
-				elseif has_key(int_constants, i)
-					let final_list += [{'word':i, 'kind':'d'}]
-				else
-					let final_list += [{'word':i}]
-				endif
-			endfor
-
-			return final_list
-
 		endif
 
+		" Now we have all variables in int_vars dictionary
+		call extend(int_vars, ext_vars)
+
+		" Internal solution for finding functions in current file.
+		let file = getline(1, '$')
+		call filter(file, 
+				\ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		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)\_s*{')
+			let int_functions[f_name.'('] = f_args.')'
+		endfor
+
+		" Prepare list of functions from tags file
+		let ext_functions = {}
+		if fnames != ''
+			exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				" File name
+				let item = matchstr(field['text'], '^[^[:space:]]\+')
+				let fname = matchstr(field['text'], '\t\zs\f\+\ze')
+				let prototype = matchstr(field['text'], 
+						\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
+				let ext_functions[item.'('] = prototype.') - '.fname
+			endfor
+		endif
+
+		let all_values = {}
+		call extend(all_values, int_functions)
+		call extend(all_values, ext_functions)
+		call extend(all_values, int_vars) " external variables are already in
+		call extend(all_values, g:php_builtin_object_functions)
+
+		for m in sort(keys(all_values))
+			if m =~ '\(^\|::\)'.a:base
+				call add(res, m)
+			endif
+		endfor
+
+		let start_list = res
+
+		let final_list = []
+		for i in start_list
+			if has_key(int_vars, i)
+				let class = ' '
+				if all_values[i] != ''
+					let class = i.' class '
+				endif
+				let final_list += [{'word':i, 'info':class.all_values[i], 'kind':'v'}]
+			else
+				let final_list += 
+						\ [{'word':substitute(i, '.*::', '', ''), 
+						\   'info':i.all_values[i],
+						\   'kind':'f'}]
+			endif
+		endfor
+
+		return final_list
 	endif
+
+	if a:base =~ '^\$'
+		" Complete variables
+		" Built-in variables {{{
+		let g: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':'',
+								\ '$this':''
+								\ }
+		" }}}
+
+		" Internal solution for current file.
+		let file = getline(1, '$')
+		let jfile = join(file, ' ')
+		let int_vals = split(jfile, '\ze\$')
+		let int_vars = {}
+		for i in int_vals
+			if i =~ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\s*=\s*new'
+				let val = matchstr(i, 
+						\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
+			else
+				let val = matchstr(i, 
+						\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
+			endif
+			if val != ''
+				let int_vars[val] = ''
+			endif
+		endfor
+
+		call extend(int_vars,g:php_builtin_vars)
+		
+		" ctags has support for PHP, use tags file for external variables
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		let ext_vars = {}
+		if fnames != ''
+			let sbase = substitute(a:base, '^\$', '', '')
+			exe 'silent! vimgrep /^'.sbase.'.*\tv\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				let item = '$'.matchstr(field['text'], '^[^[:space:]]\+')
+				let m_menu = ''
+				" Add -> if it is possible object declaration
+				if field['text'] =~ item.'\s*=\s*new\s\+'
+					let item = item.'->'
+					let m_menu = matchstr(field['text'], 
+							\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
+				endif
+				let ext_vars[item] = m_menu
+			endfor
+		endif
+
+		call extend(int_vars, ext_vars)
+		let g:a0 = keys(int_vars)
+
+		for m in sort(keys(int_vars))
+			if m =~ '^\'.a:base
+				call add(res, m)
+			endif
+		endfor
+
+		let int_list = res
+
+		let int_dict = []
+		for i in int_list
+			if int_vars[i] != ''
+				let class = ' '
+				if int_vars[i] != ''
+					let class = i.' class '
+				endif
+				let int_dict += [{'word':i, 'info':class.int_vars[i], 'kind':'v'}]
+			else
+				let int_dict += [{'word':i, 'kind':'v'}]
+			endif
+		endfor
+
+		return int_dict
+
+	else
+		" Complete everything else - 
+		"  + functions,  DONE
+		"  + keywords of language DONE
+		"  + defines (constant definitions), DONE
+		"  + extend keywords for predefined constants, DONE
+		"  + classes (after new), DONE
+		"  + limit choice after -> and :: to funcs and vars DONE
+
+		" Internal solution for finding functions in current file.
+		let file = getline(1, '$')
+		call filter(file, 
+				\ 'v:val =~ "function\\s\\+&\\?[a-zA-Z_\\x7f-\\xff][a-zA-Z_0-9\\x7f-\\xff]*\\s*("')
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		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*(\s*\zs.\{-}\ze\s*)\_s*{')
+			let int_functions[f_name.'('] = f_args.')'
+		endfor
+
+		" Prepare list of functions from tags file
+		let ext_functions = {}
+		if fnames != ''
+			exe 'silent! vimgrep /^'.a:base.'.*\tf\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				" File name
+				let item = matchstr(field['text'], '^[^[:space:]]\+')
+				let fname = matchstr(field['text'], '\t\zs\f\+\ze')
+				let prototype = matchstr(field['text'], 
+						\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
+				let ext_functions[item.'('] = prototype.') - '.fname
+			endfor
+		endif
+
+		" All functions
+		call extend(int_functions, ext_functions)
+		call extend(int_functions, g:php_builtin_functions)
+
+		" Internal solution for finding constants in current file
+		let file = getline(1, '$')
+		call filter(file, 'v:val =~ "define\\s*("')
+		let jfile = join(file, ' ')
+		let int_values = split(jfile, 'define\s*(\s*')
+		let int_constants = {}
+		for i in int_values
+			let c_name = matchstr(i, '\(["'']\)\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze\1')
+			" let c_value = matchstr(i, 
+			" \ '\(["'']\)[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\1\s*,\s*\zs.\{-}\ze\s*)')
+			if c_name != ''
+				let int_constants[c_name] = '' " c_value
+			endif
+		endfor
+
+		" Prepare list of constants from tags file
+		let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+		let ext_constants = {}
+		if fnames != ''
+			exe 'silent! vimgrep /^'.a:base.'.*\td\(\t\|$\)/j '.fnames
+			let qflist = getqflist()
+			for field in qflist
+				let item = matchstr(field['text'], '^[^[:space:]]\+')
+				let ext_constants[item] = ''
+			endfor
+		endif
+
+		" All constants
+		call extend(int_constants, ext_constants)
+		" Treat keywords as constants
+
+		let all_values = {}
+
+		" One big dictionary of functions
+		call extend(all_values, int_functions)
+
+		" Add constants
+		call extend(all_values, int_constants)
+		" Add keywords
+		call extend(all_values, g:php_keywords)
+
+		for m in sort(keys(all_values))
+			if m =~ '^'.a:base
+				call add(res, m)
+			endif
+		endfor
+
+		let int_list = res
+
+		let final_list = []
+		for i in int_list
+			if has_key(int_functions, i)
+				let final_list += 
+						\ [{'word':i, 
+						\   'info':i.int_functions[i],
+						\   'kind':'f'}]
+			elseif has_key(int_constants, i)
+				let final_list += [{'word':i, 'kind':'d'}]
+			else
+				let final_list += [{'word':i}]
+			endif
+		endfor
+
+		return final_list
+
+	endif
+
 endfunction
 
+function! phpcomplete#GetClassName(scontext) " {{{
+	" Get class name
+	" Class name can be detected in few ways:
+	" @var $myVar class
+	" line above
+	" or line in tags file
+
+	let object = matchstr(a:scontext, '\zs[a-zA-Z_0-9\x7f-\xff]\+\ze->')
+	let i = 1
+	while i < line('.')
+		let line = getline(line('.')-i)
+		if line =~ '^\s*\*\/\?\s*$'
+			let i += 1
+			continue
+		else
+			if line =~ '@var\s\+\$'.object.'\s\+[a-zA-Z_0-9\x7f-\xff]\+'
+				let classname = matchstr(line, '@var\s\+\$'.object.'\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+')
+				return classname
+			else
+				break
+			endif
+		endif
+	endwhile
+
+	" OK, first way failed, now check tags file(s)
+	let fnames = join(map(tagfiles(), 'escape(v:val, " \\")'))
+	exe 'silent! vimgrep /^'.object.'.*\$'.object.'.*=\s*new\s\+.*\tv\(\t\|$\)/j '.fnames
+	let qflist = getqflist()
+	if len(qflist) == 0
+		return []
+	endif
+	" In all properly managed projects it should be one item list, even if it
+	" *is* longer we cannot solve conflicts, assume it is first element
+	let classname = matchstr(qflist[0]['text'], '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
+	return classname
+
+endfunction
+" }}}
+function! phpcomplete#GetClassLocation(classname) " {{{
+	" Get class location
+	for fname in tagfiles()
+		let fhead = fnamemodify(fname, ":h")
+		if fhead != ''
+			let psep = '/'
+			let fhead .= psep
+		endif
+		let fname = escape(fname, " \\")
+		exe 'silent! vimgrep /^'.a:classname.'.*\tc\(\t\|$\)/j '.fname
+		let qflist = getqflist()
+		" As in GetClassName we can manage only one element
+		let classlocation = matchstr(qflist[0]['text'], '\t\zs\f\+\ze\t')
+		" And only one class location
+		if classlocation != ''
+			let pset = '/' " Note: slash is potential problem!
+			let classlocation = fhead.classlocation
+			return classlocation
+		endif
+	endfor
+
+endfunction
+" }}}
+
+function! phpcomplete#GetClassContents(file, name) " {{{
+	let cfile = join(a:file, "\n")
+	" We use new buffer and (later) normal! because 
+	" this is the most efficient way. The other way
+	" is to go through the looong string looking for
+	" matching {} 
+	below 1new
+	0put =cfile
+	call search('class\s\+'.a:name)
+	let cfline = line('.')
+	" Catch extends
+	if getline('.') =~ 'extends'
+		let extends_class = matchstr(getline('.'), 
+				\ 'class\s\+'.a:name.'\s\+extends\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
+	else
+		let extends_class = ''
+	endif
+	normal! %
+	let classc = getline(cfline, ".")
+	let classcontent = join(classc, "\n")
+
+	bw! %
+	if extends_class != ''
+		let classlocation = phpcomplete#GetClassLocation(extends_class)
+		if filereadable(classlocation)
+			let classfile = readfile(classlocation)
+			let classcontent .= "\n".phpcomplete#GetClassContents(classfile, extends_class)
+		endif
+	endif
+
+	return classcontent
+endfunction
+" }}}
+
 function! phpcomplete#LoadData() " {{{
 " Keywords/reserved words, all other special things {{{
 " Later it is possible to add some help to values, or type of
 " defined variable
-let b:php_keywords = {
+let g:php_keywords = {
 \ 'PHP_SELF':'',
 \ 'argv':'',
 \ 'argc':'',
diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim
index 123f004..b0415bc 100644
--- a/runtime/autoload/sqlcomplete.vim
+++ b/runtime/autoload/sqlcomplete.vim
@@ -1,8 +1,8 @@
 " Vim completion script
 " Language:    SQL
 " Maintainer:  David Fishburn <fishburn@ianywhere.com>
-" Version:     1.0
-" Last Change: Tue Mar 28 2006 4:39:49 PM
+" Version:     2.0
+" Last Change: Mon Apr 03 2006 10:21:36 PM
 
 " Set completion with CTRL-X CTRL-O to autoloaded function.
 " This check is in place in case this script is
@@ -21,20 +21,20 @@
 let g:loaded_sql_completion = 1
 
 " Maintains filename of dictionary
-let s:sql_file_table             = ""
-let s:sql_file_procedure         = ""
-let s:sql_file_view              = ""
+let s:sql_file_table        = ""
+let s:sql_file_procedure    = ""
+let s:sql_file_view         = ""
 
 " Define various arrays to be used for caching
-let s:tbl_name                   = []
-let s:tbl_alias                  = []
-let s:tbl_cols                   = []
-let s:syn_list                   = []
-let s:syn_value                  = []
+let s:tbl_name              = []
+let s:tbl_alias             = []
+let s:tbl_cols              = []
+let s:syn_list              = []
+let s:syn_value             = []
  
 " Used in conjunction with the syntaxcomplete plugin
-let s:save_inc = ""
-let s:save_exc = ""
+let s:save_inc              = ""
+let s:save_exc              = ""
 if exists('g:omni_syntax_group_include_sql')
     let s:save_inc = g:omni_syntax_group_include_sql
 endif
@@ -43,12 +43,23 @@
 endif
  
 " Used with the column list
-let s:save_prev_table = ""
+let s:save_prev_table       = ""
 
 " Default the option to verify table alias
 if !exists('g:omni_sql_use_tbl_alias')
     let g:omni_sql_use_tbl_alias = 'a'
 endif
+" Default syntax items to precache
+if !exists('g:omni_sql_precache_syntax_groups')
+    let g:omni_sql_precache_syntax_groups = [
+                \ 'syntax',
+                \ 'sqlKeyword',
+                \ 'sqlFunction',
+                \ 'sqlOption',
+                \ 'sqlType',
+                \ 'sqlStatement'
+                \ ]
+endif
 
 " This function is used for the 'omnifunc' option.
 function! sqlcomplete#Complete(findstart, base)
@@ -60,6 +71,8 @@
         let compl_type = b:sql_compl_type
     endif
 
+    " First pass through this function determines how much of the line should
+    " be replaced by whatever is chosen from the completion list
     if a:findstart
         " Locate the start of the item, including "."
         let line = getline('.')
@@ -68,15 +81,16 @@
         while start > 0
             if line[start - 1] =~ '\w'
                 let start -= 1
-            elseif line[start - 1] =~ '\.' && compl_type =~ 'column\|table'
-                " If the completion type is table or column
-                " Then assume we are looking for column completion
-                " column_type can be either 'column' or 'column_csv'
-                if lastword == -1
+            elseif line[start - 1] =~ '\.' && compl_type =~ 'column'
+                " If the completion type is column then assume we are looking
+                " for column completion column_type can be either 
+                " 'column' or 'column_csv'
+                if lastword == -1 && compl_type == 'column'
+                    " Do not replace the table name prefix or alias
+                    " if completing only a single column name
                     let lastword = start
                 endif
                 let start -= 1
-                let b:sql_compl_type = 'column'
             else
                 break
             endif
@@ -92,8 +106,12 @@
         return lastword
     endif
 
+    " Second pass through this function will determine what data to put inside
+    " of the completion list
+    " s:prepended is set by the first pass
     let base = s:prepended . a:base
 
+    " Default the completion list to an empty list
     let compl_list = []
 
     " Default to table name completion
@@ -178,36 +196,8 @@
         let s:tbl_cols  = []
         let s:syn_list  = []
         let s:syn_value = []
-        return []
     else
-        " Default to empty or not found
-        let compl_list = []
-        " Check if we have already cached the syntax list
-        let list_idx = index(s:syn_list, compl_type, 0, &ignorecase)
-        if list_idx > -1
-            " Return previously cached value
-            let compl_list = s:syn_value[list_idx]
-        else
-            " Request the syntax list items from the 
-            " syntax completion plugin
-            if compl_type == 'syntax'
-                " Handle this special case.  This allows the user
-                " to indicate they want all the syntax items available,
-                " so do not specify a specific include list.
-                let g:omni_syntax_group_include_sql = ''
-            else
-                " The user has specified a specific syntax group
-                let g:omni_syntax_group_include_sql = compl_type
-            endif
-            let g:omni_syntax_group_exclude_sql = ''
-            let syn_value                       = OmniSyntaxList()
-            let g:omni_syntax_group_include_sql = s:save_inc
-            let g:omni_syntax_group_exclude_sql = s:save_exc
-            " Cache these values for later use
-            let s:syn_list  = add( s:syn_list,  compl_type )
-            let s:syn_value = add( s:syn_value, syn_value )
-            let compl_list  = syn_value
-        endif
+        let compl_list = s:SQLCGetSyntaxList(compl_type)
     endif
 
     if base != ''
@@ -217,6 +207,10 @@
         let compl_list = filter(copy(compl_list), expr)
     endif
 
+    if exists('b:sql_compl_savefunc') && b:sql_compl_savefunc != ""
+        let &omnifunc = b:sql_compl_savefunc
+    endif
+
     return compl_list
 endfunc
 
@@ -232,6 +226,70 @@
     echohl None
 endfunction
       
+function! sqlcomplete#PreCacheSyntax(...)
+    let syn_group_arr = []
+    if a:0 > 0 
+        let syn_group_arr = a:1
+    else
+        let syn_group_arr = g:omni_sql_precache_syntax_groups
+    endif
+    if !empty(syn_group_arr)
+        for group_name in syn_group_arr
+            call s:SQLCGetSyntaxList(group_name)
+        endfor
+    endif
+endfunction
+
+function! sqlcomplete#Map(type)
+    " Tell the SQL plugin what you want to complete
+    let b:sql_compl_type=a:type
+    " Record previous omnifunc, if the SQL completion
+    " is being used in conjunction with other filetype
+    " completion plugins
+    if &omnifunc != "" && &omnifunc != 'sqlcomplete#Complete'
+        " Record the previous omnifunc, the plugin
+        " will automatically set this back so that it
+        " does not interfere with other ftplugins settings
+        let b:sql_compl_savefunc=&omnifunc
+    endif
+    " Set the OMNI func for the SQL completion plugin
+    let &omnifunc='sqlcomplete#Complete'
+endfunction
+
+function! s:SQLCGetSyntaxList(syn_group)
+    let syn_group  = a:syn_group
+    let compl_list = []
+
+    " Check if we have already cached the syntax list
+    let list_idx = index(s:syn_list, syn_group, 0, &ignorecase)
+    if list_idx > -1
+        " Return previously cached value
+        let compl_list = s:syn_value[list_idx]
+    else
+        " Request the syntax list items from the 
+        " syntax completion plugin
+        if syn_group == 'syntax'
+            " Handle this special case.  This allows the user
+            " to indicate they want all the syntax items available,
+            " so do not specify a specific include list.
+            let g:omni_syntax_group_include_sql = ''
+        else
+            " The user has specified a specific syntax group
+            let g:omni_syntax_group_include_sql = syn_group
+        endif
+        let g:omni_syntax_group_exclude_sql = ''
+        let syn_value                       = OmniSyntaxList()
+        let g:omni_syntax_group_include_sql = s:save_inc
+        let g:omni_syntax_group_exclude_sql = s:save_exc
+        " Cache these values for later use
+        let s:syn_list  = add( s:syn_list,  syn_group )
+        let s:syn_value = add( s:syn_value, syn_value )
+        let compl_list  = syn_value
+    endif
+
+    return compl_list
+endfunction
+
 function! s:SQLCCheck4dbext()
     if !exists('g:loaded_dbext')
         let msg = "The dbext plugin must be loaded for dynamic SQL completion"
diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim
index 41a006e..2fc7ef6 100644
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -1,6 +1,6 @@
 " tar.vim: Handles browsing tarfiles
 "            AUTOLOAD PORTION
-" Date:			Dec 24, 2005
+" Date:			Mar 27, 2006
 " Version:		7
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " License:		Vim License  (see vim's :help license)
@@ -25,6 +25,7 @@
  finish
 endif
 let g:loaded_tar= "v7"
+"call Decho("loading autoload/tar.vim")
 
 " ---------------------------------------------------------------------
 "  Default Settings: {{{1
@@ -34,6 +35,9 @@
 if !exists("g:tar_readoptions")
  let g:tar_readoptions= "OPxf"
 endif
+if !exists("g:tar_cmd")
+ let g:tar_cmd= "tar"
+endif
 if !exists("g:tar_writeoptions")
  let g:tar_writeoptions= "uf"
 endif
@@ -50,14 +54,15 @@
   set report=10
 
   " sanity checks
-  if !executable("tar")
-   echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
+  if !executable(g:tar_cmd)
+   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Browse")
    return
   endif
   if !filereadable(a:tarfile)
+"   call Decho('a:tarfile<'.a:tarfile.'> not filereadable')
    if a:tarfile !~# '^\a\+://'
     " if its an url, don't complain, let url-handlers such as vim do its thing
     echohl Error | echo "***error*** (tar#Browse) File not readable<".a:tarfile.">" | echohl None
@@ -80,20 +85,33 @@
   set ft=tar
 
   " give header
+"  call Decho("printing header")
   exe "$put ='".'\"'." tar.vim version ".g:loaded_tar."'"
   exe "$put ='".'\"'." Browsing tarfile ".a:tarfile."'"
   exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
   0d
   $
 
-  if a:tarfile =~# '\.\(gz\|tgz\)$'
-   exe "silent r! gzip -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
-  elseif a:tarfile =~# '\.bz2$'
-   exe "silent r! bzip2 -d -c '".a:tarfile."'| tar -".g:tar_browseoptions." - "
-  else
-   exe "silent r! tar -".g:tar_browseoptions." '".a:tarfile."'"
+  let tarfile= a:tarfile
+  if has("win32") && executable("cygpath")
+   " assuming cygwin
+   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
   endif
-  silent %g@/$@d
+  if tarfile =~# '\.\(gz\|tgz\)$'
+"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
+   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
+  elseif tarfile =~# '\.bz2$'
+"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - ")
+   exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_browseoptions." - "
+  else
+"   call Decho("exe silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'")
+   exe "silent r! ".g:tar_cmd." -".g:tar_browseoptions." '".tarfile."'"
+  endif
+  if v:shell_error != 0
+   echohl Error | echo '***error*** (tar#Browse) while browsing; check your g:tar_browseoptions<".g:tar_browseoptions.">"
+"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
+   return
+  endif
 
   setlocal noma nomod ro
   noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
@@ -121,12 +139,21 @@
   " about to make a new window, need to use w:tarfile
   let tarfile= w:tarfile
   let curfile= expand("%")
+  if has("win32") && executable("cygpath")
+   " assuming cygwin
+   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
+  endif
 
   new
   wincmd _
   let s:tblfile_{winnr()}= curfile
-"  call Decho("exe e tarfile:".tarfile.':'.fname)
-  exe "e tarfile:".tarfile.':'.fname
+"  if has("unix")
+""   call Decho("exe e tarfile:".tarfile.':'.fname)
+"   exe "e tarfile:".tarfile.':'.fname
+"  elseif has("win32")
+"   call tar#Read("tarfile:".tarfile.':'.fname,1)
+"  endif
+  call tar#Read("tarfile:".tarfile.':'.fname,1)
   filetype detect
 
   let &report= repkeep
@@ -141,7 +168,12 @@
   set report=10
   let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
   let fname   = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
-"  call Decho("tarfile<".tarfile."> fname<".fname.">")
+  if has("win32") && executable("cygpath")
+   " assuming cygwin
+   let tarfile=substitute(system("cygpath -u ".tarfile),'\n$','','e')
+  endif
+"  call Decho("tarfile<".tarfile.">")
+"  call Decho("fname<".fname.">")
 
   if tarfile =~# '\.\(gz\|tgz\)$'
 "   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
@@ -151,7 +183,7 @@
    exe "silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
   else
 "   call Decho("exe silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'")
-   exe "silent r! tar -".g:tar_readoptions." '".tarfile."' '".fname."'"
+   exe "silent r! ".g:tar_cmd." -".g:tar_readoptions." '".tarfile."' '".fname."'"
   endif
   let w:tarfile= a:fname
   exe "file tarfile:".fname
@@ -172,8 +204,8 @@
   set report=10
 
   " sanity checks
-  if !executable("tar")
-   echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
+  if !executable(g:tar_cmd)
+   echohl Error | echo '***error*** (tar#Browse) "'.g:tar_cmd.'" not available on your system'
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    let &report= repkeep
 "   call Dret("tar#Write")
diff --git a/runtime/autoload/vimball.vim b/runtime/autoload/vimball.vim
index 6fa9a0d..86f0e88 100644
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
 " vimball : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" Date:   Mar 22, 2006
-" Version: 5
+" Date:   Mar 31, 2006
+" Version: 6
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -15,7 +15,7 @@
  finish
 endif
 let s:keepcpo        = &cpo
-let g:loaded_vimball = "v5"
+let g:loaded_vimball = "v6"
 set cpo&vim
 
 " =====================================================================
@@ -190,7 +190,7 @@
 "   call Decho("yanked ".fsize." lines into register-a")
 
 "   call Decho("didhelp<".didhelp."> fname<".fname.">")
-   if didhelp == "" && fname =~ 'doc/[^/]\+\.txt$'
+   if a:really && didhelp == "" && fname =~ 'doc/[^/]\+\.txt$'
    	let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','e')
 "	call Decho("didhelp<".didhelp.">")
    endif
diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim
index 2551cae..582dc10 100644
--- a/runtime/autoload/xmlcomplete.vim
+++ b/runtime/autoload/xmlcomplete.vim
@@ -1,13 +1,13 @@
 " Vim completion script
 " Language:	XML
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2006 Mar 19
+" Last Change:	2006 Mar 31
 
 " This function will create Dictionary with users namespace strings and values
 " canonical (system) names of data files.  Names should be lowercase,
 " descriptive to avoid any future conflicts. For example 'xhtml10s' should be
 " name for data of XHTML 1.0 Strict and 'xhtml10t' for XHTML 1.0 Transitional
-" User interface will be provided by XMLns command defined ...
+" User interface will be provided by XMLns command defined in ftplugin/xml.vim
 " Currently supported canonicals are:
 " xhtml10s - XHTML 1.0 Strict
 " xsl      - XSL
@@ -224,8 +224,13 @@
 			let attrs = ['encoding', 'version="1.0"', 'version']
 		elseif tag =~ '^!'
 			" Don't make completion at all
+			"
 			return []
 		else
+            if !has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, tag)
+				" Abandon when data file isn't complete
+ 				return []
+ 			endif
 			let attrs = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1])
 		endif
 
@@ -324,6 +329,10 @@
 	    let tags = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]})
 		call filter(tags, 'v:val !~ "^vimxml"')
 	else
+		if !has_key(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}, tag)
+			" Abandon when data file isn't complete
+			return []
+		endif
 		let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
 	endif
 
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index 99bdd79..6790f4f 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -75,11 +75,15 @@
   0d
   $
 
-"  call Decho("exe silent r! unzip -l '".escape(a:zipfile,s:zipfile_escape)."'")
-  exe "silent r! unzip -l ".escape(a:zipfile,s:zipfile_escape)
+"  call Decho("exe silent r! unzip -l '".a:zipfile."'")
+  exe "silent r! unzip -l '".a:zipfile."'"
+"  call Decho("line 6: ".getline(6))
+  let namecol= stridx(getline(6),'Name') + 1
+"  call Decho("namecol=".namecol)
+  4,$g/^\s*----/d
+  4,$g/^\s*\a/d
   $d
-  silent 4,$v/^\s\+\d\+\s\{0,5}\d/d
-  silent  4,$s/^\%(.*\)\s\+\(\S\)/\1/
+  exe 'silent 4,$s/^.*\%'.namecol.'c//'
 
   setlocal noma nomod ro
   noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
@@ -114,15 +118,15 @@
 
   " get zipfile to the new-window
   let zipfile= substitute(w:zipfile,'.zip$','','e')
-  let curfile= escape(expand("%"),s:zipfile_escape)
+  let curfile= expand("%")
 "  call Decho("zipfile<".zipfile.">")
 "  call Decho("curfile<".curfile.">")
 
   new
   wincmd _
   let s:zipfile_{winnr()}= curfile
-"  call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).':'.fname)
-  exe "e zipfile:".escape(zipfile,s:zipfile_escape).':'.fname
+"  call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).':'.escape(fname,s:zipfile_escape))
+  exe "e zipfile:".escape(zipfile,s:zipfile_escape).':'.escape(fname,s:zipfile_escape)
   filetype detect
 
   let &report= repkeep
@@ -140,8 +144,8 @@
   let fname   = substitute(a:fname,'zipfile:.\{-}:\([^\\].*\)$','\1','')
 "  call Decho("zipfile<".zipfile."> fname<".fname.">")
 
-"  call Decho("exe r! unzip -p '".escape(zipfile,s:zipfile_escape)."' ".fname)
-  exe "r! unzip -p ".escape(zipfile,s:zipfile_escape)." ".fname
+"  call Decho("exe r! unzip -p '".zipfile."' '".fname."'")
+  exe "silent r! unzip -p '".zipfile."' '".fname."'"
 
   " cleanup
   0d
@@ -154,7 +158,7 @@
 " ---------------------------------------------------------------------
 " zip#Write: {{{2
 fun! zip#Write(fname)
-"  call Dfunc("zip#Write(fname<".a:fname.") zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
+"  call Dfunc("zip#Write(fname<".a:fname.">) zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
   let repkeep= &report
   set report=10
 
@@ -211,6 +215,7 @@
    if executable("cygpath")
     let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
    endif
+"   call Decho("mkdir(dirpath<".dirpath.">,p)")
    call mkdir(dirpath,"p")
   endif
   if zipfile !~ '/'
@@ -218,13 +223,13 @@
   endif
 "  call Decho("zipfile<".zipfile."> fname<".fname.">")
 
-  exe "w! ".fname
+  exe "w! ".escape(fname,s:zipfile_escape)
   if executable("cygpath")
    let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
   endif
 
-"  call Decho("zip -u ".zipfile.".zip ".fname)
-  call system("zip -u ".zipfile.".zip ".fname)
+"  call Decho("zip -u '".zipfile.".zip' '".fname."'")
+  call system("zip -u '".zipfile.".zip' '".fname."'")
   if v:shell_error != 0
    echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 6932e81..317518d 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0c.  Last change: 2006 Mar 15
+*autocmd.txt*   For Vim version 7.0c.  Last change: 2006 Apr 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -510,6 +510,10 @@
 				just before the change is applied to the text.
 				WARNING: If the autocommand moves the cursor
 				the effect of the change is undefined.
+							*E788*
+				It is not allowed to change to another buffer
+				here.  You can reload the buffer but not edit
+				another one.
 							*FileChangedShell*
 FileChangedShell		When Vim notices that the modification time of
 				a file has changed since editing started.
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index 3df513e..21b2f3a 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.0c.  Last change: 2006 Mar 15
+*diff.txt*      For Vim version 7.0c.  Last change: 2006 Apr 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -272,6 +272,10 @@
 Note that deleted lines are displayed, but not counted as text lines.  You
 can't move the cursor into them.  To fill the deleted lines with the lines
 from another buffer use ":diffget" on the line below them.
+								*E787*
+When the buffer that is about to be modified is read-only and the autocommand
+that is triggered by |FileChangedRO| changes buffers the command will fail.
+The autocommand must not change buffers.
 
 The [bufspec] argument above can be a buffer number, a pattern for a buffer
 name or a part of a buffer name.  Examples:
diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt
index 7a67a69..eecdd86 100644
--- a/runtime/doc/editing.txt
+++ b/runtime/doc/editing.txt
@@ -1,4 +1,4 @@
-*editing.txt*   For Vim version 7.0c.  Last change: 2006 Mar 06
+*editing.txt*   For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -422,14 +422,18 @@
 The [++opt] argument can be used to force the value of 'fileformat',
 'fileencoding' or 'binary' to a value for one command, and to specify the
 behavior for bad characters.  The form is: >
+	++{optname}
+Or: >
 	++{optname}={value}
 
-Where {optname} is one of:		*++ff* *++enc* *++bin* *++nobin*
+Where {optname} is one of:	    *++ff* *++enc* *++bin* *++nobin* *++edit*
     ff     or  fileformat   overrides 'fileformat'
     enc    or  encoding	    overrides 'fileencoding'
     bin    or  binary	    sets 'binary'
     nobin  or  nobinary	    resets 'binary'
     bad                     specifies behavior for bad characters
+    edit		    for |:read| only: keep option values as if editing
+    			    a file
 
 {value} cannot contain white space.  It can be any valid value for these
 options.  Examples: >
@@ -897,6 +901,7 @@
 			The [!] is needed to overwrite an existing file.
 			When 'filetype' is empty filetype detection is done
 			with the new name, before the file is written.
+			When the write was successful 'readonly' is reset.
 			{not in Vi}
 
 							*:up* *:update*
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 81463b4..b830ca0 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0c.  Last change: 2006 Mar 29
+*eval.txt*      For Vim version 7.0c.  Last change: 2006 Apr 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -110,8 +110,8 @@
 	:let Fn = function("MyFunc")
 	:echo Fn()
 <							*E704* *E705* *E707*
-A Funcref variable must start with a capital, "s:", "w:" or "b:".  You cannot
-have both a Funcref variable and a function with the same name.
+A Funcref variable must start with a capital, "s:", "w:", "t:" or "b:".  You
+cannot have both a Funcref variable and a function with the same name.
 
 A special case is defining a function and directly assigning its Funcref to a
 Dictionary entry.  Example: >
@@ -504,7 +504,7 @@
 It is also possible to add a function without the "dict" attribute as a
 Funcref to a Dictionary, but the "self" variable is not available then.
 
-						*numbered-function*
+				*numbered-function* *anonymous-function*
 To avoid the extra name for the function it can be defined and directly
 assigned to a Dictionary in this way: >
 	:let mydict = {'data': [0, 1, 2, 3]}
@@ -1030,6 +1030,7 @@
 		(nothing) In a function: local to a function; otherwise: global
 |buffer-variable|    b:	  Local to the current buffer.
 |window-variable|    w:	  Local to the current window.
+|tabpage-variable|   t:	  Local to the current tab page.
 |global-variable|    g:	  Global.
 |local-variable|     l:	  Local to a function.
 |script-variable|    s:	  Local to a |:source|'ed Vim script.
@@ -1063,6 +1064,11 @@
 A variable name that is preceded with "w:" is local to the current window.  It
 is deleted when the window is closed.
 
+						*tabpage-variable* *t:var*
+A variable name that is preceded with "t:" is local to the current tab page,
+It is deleted when the tab page is closed. {not available when compiled
+without the +windows feature}
+
 						*global-variable* *g:var*
 Inside functions global variables are accessed with "g:".  Omitting this will
 access a variable local to a function.  But "g:" can also be used in any other
@@ -1628,6 +1634,7 @@
 				String	check for mappings matching {name}
 match( {expr}, {pat}[, {start}[, {count}]])
 				Number	position where {pat} matches in {expr}
+matcharg( {nr})			List	arguments of |:match|
 matchend( {expr}, {pat}[, {start}[, {count}]])
 				Number	position where {pat} ends in {expr}
 matchlist( {expr}, {pat}[, {start}[, {count}]])
@@ -1641,6 +1648,7 @@
 mode()				String	current editing mode
 nextnonblank( {lnum})		Number	line nr of non-blank line >= {lnum}
 nr2char( {expr})		String	single char with ASCII value {expr}
+pathshorten( {expr})		String	shorten directory names in a path
 prevnonblank( {lnum})		Number	line nr of non-blank line <= {lnum}
 printf( {fmt}, {expr1}...)	String  format text
 pumvisible()			Number  whether popup menu is visible
@@ -2252,6 +2260,9 @@
 		extension.
 		On MS-DOS and MS-Windows it only checks if the file exists and
 		is not a directory, not if it's really executable.
+		On MS-Windows an executable in the same directory as Vim is
+		always found.  Since this directory is added to $PATH it
+		should also work to execute it |win32-PATH|.
 		The result is a Number:
 			1	exists
 			0	does not exist
@@ -2720,10 +2731,10 @@
 		Otherwise the actual font name is returned, or {name} if the
 		GUI does not support obtaining the real name.
 		Only works when the GUI is running, thus not you your vimrc or
-		Note that the GTK 2 GUI accepts any font name, thus checking
-		for a valid name does not work.
 		gvimrc file.  Use the |GUIEnter| autocommand to use this
 		function just after the GUI has started.
+		Note that the GTK 2 GUI accepts any font name, thus checking
+		for a valid name does not work.
 
 getfperm({fname})					*getfperm()*
 		The result is a String, which is the read, write, and execute
@@ -3137,9 +3148,9 @@
 		NOTE: Command-line completion is not supported.
 
 inputlist({textlist})					*inputlist()*
-		{textlist} must be a list of strings.  This list is displayed,
-		one string per line.  The user will be prompted to enter a
-		number, which is returned.
+		{textlist} must be a |List| of strings.  This |List| is
+		displayed, one string per line.  The user will be prompted to
+		enter a number, which is returned.
 		The user can also select an item by clicking on it with the
 		mouse.  For the first string 0 is returned.  When clicking
 		above the first item a negative number is returned.  When
@@ -3196,7 +3207,7 @@
 		exist, or isn't a directory, the result is FALSE.  {directory}
 		is any expression, which is used as a String.
 
-islocked({expr})					*islocked()*
+islocked({expr})					*islocked()* *E786*
 		The result is a Number, which is non-zero when {expr} is the
 		name of a locked variable.
 		{expr} must be the name of a variable, |List| item or
@@ -3479,6 +3490,18 @@
 		the pattern.  'smartcase' is NOT used.  The matching is always
 		done like 'magic' is set and 'cpoptions' is empty.
 
+
+matcharg({nr})							*matcharg()*
+		Selects the {nr} match item, as set with a |:match|, 
+		|:2match| or |:3match| command.
+		Return a |List| with two elements:
+			The name of the highlight group used
+			The pattern used.
+		When {nr} is not 1, 2 or 3 returns an empty |List|.
+		When there is no match item set returns ['', ''].
+		This is usef to save and restore a |:match|.
+
+
 matchend({expr}, {pat}[, {start}[, {count}]])			*matchend()*
 		Same as match(), but return the index of first character after
 		the match.  Example: >
@@ -3598,6 +3621,15 @@
 			call setpos('.', save_cursor)
 <		Also see |setpos()|.
 
+pathshorten({expr})					*pathshorten()*
+		Shorten directory names in the path {expr} and return the
+		result.  The tail, the file name, is kept as-is.  The other
+		components in the path are reduced to single letters.  Leading
+		'~' and '.' characters are kept.  Example: >
+			:echo pathshorten('~/.vim/autoload/myfile.vim')
+<			~/.v/a/myfile.vim ~
+		It doesn't matter if the path exists or not.
+
 prevnonblank({lnum})					*prevnonblank()*
 		Return the line number of the first line at or above {lnum}
 		that is not blank.  Example: >
@@ -5036,7 +5068,6 @@
 gui_athena		Compiled with Athena GUI.
 gui_gtk			Compiled with GTK+ GUI (any version).
 gui_gtk2		Compiled with GTK+ 2 GUI (gui_gtk is also defined).
-gui_kde			Compiled with KDE GUI |KVim|
 gui_mac			Compiled with Macintosh GUI.
 gui_motif		Compiled with Motif GUI.
 gui_photon		Compiled with Photon GUI.
@@ -5654,6 +5685,7 @@
 			  g:	global variables
 			  b:	local buffer variables
 			  w:	local window variables
+			  t:	local tab page variables
 			  s:	script-local variables
 			  l:	local function variables
 			  v:	Vim variables.
@@ -5711,8 +5743,8 @@
 
 			Note that when two variables refer to the same |List|
 			and you lock one of them, the |List| will also be
-			locked when used through the other variable.  Example:
-			>
+			locked when used through the other variable.
+			Example: >
 				:let l = [0, 1, 2, 3]
 				:let cl = l
 				:lockvar l
diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt
index d838680..cd25c19 100644
--- a/runtime/doc/gui.txt
+++ b/runtime/doc/gui.txt
@@ -1,4 +1,4 @@
-*gui.txt*       For Vim version 7.0c.  Last change: 2006 Mar 20
+*gui.txt*       For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -36,6 +36,10 @@
 |gui-x11-start|.
 
 					*gui-init* *gvimrc* *.gvimrc* *_gvimrc*
+The gvimrc file is where GUI-specific startup commands should be placed.  It
+is always sourced after the |vimrc| file.  If you have one then the $MYGVIMRC
+environment variable has its name.
+
 When the GUI starts up initializations are carried out, in this order:
 - The 'term' option is set to "builgin_gui" and terminal options are reset to
   their default value for the GUI |terminal-options|.
@@ -66,6 +70,8 @@
   - For Win32, when $HOME is not set, "$VIM\_gvimrc" is used.
   - When a "_gvimrc" file is not found, ".gvimrc" is tried too.  And vice
     versa.
+  The name of the first file found is stored in $MYGVIMRC, unless it was
+  already set.
 - If the 'exrc' option is set (which is NOT the default) the file ./.gvimrc
   is sourced, if it exists and isn't the same file as the system or user
   gvimrc file.  If this file is not owned by you, some security restrictions
diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt
index 7e0ec1e..18fdf60 100644
--- a/runtime/doc/hangulin.txt
+++ b/runtime/doc/hangulin.txt
@@ -1,4 +1,4 @@
-*hangulin.txt*  For Vim version 7.0c.  Last change: 2005 Mar 29
+*hangulin.txt*  For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Chi-Deok Hwang and Sung-Hyun Nam
@@ -48,7 +48,7 @@
 
 Hangul Fonts
 ------------
-You can set text font using $HOME/.Xdefaults or $HOME/.gvimrc.
+You can set text font using $HOME/.Xdefaults or in your gvimrc file.
 But to use Hangul, you should set 'guifontset' in your vimrc.
 
 $HOME/.Xdefaults: >
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index d99f21f..229220f 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -1,4 +1,4 @@
-*help.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*help.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 			VIM - main help file
 									 k
@@ -85,7 +85,7 @@
 |usr_90.txt|  Installing Vim
 
 
-REFERENCE MANUAL: These files explain every detail of Vim.	*ref-toc*
+REFERENCE MANUAL: These files explain every detail of Vim.	*reference_toc*
 
 General subjects ~
 |intro.txt|	general introduction to Vim; notation used in help files
@@ -195,6 +195,12 @@
 |pi_zip.txt|	Zip archive explorer
 
 LOCAL ADDITIONS:				*local-additions*
+|cecutil.txt|	DrChip's Utilities				Jun 11, 2004
+|example.txt|	Example for a locally added help file
+|matchit.txt|   Extended "%" matching
+|test.txt|	Testing the hélp cömmånd nôw
+|typecorr.txt|	Plugin for correcting typing mistakes
+|helpp.txt|	Dummy line to avoid an error message
 
 ------------------------------------------------------------------------------
 *bars*		Bars example
diff --git a/runtime/doc/howto.txt b/runtime/doc/howto.txt
index f8f7543..f6b81a8 100644
--- a/runtime/doc/howto.txt
+++ b/runtime/doc/howto.txt
@@ -1,4 +1,4 @@
-*howto.txt*	For Vim version 7.0c.  Last change: 2001 Sep 03
+*howto.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -75,7 +75,7 @@
 |auto-setting|		set options automatically
 |term-dependent-settings| set options depending on terminal name
 |save-settings|		save settings
-|:quote|		comment my exrc/vimrc/gvimrc files
+|:quote|		comment my .vim files
 |'helpheight'|		change the default help height
 |'highlight'|		set various highlighting modes
 |'title'|		set the window title
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 4eb4bcf..417a4b3 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0c.  Last change: 2006 Mar 29
+*insert.txt*    For Vim version 7.0c.  Last change: 2006 Apr 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1004,10 +1004,12 @@
 Each list item can either be a string or a Dictionary.  When it is a string it
 is used as the completion.  When it is a Dictionary it can contain these
 items:
-	word		the completion, mandatory
-	abbr		abbreviation of "word", to be used in the menu
-	menu		extra text for the popup menu
-	info		more information about the item
+	word		the text that will be inserted, mandatory
+	abbr		abbreviation of "word"; when not empty it is used in
+			the menu instead of "word"
+	menu		extra text for the popup menu, after "word" or "abbr"
+	info		more information about the item, can be displayed in a
+			preview window
 	kind		single letter indicating the type of completion
 	icase		when non-zero case is to be ignored; when omitted
 			the 'ignorecase' option is used
@@ -1291,6 +1293,14 @@
 - after $ variables name
   - if variable was declared as object add "->", if tags file is available show
     name of class
+  - after "->" complete only function and variable names specific for given
+    class. To find class location and contents tags file is required. Because
+    PHP isn't strongly typed language user can use @var tag to declare class: >
+
+    	/* @var $myVar myClass */
+	$myVar->
+<
+    Still, to find myClass contents tags file is required.
 
 - function names with additonal info:
   - in case of built-in functions list of possible arguments and after | type
@@ -1375,6 +1385,12 @@
 with data pulled directly from within a database.  For detailed instructions
 and a tutorial see |omni-sql-completion|.
 
+The SQL completion plugin can be used in conjunction with other completion
+plugins.  For example, the PHP filetype has it's own completion plugin.
+Since PHP is often used to generate dynamic website by accessing a database,
+the SQL completion plugin can also be enabled.  This allows you to complete
+PHP code and SQL code at the same time.
+
 
 XML							*ft-xml-omni*
 
@@ -1634,11 +1650,15 @@
 10. Inserting a file					*inserting-file*
 
 							*:r* *:re* *:read*
-:r[ead] [name]		Insert the file [name] (default: current file) below
+:r[ead] [++opt] [name]
+			Insert the file [name] (default: current file) below
 			the cursor.
+			See |++opt| for the possible values of [++opt].
 
-:{range}r[ead] [name]	Insert the file [name] (default: current file) below
+:{range}r[ead] [++opt] [name]
+			Insert the file [name] (default: current file) below
 			the specified line.
+			See |++opt| for the possible values of [++opt].
 
 							*:r!* *:read!*
 :r[ead] !{cmd}		Execute {cmd} and insert its standard output below
@@ -1663,6 +1683,14 @@
 used, for example, when you want to edit that file instead: ":e! #".  This can
 be switched off by removing the 'a' flag from the 'cpoptions' option.
 
+Of the [++opt] arguments one is specifically for ":read", the ++edit argument.
+This is useful when the ":read" command is actually used to read a file into
+the buffer as if editing that file.  Use this command in an empty buffer: >
+	:read ++edit filename
+The effect is that the 'fileformat', 'fileencoding', 'bomb', etc. options are
+set to what has been detected for "filename".  Note that a single empty line
+remains, you may want to delete it.
+
 							*file-read*
 The 'fileformat' option sets the <EOL> style for a file:
 'fileformat'    characters	   name				~
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 74b2f8e..3b6934b 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.0c.  Last change: 2006 Mar 29
+*mbyte.txt*     For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -985,7 +985,7 @@
     This works in the same way when using XIM.
 
     You can select cursor color when status is on by using highlight group
-    CursorIM.  For example, add these lines to your _gvimrc: >
+    CursorIM.  For example, add these lines to your |gvimrc|: >
 
 	if has('multi_byte_ime')
 	    highlight Cursor guifg=NONE guibg=Green
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index f176566..b04bb55 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0c.  Last change: 2006 Mar 29
+*options.txt*	For Vim version 7.0c.  Last change: 2006 Apr 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -684,8 +684,7 @@
 	or selected.
 	This option is provided for backward compatibility with the Vim
 	released with Sun ONE Studio 4 Enterprise Edition.
-	Note: When this option is on some plugins may not work.  The directory
-	browser sets if off.
+	Note: When this option is on some plugins may not work.
 
 				*'arabic'* *'arab'* *'noarabic'* *'noarab'*
 'arabic' 'arab'		boolean (default off)
@@ -1488,8 +1487,8 @@
 	|fold-marker|.
 
 			*'compatible'* *'cp'* *'nocompatible'* *'nocp'*
-'compatible' 'cp'	boolean	(default on, off when a .vimrc or .gvimrc file
-								is found)
+'compatible' 'cp'	boolean	(default on, off when a |vimrc| or |gvimrc|
+								file is found)
 			global
 			{not in Vi}
 	This option has the effect of making Vim either more Vi-compatible, or
@@ -1504,10 +1503,10 @@
 	options.  This default was chosen for those people who want to use Vim
 	just like Vi, and don't even (want to) know about the 'compatible'
 	option.
-	When a ".vimrc" or ".gvimrc" file is found while Vim is starting up,
+	When a |vimrc| or |gvimrc| file is found while Vim is starting up,
 	this option is switched off, and all options that have not been
 	modified will be set to the Vim defaults.  Effectively, this means
-	that when a ".vimrc" or ".gvimrc" file exists, Vim will use the Vim
+	that when a |vimrc| or |gvimrc| file exists, Vim will use the Vim
 	defaults, otherwise it will use the Vi defaults.  (Note: This doesn't
 	happen for the system-wide vimrc or gvimrc file).  Also see
 	|compatible-default| and |posix-compliance|.
@@ -2719,6 +2718,8 @@
 <	This is similar to the default, except that these characters will also
 	be used when there is highlighting.
 
+	for "stl" and "stlnc" only single-byte values are supported.
+
 	The highlighting used for these items:
 	  item		highlight group ~
 	  stl:c		StatusLine		|hl-StatusLine|
@@ -2894,6 +2895,7 @@
 		quickfix	":cn", ":crew", ":make", etc.
 		search		search for a pattern: "/", "n", "*", "gd", etc.
 				(not for a search pattern in a ":" command)
+				Also for |[s| and |]s|.
 		tag		jumping to a tag: ":ta", CTRL-T, etc.
 		undo		undo or redo: "u" and CTRL-R
 	When the command is part of a mapping this option is not used.  Add
@@ -3332,7 +3334,7 @@
 		can use "gvim -f" or ":gui -f" to start the GUI in the
 		foreground.  |gui-fork|
 		Note: Set this option in the vimrc file.  The forking may have
-		happened already when the gvimrc file is read.
+		happened already when the |gvimrc| file is read.
 
 	  'i'	Use a Vim icon.  For GTK with KDE it is used in the left-upper
 		corner of the window.  It's black&white on non-GTK, because of
@@ -3341,7 +3343,7 @@
 	  'm'	Menu bar is present.
 	  'M'	The system menu "$VIMRUNTIME/menu.vim" is not sourced.  Note
 		that this flag must be added in the .vimrc file, before
-		switching on syntax or filetype recognition (when the .gvimrc
+		switching on syntax or filetype recognition (when the |gvimrc|
 		file is sourced the system menu has already been loaded; the
 		":syntax on" and ":filetype on" commands load the menu too).
 	  'g'	Grey menu items: Make menu items that are not active grey.  If
@@ -3374,7 +3376,7 @@
 	  'p'	Use Pointer callbacks for X11 GUI.  This is required for some
 		window managers.  If the cursor is not blinking or hollow at
 		the right moment, try adding this flag.  This must be done
-		before starting the GUI.  Set it in your gvimrc.  Adding or
+		before starting the GUI.  Set it in your |gvimrc|.  Adding or
 		removing it after the GUI has started has no effect.
 	  'F'	Add a footer.  Only for Motif.  See |gui-footer|.
 
@@ -3469,7 +3471,7 @@
 				     "8:SpecialKey,@:NonText,d:Directory,
 				     e:ErrorMsg,i:IncSearch,l:Search,m:MoreMsg,
 				     M:ModeMsg,n:LineNr,r:Question,
-				     s:StatusLine,S:StatusLineNC,c:VertSplit
+				     s:StatusLine,S:StatusLineNC,c:VertSplit,
 				     t:Title,v:Visual,w:WarningMsg,W:WildMenu,
 				     f:Folded,F:FoldColumn,A:DiffAdd,
 				     C:DiffChange,D:DiffDelete,T:DiffText,
@@ -3560,7 +3562,7 @@
 	highlight all of the matched text.  However, this depends on where the
 	search starts.  This will be the first line in the window or the first
 	line below a closed fold.  A match in a previous line which is not
-	drawn may not continue in an newly drawn line.
+	drawn may not continue in a newly drawn line.
 	NOTE: This option is reset when 'compatible' is set.
 
 						*'history'* *'hi'*
@@ -4265,7 +4267,7 @@
 
 	The characters ':' and ',' should not be used.  UTF-8 characters can
 	be used when 'encoding' is "utf-8", otherwise only printable
-	characters are allowed.
+	characters are allowed.  All characters must be single width.
 
 	Examples: >
 	    :set lcs=tab:>-,trail:-
@@ -5369,6 +5371,8 @@
 			   going back to the other window, it still uses the
 			   same relative offset.
 	Also see |scroll-binding|.
+	When 'diff' mode is active there always is vertical scroll binding,
+	even when "ver" isn't there.
 
 						*'sections'* *'sect'*
 'sections' 'sect'	string	(default "SHNHH HUnhsh")
@@ -5969,8 +5973,9 @@
 	|zg| and |zw| commands can be used to access each.  This allows using
 	a personal word list file and a project word list file.
 	When a word is added while this option is empty Vim will set it for
-	you: Using the first "spell" directory in 'runtimepath' that is
-	writable and the first language name that appears in 'spelllang',
+	you: Using the first directory in 'runtimepath' that is writable.  If
+	there is no "spell" directory yet it will be created.  For the file
+	name the first language name that appears in 'spelllang' is used,
 	ignoring the region.
 	The resulting ".spl" file will be used for spell checking, it does not
 	have to appear in 'spelllang'.
diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt
index 02cb032..7e7711c 100644
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -1,4 +1,4 @@
-*os_dos.txt*    For Vim version 7.0c.  Last change: 2006 Feb 14
+*os_dos.txt*    For Vim version 7.0c.  Last change: 2006 Mar 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -77,10 +77,11 @@
 ==============================================================================
 3. Standard mappings				*dos-standard-mappings*
 
-CTRL-PageUp	cursor to first screen line			*<C-PageUp>*
-CTRL-PageDown	cursor to last screen line, last character	*<C-PageDown>*
+The mappings for CTRL-PageUp and CTRL-PageDown have been removed, they now
+jump to the next or previous tab page |<C-PageUp>| |<C-PageDown>|
 
-These mappings accomplish this:
+If you want them to move to the first and last screen line you can use these
+mappings:
 
 key		key code     Normal/Visual mode	    Insert mode ~
 CTRL-PageUp	<M-N><M-C-D>	    H		    <C-O>H
diff --git a/runtime/doc/os_win32.txt b/runtime/doc/os_win32.txt
index c894f0a..0861127 100644
--- a/runtime/doc/os_win32.txt
+++ b/runtime/doc/os_win32.txt
@@ -1,4 +1,4 @@
-*os_win32.txt*  For Vim version 7.0c.  Last change: 2005 Mar 29
+*os_win32.txt*  For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by George Reilly
@@ -87,6 +87,12 @@
 probably get very strange behavior from Vim.  Therefore Vim does not obtain
 the default value of 'term' from the environment variable "TERM".
 
+$PATH							*win32-PATH*
+
+The directory of the Vim executable is appended to $PATH.  This is mostly to
+make "!xxd' work, as it is in the Tools menu.  And it also means that when
+executable() returns 1 the executable can actually be executed.
+
 ==============================================================================
 3. Restore screen contents				*win32-restore*
 
diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt
index f415574..3bd8c40 100644
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0c.  Last change: 2006 Mar 25
+*pattern.txt*   For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1220,6 +1220,9 @@
 		'ignorecase' does not apply, use |/\c| in the pattern to
 		ignore case.  Otherwise case is not ignored.
 
+		Also see |matcharg()|, it returns the highlight group and
+		pattern of a previous :match command.
+
 		Another example, which highlights all characters in virtual
 		column 72 and more: >
 			:highlight rightMargin term=bold ctermfg=blue guifg=blue
@@ -1235,10 +1238,10 @@
 		Clear a previously defined match pattern.
 
 
-:2mat[ch] {group} /{pattern}/
+:2mat[ch] {group} /{pattern}/					*:2match*
 :2mat[ch]
 :2mat[ch] none
-:3mat[ch] {group} /{pattern}/
+:3mat[ch] {group} /{pattern}/					*:3match*
 :3mat[ch]
 :3mat[ch] none
 		Just like |:match| above, but set a separate match.  Thus
diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt
index b3fcb7d..a34f354 100644
--- a/runtime/doc/pi_paren.txt
+++ b/runtime/doc/pi_paren.txt
@@ -1,4 +1,4 @@
-*pi_paren.txt*  For Vim version 7.0c.  Last change: 2006 Mar 29
+*pi_paren.txt*  For Vim version 7.0c.  Last change: 2006 Apr 03
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -38,9 +38,13 @@
 syntax items are ignored.  Any syntax items with "string" or "comment"
 somewhere in their name are considered string or comment items.
 
-The search is limited to what is visible in the window.  The plugin doesn't
-search further than 100 lines to avoid a long delay when there are closed
-folds.
+The search is limited to avoid a delay when moving the cursor.  The limits
+are:
+- What is visible in the window.
+- 100 lines above or below the cursor to avoid a long delay when there are
+  closed folds.
+- 'synmaxcolumn' times 2 bytes before or after the cursor to avoid a delay
+  in a long line with syntax highlighting.
 
 ==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt
index a986ee9..77eb19e 100644
--- a/runtime/doc/pi_tar.txt
+++ b/runtime/doc/pi_tar.txt
@@ -1,6 +1,8 @@
 *tar.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
 
-	Tar File Interface
+       	       	       +====================+
+       	       	       | Tar File Interface |
+       	       	       +====================+
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
 	  (remove NOSPAM from Campbell's email first)
@@ -12,7 +14,8 @@
 1. Contents					*tar* *tar-contents*
    1. Contents..................................................|tar-contents|
    2. Usage.....................................................|tar-usage|
-   3. History...................................................|tar-history|
+   3. Options...................................................|tar-options|
+   4. History...................................................|tar-history|
 
 ==============================================================================
 2. Usage					*tar-usage* *tar-manual*
@@ -24,7 +27,25 @@
    tar archives via the plugin.
 
 ==============================================================================
-3. History						*tar-history*
+3. Options						*tar-options*
+
+   These options are variables that one may change, typically in one's
+   <.vimrc> file.
+                         Default
+   Variable               Value   Explanation
+   *g:tar_browseoptions*  "Ptf"   used to get a list of contents
+   *g:tar_readoptions*    "OPxf"  used to extract a file from a tarball
+   *g:tar_cmd*            "tar"   the name of the tar program
+   *g:tar_writeoptions*   "uf"    used to update/replace a file
+
+
+==============================================================================
+4. History						*tar-history*
+
+   v7 Mar 22, 2006 * work on making tar plugin work across network
+      Mar 27, 2006 * g:tar_cmd now available for users to change the name
+                     of the tar program to be used.  By default, of course,
+		     its "tar".
    v6 Dec 21, 2005 * writing to files not in directories caused problems -
                      fixed (pointed out by Christian Robinson)
    v5 Nov 22, 2005 * report option workaround installed
diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt
index 8e70bbf..eeb5d76 100644
--- a/runtime/doc/pi_zip.txt
+++ b/runtime/doc/pi_zip.txt
@@ -1,18 +1,20 @@
-*zip.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*zip.txt*	For Vim version 7.0c.  Last change: 2006 Apr 03
 
-	Zip File Interface
+				+====================+
+				| Zip File Interface |
+				+====================+
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
 	  (remove NOSPAM from Campbell's email first)
-Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 *zip-copyright*
-              Permission is hereby granted to use and distribute this code,
-	      with or without modifications, provided that this copyright
-	      notice is copied with it. Like anything else that's free,
-	      zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is*
-	      and it comes with no warranty of any kind, either expressed or
-	      implied. By using this plugin, you agree that in no event will
-	      the copyright holder be liable for any damages resulting from
-	      the use of this software.
+Copyright: Copyright (C) 2005,2006 Charles E Campbell, Jr {{{1 *zip-copyright*
+           Permission is hereby granted to use and distribute this code,
+	   with or without modifications, provided that this copyright
+	   notice is copied with it. Like anything else that's free,
+	   zip.vim, zipPlugin.vim, and pi_zip.txt are provided *as is*
+	   and it comes with no warranty of any kind, either expressed or
+	   implied. By using this plugin, you agree that in no event will
+	   the copyright holder be liable for any damages resulting from
+	   the use of this software.
 
 ==============================================================================
 1. Contents					*zip* *zip-contents*
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index db0210f..f76ab51 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0c.  Last change: 2006 Mar 27
+*spell.txt*	For Vim version 7.0c.  Last change: 2006 Apr 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -500,7 +500,7 @@
 		:mkspell ~/.vim/spell/en /tmp/en_US /tmp/en_CA /tmp/en_AU
 <			This combines the English word lists for US, CA and AU
 			into one en.spl file.
-			Up to eight regions can be combined. *E754* *755*
+			Up to eight regions can be combined. *E754* *E755*
 			The REP and SAL items of the first .aff file where
 			they appear are used. |spell-REP| |spell-SAL|
 
@@ -1058,36 +1058,8 @@
 - Making the word with the affix rare, by using the |spell-RARE| flag.
 - Exclude the word with the affix from compounding, by using the
   |spell-COMPOUNDFORBIDFLAG| flag.
-
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-OLD STUFF: This needs to be rewritten to use affix flags.
-							*spell-affix-rare*
-An extra item for Vim is the "rare" flag.  It must come after the other
-fields, before a comment.  When used then all words that use the affix will be
-marked as rare words.  Examples:
-
-	PFX F 0 nene  .   rare ~
-	SFX F 0 oin   n   rare   # hardly ever used ~
-
-However, if the word also appears as a good word in another way (e.g., in
-another region) it won't be marked as rare.
-
-							*spell-affix-nocomp*
-Another extra item for Vim is the "nocomp" flag.  It must come after the other
-fields, before a comment.  It can be either before or after "rare".  When
-present then all words that use the affix will not be part of a compound word.
-Example:
-	affix file:
-		COMPOUNDFLAG c ~
-		SFX a Y 2 ~
-		SFX a 0 s   . ~
-		SFX a 0 ize . nocomp ~
-	dictionary:
-		word/c ~
-		util/ac ~
-
-This allows for "wordutil" and "wordutils" but not "wordutilize".
--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+- Allow the word with the affix to be part of a compound word on the side of
+  the affix with the |spell-COMPOUNDPERMITFLAG|.
 
 						    *spell-PFXPOSTPONE*
 When an affix file has very many prefixes that apply to many words it's not
@@ -1146,6 +1118,11 @@
 a typing mistake anyway.  When the same word is found as good it won't be
 highlighted as rare.
 
+This flag can also be used on an affix, so that a basic word is not rare but
+the basic word plus affix is rare |spell-affix-flags|.  However, if the word
+also appears as a good word in another way (e.g., in another region) it won't
+be marked as rare.
+
 
 BAD WORDS						*spell-BAD*
 
@@ -1243,6 +1220,12 @@
 
 This allows for the word "start-end", but not "startend".
 
+An additional implied rule is that, without further flags, a word with a
+prefix cannot be compounded after another word, and a word with a suffix
+cannot be compounded with a following word.  Thus the affix cannot appear
+on the inside of a compound word.  This can be changed with the
+|spell-COMPOUNDPERMITFLAG|.
+
 							*spell-NEEDCOMPOUND*
 The NEEDCOMPOUND flag is used to require that a word is used as part of a
 compound word.  The word itself is not a good word.  Example:
@@ -1282,13 +1265,24 @@
 
 						    *spell-COMPOUNDFORBIDFLAG*
 The COMPOUNDFORBIDFLAG specifies a flag that can be used on an affix.  It
-means that the word plus affix cannot be used in a compound word.
+means that the word plus affix cannot be used in a compound word.  Example:
+	affix file:
+		COMPOUNDFLAG c ~
+		COMPOUNDFORBIDFLAG x ~
+		SFX a Y 2 ~
+		SFX a 0 s   . ~
+		SFX a 0 ize/x . ~
+	dictionary:
+		word/c ~
+		util/ac ~
+
+This allows for "wordutil" and "wordutils" but not "wordutilize".
 
 						    *spell-COMPOUNDPERMITFLAG*
 The COMPOUNDPERMITFLAG specifies a flag that can be used on an affix.  It
 means that the word plus affix can also be used in a compound word in a way
-where the affix ends up halfway the word.
-NOT IMPLEMENTED YET.
+where the affix ends up halfway the word.  Without this flag that is not
+allowed.
 
 						    *spell-COMPOUNDROOT*
 The COMPOUNDROOT flag is used for words in the dictionary that are already a
@@ -1309,9 +1303,9 @@
 
 Only case-folded letters need to be included.
 
-Above another way to restrict compounding was mentioned above: adding "nocomp"
-after an affix causes all words that are made with that affix not be be used
-for compounding. |spell-affix-nocomp|
+Above another way to restrict compounding was mentioned above: Adding the
+|spell-COMPOUNDFORBIDFLAG| flag to an affix causes all words that are made
+with that affix not be be used for compounding.
 
 
 UNLIMITED COMPOUNDING					*spell-NOBREAK*
diff --git a/runtime/doc/sql.txt b/runtime/doc/sql.txt
index 5d07a5c..29a0bce 100644
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   	For Vim version 7.0c.  Last change: Tue Mar 28 2006 9:33:14 PM
+*sql.txt*   	For Vim version 7.0c.  Last change: Mon Apr 03 2006 10:34:00 PM
 
 by David Fishburn
 
@@ -26,7 +26,8 @@
         4.3.3 Complete Procedures		|sql-completion-procedures|
         4.3.4 Complete Views			|sql-completion-views|
     4.4 Completion Customization		|sql-completion-customization|
-    4.5 Customizing Maps			|sql-completion-maps|
+    4.5 SQL Maps	        		|sql-completion-maps|
+    4.6 Using with other filetypes		|sql-completion-filetypes|
 
 ==============================================================================
 1. Navigation	        			*sql-navigation*
@@ -321,41 +322,48 @@
 ---------------
 The static popups created contain items defined by the active syntax rules
 while editing a file with a filetype of SQL.  The plugin defines (by default)
-various maps to help the user refine which list of items they wish displayed.
+various maps to help the user refine the list of items to be displayed.
 The defaults static maps are: >
-        imap <buffer> <C-C>a <C-\><C-O>:let b:sql_compl_type='syntax'<CR><C-X><C-O>
-        imap <buffer> <C-C>s <C-\><C-O>:let b:sql_compl_type='sqlStatement'<CR><C-X><C-O>
-        imap <buffer> <C-C>f <C-\><C-O>:let b:sql_compl_type='sqlFunction'<CR><C-X><C-O>
-        imap <buffer> <C-C>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
-        imap <buffer> <C-C>o <C-\><C-O>:let b:sql_compl_type='sqlOption'<CR><C-X><C-O>
-        imap <buffer> <C-C>T <C-\><C-O>:let b:sql_compl_type='sqlType'<CR><C-X><C-O>
+    imap <buffer> <C-C>a <C-\><C-O>:call sqlcomplete#Map('syntax')<CR><C-X><C-O>
+    imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
+    imap <buffer> <C-C>f <C-\><C-O>:call sqlcomplete#Map('sqlFunction')<CR><C-X><C-O>
+    imap <buffer> <C-C>o <C-\><C-O>:call sqlcomplete#Map('sqlOption')<CR><C-X><C-O>
+    imap <buffer> <C-C>T <C-\><C-O>:call sqlcomplete#Map('sqlType')<CR><C-X><C-O>
+    imap <buffer> <C-C>s <C-\><C-O>:call sqlcomplete#Map('sqlStatement')<CR><C-X><C-O>
 < 
 The static maps (which are based on the syntax highlight groups) follow this
 format: >
-    imap <buffer> <C-C>k <C-\><C-O>:let b:sql_compl_type='sqlKeyword'<CR><C-X><C-O>
+    imap <buffer> <C-C>k <C-\><C-O>:call sqlcomplete#Map('sqlKeyword')<CR><C-X><C-O>
 <
 This command breaks down as: >
     imap                   - Create an insert map
     <buffer>               - Only for this buffer
-    <C-C>k             - Your choice of key map
+    <C-C>k                 - Your choice of key map
     <C-\><C-O>             - Execute one command, return to Insert mode
-    :let b:sql_compl_type= - Choose the highlight group's entries to display.
+    :call sqlcomplete#Map( - Allows the SQL completion plugin to perform some
+                             housekeeping functions to allow it to be used in
+                             conjunction with other completion plugins.
+                             Indicate which item you want the SQL completion
+                             plugin to complete.
+                             In this case we are asking the plugin to display
+                             items from the syntax highlight group
+                             'sqlKeyword'.
                              You can view a list of highlight group names to
                              choose from by executing the
                                  :syntax list
                              command while editing a SQL file.
     'sqlKeyword'           - Display the items for the sqlKeyword highlight
                              group
-    <CR>                   - Execute the :let command
+    )<CR>                  - Execute the :let command
     <C-X><C-O>             - Trigger the standard omni completion key stroke.
-                             By setting the b:sql_compl_type variable, this
-                             instructs the SQL completion plugin to populate
-                             the popup with items from the sqlKeyword highlight
-                             group.  The plugin will also cache this result
-                             until Vim is restarted.  The syntax list is 
-                             retrieved using the syntaxcomplete plugin.
+                             Passing in 'sqlKeyword' instructs the SQL
+                             completion plugin to populate the popup with
+                             items from the sqlKeyword highlight group.  The
+                             plugin will also cache this result until Vim is
+                             restarted.  The syntax list is retrieved using
+                             the syntaxcomplete plugin.
 <
-Setting b:sql_compl_type = 'syntax' is a special case.  This instructs the
+Using the 'syntax' keyword is a special case.  This instructs the
 syntaxcomplete plugin to retrieve all syntax items.  So this will effectively
 work for any of Vim's SQL syntax files.  At the time of writing this includes
 10 different syntax files for the different dialects of SQL (see section 3
@@ -383,7 +391,7 @@
 plugin installed, (http://vim.sourceforge.net/script.php?script_id=356).
 
 Dynamic mode is used by several features of the SQL completion plugin.  
-After installing the dbext plugin see the |dbext-tutorial| for additional
+After installing the dbext plugin see the dbext-tutorial for additional
 configuration and usage.  The dbext plugin allows the SQL completion plugin
 to display a list of tables, procedures, views and columns. >
      Table List
@@ -403,9 +411,7 @@
      Stored Procedure List  - <C-C>p
      View List              - <C-C>v
      Column List            - <C-C>c
-                            - .<C-X><C-O>
-                            - If <C-X><C-O> is pressed following a period
-                              it is assumed you are asking for a column list.
+                            - Windows platform only
                             - When viewing a popup window displaying the list
                               of tables, you can press <C-Right>, this will
                               replace the table currently highlighted with
@@ -418,7 +424,7 @@
 the popup window.  This makes the re-displaying of these lists very
 fast.  If new tables or columns are added to the database it may become 
 necessary to clear the plugins cache.  The default map for this is: >
-        imap <buffer> <C-C>R <C-O>:let b:sql_compl_type='ResetCache'<CR><C-X><C-O>
+    imap <buffer> <C-C>R <C-\><C-O>:call sqlcomplete#Map('ResetCache')<CR><C-X><C-O>
 <
  
 4.3 SQL Tutorial				*sql-completion-tutorial*
@@ -472,7 +478,7 @@
 dbext.vim is working as expected.  If not, please consult the dbext.txt 
 documentation.
 
-Assuming you have followed the |dbext-tutorial| you can press <C-C>t to
+Assuming you have followed the dbext-tutorial you can press <C-C>t to
 display a list of tables.  There is a delay while dbext is creating the table
 list.  After the list is displayed press <C-W>.  This will remove both the 
 popup window and the table name already chosen when the list became active. >
@@ -496,7 +502,7 @@
 together.  If you wish to enable this functionality on a *nix platform choose
 a key and create this mapping (see |sql-completion-maps| for further 
 details on where to create this imap): >
-    imap <buffer> <your_keystroke>  <CR><C-\><C-O>:let b:sql_compl_type='column'<CR><C-X><C-O>
+    imap <buffer> <your_keystroke> <CR><C-\><C-O>:call sqlcomplete#Map('column')<CR><C-X><C-O>
 <
 Example of using column completion:
      - Press <C-C>t again to display the list of tables.  
@@ -611,9 +617,65 @@
                    MYTABLENAME --> M
 <
  
-4.5 Customizing Maps				*sql-completion-maps*
---------------------
+4.5 SQL Maps	        			*sql-completion-maps*
+------------
 
+The default SQL maps have been described in other sections of this document in
+greater detail.  Here is a list of the maps with a brief description of each.
+
+Static Maps
+-----------
+These are maps which use populate the completion list using Vim's syntax
+highlighting rules. >
+    <C-C>a
+<       - Displays all SQL syntax items. >
+    <C-C>k 
+<       - Displays all SQL syntax items defined as 'sqlKeyword'. >
+    <C-C>f 
+<       - Displays all SQL syntax items defined as 'sqlFunction. >
+    <C-C>o
+<       - Displays all SQL syntax items defined as 'sqlOption'. >
+    <C-C>T
+<       - Displays all SQL syntax items defined as 'sqlType'. >
+    <C-C>s
+<       - Displays all SQL syntax items defined as 'sqlStatement'. >
+
+Dynamic Maps
+------------
+These are maps which use populate the completion list using the dbext.vim plugin. >
+    <C-C>t  
+<       - Displays a list of tables. >
+    <C-C>p
+<       - Displays a list of procedures. >
+    <C-C>v
+<       - Displays a list of views. >
+    <C-C>c
+<       - Displays a list of columns for a specific table. >
+    <C-C>l
+<       - Displays a comma separated list of columns for a specific table. >
+    <C-C>L
+<       - Displays a comma separated list of columns for a specific table.
+          This should only be used when the completion window is active. >
+    <C-Right>
+<       - Displays a list of columns for the table currently highlighted in
+          the completion window.  <C-Right> is not recognized on most Unix
+          systems, so this maps is only created on the Windows platform.
+          If you would like the same feature on Unix, choose a different key
+          and make the same map in your vimrc.
+          This should only be used when the completion window is active. >
+    <C-Left>
+<       - Displays the list of tables.
+          <C-Left> is not recognized on most Unix systems, so this maps is
+          only created on the Windows platform.  If you would like the same
+          feature on Unix, choose a different key and make the same map in
+          your vimrc.
+          This should only be used when the completion window is active. >
+    <C-C>R
+<       - This maps removes all cached items and forces the SQL completion 
+          to regenerate the list of items.
+
+Customizing Maps
+----------------
 You can create as many additional key maps as you like.  Generally, the maps
 will be specifying different syntax highlight groups.  
 
@@ -624,7 +686,7 @@
 < 
 Do no edit ftplugin/sql.vim directly!  If you change this file your changes
 will be over written on future updates.  Vim has a special directory structure
-that allows you to make customizations without changing the files that are
+which allows you to make customizations without changing the files that are
 included with the Vim distribution.  If you wish to customize the maps
 create an after/ftplugin/sql.vim (see |after-directory|) and place the same
 maps from the ftplugin/sql.vim in it using your own key strokes.  <C-C> was
@@ -632,4 +694,44 @@
 platform you can also use <C-Space> or ALT keys.
  
 
+4.6 Using with other filetypes		        *sql-completion-filetypes*
+------------------------------
+
+Many times SQL can be used with different filetypes.  For example Perl, Java,
+PHP, Javascript can all interact with a database.  Often you need both the SQL
+completion as well as the completion capabilities for the current language you
+are editing.
+
+This can be enabled easily with the following steps (assuming a Perl file): >
+    1.  :e test.pl
+    2.  :set filetype=sql
+    3.  :set ft=perl
+
+Step 1
+------
+Begins by editing a Perl file.  Vim automatically sets the filetype to
+"perl".  By default, Vim runs the appropriate filetype file
+ftplugin/perl.vim.  If you are using the syntax completion plugin by following
+the directions at |ft-syntax-omni| then the |'omnifunc'| option has been set to
+"syntax#Complete".  Pressing <C-X><C-O> will display the omni popup containing
+the syntax items for Perl.
+
+Step 2
+------
+Manually setting the filetype to 'sql' will also fire the appropriate filetype
+files ftplugin/sql.vim.  This file will define a number of buffer specific
+maps for SQL completion, see |sql-completion-maps|.  Now these maps have
+been created and the SQL completion plugin has been initialized.  All SQL
+syntax items have been cached in preparation.  The SQL filetype script detects
+we are attempting to use two different completion plugins.  Since the SQL maps
+begin with <C-C>, the maps will toggle the |'omnifunc'| when in use.  So you
+can use <C-X><C-O> to continue using the completion for Perl (using the syntax
+completion plugin) and <C-C> to use the SQL completion features.
+
+Step 3
+------
+Setting the filetype back to Perl sets all the usual "perl" related items back
+as they were.
+     
+
 vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index c0f2a03..4ca2139 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0c.  Last change: 2006 Mar 26
+*starting.txt*  For Vim version 7.0c.  Last change: 2006 Apr 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -413,7 +413,7 @@
 		process and exits the current one.  "-f" should be used when
 		gvim is started by a program that will wait for the edit
 		session to finish (e.g., mail or readnews).  If you want gvim
-		never to fork, include 'f' in 'guioptions' in your .gvimrc.
+		never to fork, include 'f' in 'guioptions' in your |gvimrc|.
 		Careful: You can use "-gf" to start the GUI in the foreground,
 		but "-fg" is used to specify the foreground color.  |gui-fork|
 		{not in Vi}
@@ -430,7 +430,7 @@
 <		Also consider using autocommands; see |autocommand|.
 		When {vimrc} is equal to "NONE" (all uppercase), all
 		initializations from files and environment variables are
-		skipped, including reading the .gvimrc file when the GUI
+		skipped, including reading the |gvimrc| file when the GUI
 		starts.  Loading plugins is also skipped.
 		When {vimrc} is equal to "NORC" (all uppercase), this has the
 		same effect as "NONE", but loading plugins is not skipped.
@@ -440,7 +440,7 @@
 		{not in Vi}
 
 							*-U* *E230*
--U {gvimrc}	The file "gvimrc" is read for initializations when the GUI
+-U {gvimrc}	The file {gvimrc} is read for initializations when the GUI
 		starts.  Other GUI initializations are skipped.  When {gvimrc}
 		is equal to "NONE", no file is read for GUI initializations at
 		all.  |gui-init|
@@ -761,7 +761,8 @@
 
 			  *VIMINIT* *.vimrc* *_vimrc* *EXINIT* *.exrc* *_exrc*
      c. Four places are searched for initializations.  The first that exists
-	is used, the others are ignored.
+	is used, the others are ignored.  The $MYVIMRC environment variable is
+	set to the file that was first found, unless $MYVIMRC was already set.
 	-  The environment variable VIMINIT (see also |compatible-default|) (*)
 	   The value of $VIMINIT is used as an Ex command line.
 	-  The user vimrc file(s):
@@ -905,7 +906,8 @@
 not been set or reset will be changed.  This has the same effect like the
 value of 'compatible' had this value when starting Vim.  Note that this
 doesn't happen for the system-wide vimrc file.  It does also happen for gvimrc
-files.
+files.  The $MYVIMRC or $MYGVIMRC file will be set to the first found vimrc
+and/or gvimrc file.
 
 But there is a side effect of setting or resetting 'compatible' at the moment
 a .vimrc file is found: Mappings are interpreted the moment they are
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 0d037d6..a0a5b8d 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0c.  Last change: 2006 Mar 28
+*syntax.txt*	For Vim version 7.0c.  Last change: 2006 Apr 04
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -81,14 +81,14 @@
 
 NOTE: When using reverse video ("gvim -fg white -bg black"), the default value
 of 'background' will not be set until the GUI window is opened, which is after
-reading the .gvimrc.  This will cause the wrong default highlighting to be
+reading the |gvimrc|.  This will cause the wrong default highlighting to be
 used.  To set the default value of 'background' before switching on
-highlighting, include the ":gui" command in the .gvimrc: >
+highlighting, include the ":gui" command in the |gvimrc|: >
 
    :gui		" open window and set default for 'background'
    :syntax on	" start highlighting, use 'background' to set colors
 
-NOTE: Using ":gui" in the .gvimrc means that "gvim -f" won't start in the
+NOTE: Using ":gui" in the |gvimrc| means that "gvim -f" won't start in the
 foreground!  Use ":gui -f" then.
 
 
@@ -1013,10 +1013,10 @@
 fixed source form if the fortran_fixed_source variable has been set.  If
 neither of these variables have been set, the syntax script attempts to
 determine which source form has been used by examining the first five columns
-of the first 25 lines of your file.  If no signs of free source form are
+of the first 250 lines of your file.  If no signs of free source form are
 detected, then the file is assumed to be in fixed source form.  The algorithm
 should work in the vast majority of cases.  In some cases, such as a file that
-begins with 25 or more full-line comments, the script may incorrectly decide
+begins with 250 or more full-line comments, the script may incorrectly decide
 that the fortran code is in fixed form.  If that happens, just add a
 non-comment statement beginning anywhere in the first five columns of the
 first twenty five lines, save (:w) and then reload (:e!) the file.
@@ -2304,7 +2304,7 @@
 
 SH		*sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax*
 
-This covers the "normal" Unix (Bourne) sh, bash and the Korn shell.
+This covers the "normal" Unix (Borne) sh, bash and the Korn shell.
 
 Vim attempts to determine which shell type is in use by specifying that
 various filenames are of specific types: >
@@ -2328,6 +2328,11 @@
 <   sh: >
 	let is_sh	 = 1
 
+If there's no "#! ..." line, and the user hasn't availed himself/herself of a
+default sh.vim syntax setting as just shown, then syntax/sh.vim will assume
+the Borne shell syntax.  No need to quote RFCs or market penetration
+statistics in error reports, please.
+
 If, in your <.vimrc>, you set >
 	let g:sh_fold_enabled= 1
 >
@@ -3760,7 +3765,7 @@
 	have the same effect.
 	"undercurl" is a curly underline.  When "undercurl" is not possible
 	then "underline" is used.  In general "undercurl" is only available in
-	the GUI.
+	the GUI.  The color is set with |highlight-guisp|.
 
 start={term-list}				*highlight-start* *E422*
 stop={term-list}				*term-list* *highlight-stop*
diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt
index 87b42c0..db51d84 100644
--- a/runtime/doc/tabpage.txt
+++ b/runtime/doc/tabpage.txt
@@ -1,4 +1,4 @@
-*tabpage.txt*   For Vim version 7.0c.  Last change: 2006 Mar 03
+*tabpage.txt*   For Vim version 7.0c.  Last change: 2006 Mar 31
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -119,12 +119,14 @@
 label to switch to that tab page.  Click where there is no label to go to the
 next tab page.  |'tabline'|
 
-:tabn[ext]					*:tabn* *:tabnext* *gt*
-gt		Go to the next tab page.  Wraps around from the last to the
+:tabn[ext]				*:tabn* *:tabnext* *gt*
+gt					*CTRL-<PageDown>* *<C-PageDown>*
+<C-PageDown>	Go to the next tab page.  Wraps around from the last to the
 		first one.
 
 :tabn[ext] {count}
-{count}gt	Go to tab page {count}.  The first tab page has number one.
+{count}gt				*CTRL-<PageUp>* *<C-PageUp>*
+<C-PageUp>	Go to tab page {count}.  The first tab page has number one.
 
 
 :tabp[revious]				*:tabp* *:tabprevious* *gT*
@@ -198,6 +200,8 @@
 within one tab page.  Other tab pages can show differences between other
 files.
 
+Variables local to a tab page start with "t:". |tabpage-variable|
+
 The TabLeave and TabEnter autocommand events can be used to do something when
 switching from one tab page to another.  The exact order depends on what you
 are doing.  When creating a new tab page this works as if you create a new
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 32e2f0b..3e2de48 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1042,6 +1042,7 @@
 ++bad	editing.txt	/*++bad*
 ++bin	editing.txt	/*++bin*
 ++builtin_terms	various.txt	/*++builtin_terms*
+++edit	editing.txt	/*++edit*
 ++enc	editing.txt	/*++enc*
 ++ff	editing.txt	/*++ff*
 ++nobin	editing.txt	/*++nobin*
@@ -1655,7 +1656,6 @@
 45.3	usr_45.txt	/*45.3*
 45.4	usr_45.txt	/*45.4*
 45.5	usr_45.txt	/*45.5*
-755	spell.txt	/*755*
 8g8	various.txt	/*8g8*
 90.1	usr_90.txt	/*90.1*
 90.2	usr_90.txt	/*90.2*
@@ -1676,6 +1676,8 @@
 :.	cmdline.txt	/*:.*
 :/	cmdline.txt	/*:\/*
 :0file	editing.txt	/*:0file*
+:2match	pattern.txt	/*:2match*
+:3match	pattern.txt	/*:3match*
 ::.	cmdline.txt	/*::.*
 ::8	cmdline.txt	/*::8*
 ::e	cmdline.txt	/*::e*
@@ -2909,8 +2911,8 @@
 <C-LeftMouse>	tagsrch.txt	/*<C-LeftMouse>*
 <C-MouseDown>	scroll.txt	/*<C-MouseDown>*
 <C-MouseUp>	scroll.txt	/*<C-MouseUp>*
-<C-PageDown>	os_dos.txt	/*<C-PageDown>*
-<C-PageUp>	os_dos.txt	/*<C-PageUp>*
+<C-PageDown>	tabpage.txt	/*<C-PageDown>*
+<C-PageUp>	tabpage.txt	/*<C-PageUp>*
 <C-Right>	motion.txt	/*<C-Right>*
 <C-RightMouse>	tagsrch.txt	/*<C-RightMouse>*
 <CR>	motion.txt	/*<CR>*
@@ -3118,6 +3120,8 @@
 COMSPEC	starting.txt	/*COMSPEC*
 CR-used-for-NL	pattern.txt	/*CR-used-for-NL*
 CTRL-6	editing.txt	/*CTRL-6*
+CTRL-<PageDown>	tabpage.txt	/*CTRL-<PageDown>*
+CTRL-<PageUp>	tabpage.txt	/*CTRL-<PageUp>*
 CTRL-A	change.txt	/*CTRL-A*
 CTRL-B	scroll.txt	/*CTRL-B*
 CTRL-C	pattern.txt	/*CTRL-C*
@@ -3961,6 +3965,7 @@
 E752	spell.txt	/*E752*
 E753	spell.txt	/*E753*
 E754	spell.txt	/*E754*
+E755	spell.txt	/*E755*
 E756	spell.txt	/*E756*
 E757	options.txt	/*E757*
 E758	spell.txt	/*E758*
@@ -3994,6 +3999,9 @@
 E783	spell.txt	/*E783*
 E784	tabpage.txt	/*E784*
 E785	eval.txt	/*E785*
+E786	eval.txt	/*E786*
+E787	diff.txt	/*E787*
+E788	autocmd.txt	/*E788*
 E79	message.txt	/*E79*
 E80	message.txt	/*E80*
 E800	arabic.txt	/*E800*
@@ -4428,6 +4436,7 @@
 alt-input	debugger.txt	/*alt-input*
 alternate-file	editing.txt	/*alternate-file*
 amiga-window	starting.txt	/*amiga-window*
+anonymous-function	eval.txt	/*anonymous-function*
 ant.vim	syntax.txt	/*ant.vim*
 ap	motion.txt	/*ap*
 apache.vim	syntax.txt	/*apache.vim*
@@ -5398,6 +5407,10 @@
 g:netrw_use_nt_rcp	pi_netrw.txt	/*g:netrw_use_nt_rcp*
 g:netrw_win95ftp	pi_netrw.txt	/*g:netrw_win95ftp*
 g:netrw_winsize	pi_netrw.txt	/*g:netrw_winsize*
+g:tar_browseoptions	pi_tar.txt	/*g:tar_browseoptions*
+g:tar_cmd	pi_tar.txt	/*g:tar_cmd*
+g:tar_readoptions	pi_tar.txt	/*g:tar_readoptions*
+g:tar_writeoptions	pi_tar.txt	/*g:tar_writeoptions*
 g:var	eval.txt	/*g:var*
 g;	motion.txt	/*g;*
 g<	message.txt	/*g<*
@@ -6052,6 +6065,7 @@
 match()	eval.txt	/*match()*
 match-highlight	pattern.txt	/*match-highlight*
 match-parens	tips.txt	/*match-parens*
+matcharg()	eval.txt	/*matcharg()*
 matchend()	eval.txt	/*matchend()*
 matchit-install	usr_05.txt	/*matchit-install*
 matchlist()	eval.txt	/*matchlist()*
@@ -6426,6 +6440,7 @@
 papp.vim	syntax.txt	/*papp.vim*
 paragraph	motion.txt	/*paragraph*
 pascal.vim	syntax.txt	/*pascal.vim*
+pathshorten()	eval.txt	/*pathshorten()*
 pattern	pattern.txt	/*pattern*
 pattern-atoms	pattern.txt	/*pattern-atoms*
 pattern-multi-byte	pattern.txt	/*pattern-multi-byte*
@@ -6607,8 +6622,8 @@
 redo	undo.txt	/*redo*
 redo-register	undo.txt	/*redo-register*
 ref	intro.txt	/*ref*
-ref-toc	help.txt	/*ref-toc*
 reference	intro.txt	/*reference*
+reference_toc	help.txt	/*reference_toc*
 regexp	pattern.txt	/*regexp*
 regexp-changes-5.4	version5.txt	/*regexp-changes-5.4*
 register	sponsor.txt	/*register*
@@ -6876,9 +6891,7 @@
 spell-affix-comment	spell.txt	/*spell-affix-comment*
 spell-affix-flags	spell.txt	/*spell-affix-flags*
 spell-affix-mbyte	spell.txt	/*spell-affix-mbyte*
-spell-affix-nocomp	spell.txt	/*spell-affix-nocomp*
 spell-affix-not-supported	spell.txt	/*spell-affix-not-supported*
-spell-affix-rare	spell.txt	/*spell-affix-rare*
 spell-affix-vim	spell.txt	/*spell-affix-vim*
 spell-compound	spell.txt	/*spell-compound*
 spell-dic-format	spell.txt	/*spell-dic-format*
@@ -6913,6 +6926,7 @@
 sql-completion-columns	sql.txt	/*sql-completion-columns*
 sql-completion-customization	sql.txt	/*sql-completion-customization*
 sql-completion-dynamic	sql.txt	/*sql-completion-dynamic*
+sql-completion-filetypes	sql.txt	/*sql-completion-filetypes*
 sql-completion-maps	sql.txt	/*sql-completion-maps*
 sql-completion-procedures	sql.txt	/*sql-completion-procedures*
 sql-completion-static	sql.txt	/*sql-completion-static*
@@ -7015,6 +7029,7 @@
 system-vimrc	starting.txt	/*system-vimrc*
 s~	change.txt	/*s~*
 t	motion.txt	/*t*
+t:var	eval.txt	/*t:var*
 t_#2	term.txt	/*t_#2*
 t_#4	term.txt	/*t_#4*
 t_%1	term.txt	/*t_%1*
@@ -7174,6 +7189,7 @@
 tab-page-other	tabpage.txt	/*tab-page-other*
 tabline-menu	tabpage.txt	/*tabline-menu*
 tabpage	tabpage.txt	/*tabpage*
+tabpage-variable	eval.txt	/*tabpage-variable*
 tabpage.txt	tabpage.txt	/*tabpage.txt*
 tabpagebuflist()	eval.txt	/*tabpagebuflist()*
 tabpagenr()	eval.txt	/*tabpagenr()*
@@ -7210,6 +7226,7 @@
 tar-copyright	pi_tar.txt	/*tar-copyright*
 tar-history	pi_tar.txt	/*tar-history*
 tar-manual	pi_tar.txt	/*tar-manual*
+tar-options	pi_tar.txt	/*tar-options*
 tar-usage	pi_tar.txt	/*tar-usage*
 tar.txt	pi_tar.txt	/*tar.txt*
 tcl	if_tcl.txt	/*tcl*
@@ -7663,6 +7680,7 @@
 win16-various	gui_w16.txt	/*win16-various*
 win32	os_win32.txt	/*win32*
 win32-!start	gui_w32.txt	/*win32-!start*
+win32-PATH	os_win32.txt	/*win32-PATH*
 win32-colors	gui_w32.txt	/*win32-colors*
 win32-compiling	os_win32.txt	/*win32-compiling*
 win32-curdir	os_win32.txt	/*win32-curdir*
@@ -7682,6 +7700,7 @@
 win32s	os_win32.txt	/*win32s*
 winbufnr()	eval.txt	/*winbufnr()*
 wincol()	eval.txt	/*wincol()*
+window	windows.txt	/*window*
 window-contents	intro.txt	/*window-contents*
 window-exit	editing.txt	/*window-exit*
 window-move-cursor	windows.txt	/*window-move-cursor*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index e5e934b..75c0522 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0c.  Last change: 2006 Mar 29
+*todo.txt*      For Vim version 7.0c.  Last change: 2006 Apr 05
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,22 +30,22 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-When "search" is in 'foldopen' have [s and ]s open folds.
-
 New Hungarian dictionary. (Laci Nemeth)
-    test COMPOUNDFORBIDFLAG
-    implement use of COMPOUNDPERMITFLAG
-    implement use of CHECKCOMPOUND* flags, <compoptions>
-    implement using CHECKCOMPOUNDPATTERN: match words with sl_comppat[].
-    explain the use of affix flags, replace |spell-affix-rare|
+-   Support flags on a suffix used for second level affixes.
+    The flags may also be used for compounding.  Default is an OR
+    mechanism with the flags of the word.
+    Adding "compset" flag on the affixes means the compound flags of the word
+    are not used?
 
--   Set user variables to the names of the actually used user vimrc file,
-    the first directory looked for user plugins/syntax files.
-    $MYVIMRC for .vimrc, $MYGVIMRC for .gvimrc, $MYRUNTIME/plugin for
-    runtime files?
-    Also: when the environment variable exists, use it.  If it doesn't
-    exist, set it.  Requires good names: $VIM_USER_VIMRC  $VIM_USER_DIR
-    Add a menu item "Preferences" that does "sp $MYVIMRC".
+-   implement use of CHECKCOMPOUND* flags, <compoptions> in .spl file
+
+-   Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
+    How is it supposed to work?
+
+-   implement using CHECKCOMPOUNDPATTERN: match words with sl_comppat[].
+
+Obey 'switchbuf' "useopen" value for windows in other tabs, e.g. for :sbuffer.
+Or use another value, e.g., "usetab"?
 
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
@@ -641,7 +641,7 @@
     UnxUtils.zip archive.
     Alternate one: http://www.pramodx.20m.com/tee_for_win32.htm, but Walter
     Briscoe says it's not as good.
-8   'fillchars' doesn't work for multi-byte characters.
+8   "stl" and "stlnc" in 'fillchars' don't work for multi-byte characters.
 8   Command line completion: buffers "foo.txt" and "../b/foo.txt", completing
     ":buf foo<Tab>" doesn't find the second one. (George V. Reilly)
 7   Output for ":scriptnames" and ":breaklist" should shorten the file names:
@@ -1090,7 +1090,6 @@
 
 
 Tab pages:
-9   Win32 GUI: menu for tab pages line.
 9   GUI implementation for the tab pages line for other systems.
 8   Make GUI menu in tab pages line configurable.  Like the popup menu.
 8   tab pages in the session file, if "tabpages" in 'sessionoptions'
@@ -1106,28 +1105,14 @@
 
 
 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.
+-   Add a command the repeats ]s and z=, showing the misspelled word in its
+    context.  Thus to spell-check a whole file.
 -   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
-    mechanism with the flags of the word.  Adding "compset" on the affixes
-    means the compound flags of the word are not used.
-    Instead of "SFX a 0 add/FLAGS ." we could use "SFX a 0 add . /FLAGS" (or
-    support both).
 -   Support breakpoint character ? 0xb7 and ignore it?  Makes it possible to
     use same wordlist for hyphenation.
 -   Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of
@@ -1335,6 +1320,8 @@
     cluster can be added to existing syntax items.
 8   C syntax: Don't highlight {} as errors inside () when used like this:
     "({ something })", often used in GCC code.
+7   Add a "startgroup" to a region.  Used like "nextgroup" inside the region,
+    preferred item at the start of the region. (Charles Campbell)
 8   When editing a new file without a name and giving it a name (by writing
     it) and 'filetype' is not set, detect the filetype.  Avoid doing it for
     ":wq file".
@@ -2245,6 +2232,12 @@
 
 
 'cindent', 'smartindent':
+8   Aligning with "e" of "error" because of the ':' doesn't make sense:
+	cout << (  a ? f() : "error")
+8   Wrong indent with default settings when (dl) appears in this line:
+	    (dl)->barbar(
+			 dk);
+    When "(dl)" is changed to "dl" it uses 'sw' * 2 as expected.
 8   Wrong indent below ? : with ():
 	if ((a ? (b) : c) != 0)
 		       aligns with ":".
diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt
index e2c6207..0906dc7 100644
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -1,4 +1,4 @@
-*usr_05.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*usr_05.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -25,27 +25,27 @@
 *05.1*	The vimrc file					*vimrc-intro*
 
 You probably got tired of typing commands that you use very often.  To start
-with all your favorite option settings and mappings, you write them in what is
-called the vimrc file.  Vim reads this file when it starts up.
+Vim with all your favorite option settings and mappings, you write them in
+what is called the vimrc file.  Vim executes the commands in this file when it
+starts up.
 
-If you have trouble finding your vimrc file, use this command: >
+If you already have a vimrc file (e.g., when your sysadmin has one setup for
+you), you can edit it this way: >
 
-	:scriptnames
+	:edit $MYVIMRC
 
-One of the first files in the list should be called ".vimrc" or "_vimrc" and
-is located in your home directory.
-   If you don't have a vimrc file yet, see |vimrc| to find out where you can
+If you don't have a vimrc file yet, see |vimrc| to find out where you can
 create a vimrc file.  Also, the ":version" command mentions the name of the
 "user vimrc file" Vim looks for.
 
-For Unix this file is always used: >
+For Unix and Macintosh this file is always used and is recommended:
 
-	~/.vimrc
+	~/.vimrc ~
 
-For MS-DOS and MS-Windows it is mostly one of these: >
+For MS-DOS and MS-Windows you can use one of these:
 
-	$HOME/_vimrc
-	$VIM/_vimrc
+	$HOME/_vimrc ~
+	$VIM/_vimrc ~
 
 The vimrc file can contain all the commands that you type after a colon.  The
 most simple ones are for setting options.  For example, if you want Vim to
diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt
index 385bc7e..8521d59 100644
--- a/runtime/doc/usr_24.txt
+++ b/runtime/doc/usr_24.txt
@@ -1,4 +1,4 @@
-*usr_24.txt*	For Vim version 7.0c.  Last change: 2005 Apr 01
+*usr_24.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -232,6 +232,32 @@
 The results depend on what is found in your file system, of course.  The
 matches are sorted alphabetically.
 
+
+COMPLETING IN SOURCE CODE
+
+Source code files are well structured.  That makes it possible to do
+completion in an intelligent way.  In Vim this is called Omni completion.  In
+some other editors it's called intellisense, but that is a trademark.
+
+The key to Omni completion is CTRL-X CTRL-O.  Obviously the O stands for Omni
+here, so that you can remember it easier.  Let's use an example for editing C
+source:
+
+	{ ~
+	    struct foo *p; ~
+	    p-> ~
+
+The cursor is after "p->".  Now type CTRL-X CTRL-O.  Vim will offer you a list
+of alternatives, which are the items that "struct foo" contains.  That is
+quite different from using CTRL-P, which would complete any word, while only
+members of "struct foo" are valid here.
+
+For Omni completion to work you may need to do some setup.  For C code you
+need to create a tags file and set the 'tags' option.  That is explained
+|ft-c-omni|.  For other filetypes you may need to do something similar, look
+below |compl-omni-filetypes|.  It only works for specific filetypes.  Check
+the value of the 'omnifunc' option to find out if it would work.
+
 ==============================================================================
 *24.4*	Repeating an insert
 
diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt
index a5fc02e..86de40d 100644
--- a/runtime/doc/usr_31.txt
+++ b/runtime/doc/usr_31.txt
@@ -1,4 +1,4 @@
-*usr_31.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*usr_31.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -249,6 +249,11 @@
 an xterm that supports resizing).
    The gvimrc file is searched for in the same locations as the vimrc file.
 Normally it's name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows.
+The $MYGVIMRC environment variable is set to it, thus you can use this command
+to edit the file, if you have one: >
+
+	:edit $MYGVIMRC
+<
    If for some reason you don't want to use the normal gvimrc file, you can
 specify another one with the "-U" argument: >
 
diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt
index b21b7c3..1ce27b2 100644
--- a/runtime/doc/usr_toc.txt
+++ b/runtime/doc/usr_toc.txt
@@ -1,4 +1,4 @@
-*usr_toc.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*usr_toc.txt*	For Vim version 7.0c.  Last change: 2006 Apr 02
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -49,7 +49,7 @@
 
 
 Reference manual
-|ref-toc|     More detailed information for all commands
+|reference_toc|     More detailed information for all commands
 
 The user manual is available as a single, ready to print HTML and PDF file
 here:
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 46356b0..8e55aac 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0c.  Last change: 2006 Mar 29
+*version7.txt*  For Vim version 7.0c.  Last change: 2006 Apr 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -86,6 +86,12 @@
 For filetype detection: For many types, instead of ~/.dir/filename use
 */.dir/filename, so that it also works for other user's files.
 
+For quite a few filetypes the indent settings have been moved from the
+filetype plugin to the indent plugin.  If you used: >
+	:filetype plugin on
+Then some indent settings may be missing.  You need to use: >
+	:filetype plugin indent on
+
 ":0verbose" now sets 'verbose' to zero instead of one.
 
 Removed the old and incomplete "VimBuddy" code.
@@ -151,6 +157,10 @@
 abbreviated.  This caused unexpected behavior, such as <li> being recognized
 as <line1>.  The items can no longer be abbreviated.
 
+When executing a FileChangedRO autocommand it is no longer allowed to switch
+to another buffer or edit another file.  This is to prevent crashes (the event
+is triggered deep down in the code where changing buffers is not anticipated).
+
 ==============================================================================
 NEW FEATURES						*new-7*
 
@@ -170,7 +180,7 @@
 can be used to turn the string back into the variable value.
 
 The |:let| command can now use "+=".  ":let var += expr" works like
-":let var = var + expr".  "-=" and ".=" works in a similar way.
+":let var = var + expr".  "-=" and ".=" work in a similar way.
 
 With the |:profile| command you can find out where your function or script
 wastes its time.
@@ -277,6 +287,8 @@
 The |--remote-tab| argument can be used to edit a file in a new tab page in an
 already running Vim server.
 
+Variables starting with "t:" are local to a tab page.
+
 More info here: |tabpage|
 The Win32 GUI tabs were implemented by Yegappan Lakshmanan.
 
@@ -747,6 +759,7 @@
 |maparg()|		extra argument: use abbreviation
 |mapcheck()|		extra argument: use abbreviation
 |match()|		extra argument: count
+|matcharg()|		return arguments of |:match| command
 |matchend()|		extra argument: count
 |matchlist()|		list with match and submatches of a pattern in a string
 |matchstr()|		extra argument: count
@@ -981,6 +994,11 @@
 
 Others: ~
 
+The |:read| command has the |++edit| argument.  This means it will use the
+detected 'fileformat', 'fileencoding' and other options for the buffer.  This
+also fixes the problem that editing a compressed file didn't set these
+options.
+
 The Netbeans interface was updated for Sun Studio 10.  The protocol number
 goes from 2.2 to 2.3. (Gordon Prieur)
 
@@ -1056,6 +1074,9 @@
 
 Ruby interface: add line number methods. (Ryan Paul)
 
+The $MYVIMRC environment variable is set to the first found vimrc file.
+The $MYGVIMRC environment variable is set to the first found gvimrc file.
+
 ==============================================================================
 IMPROVEMENTS						*improvements-7*
 
@@ -2183,7 +2204,7 @@
 Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan
 Paul)
 
---- fixes since Vim 6.0b ---
+--- fixes since Vim 7.0b ---
 
 Getting the GCC version in configure didn't work with Solaris sed.  First
 strip any "darwin." and then get the version number.
@@ -2217,7 +2238,7 @@
 
 Typing BS at the "z=" prompt removed the prompt.
 
---- fixes since Vim 6.0c ---
+--- fixes since Vim 7.0c ---
 
 When jumping to another tab page the Vim window size was always set, even when
 nothing in the layout changed.
@@ -2255,4 +2276,113 @@
 Win32: Set the default for 'isprint' back to the wrong default "@,~-255",
 because many people use Windows-1252 while 'encoding' is "latin1".
 
+GTK: Added a workaround for gvim crashing when used over an untrusted ssh
+link, caused by GTK doing something nasty. (Ed Catmur)
+
+Win32: The font used for the tab page labels is too big.  Use the system menu
+font. (George Reilly)
+
+Win32: Adjusting the window position and size to keep it on the screen didn't
+work properly when the taskbar is on the left or top of the screen.
+
+The installman.sh and installml.sh scripts use ${10}, that didn't work with
+old shells.  And use "test -f" instead of "test -e".
+
+Win32: When 'encoding' was set in the vimrc then a directory argument for diff
+mode didn't work.
+
+GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows
+were still at their old position.
+
+The parenmatch plugin didn't remember the highlighting per window.
+
+Using ":bd" for a buffer that's the current window in another tab page caused
+a crash.
+
+For a new tab page the 'scroll' option wasn't set to a good default.
+
+Using an end offset for a search "/pat/e" didn't work properly for multi-byte
+text. (Yukihiro Nakadaira)
+
+":s/\n/,/" doubled the text when used on the last line.
+
+When "search" is in 'foldopen' "[s" and "]s" now open folds.
+
+When using a numbered function "dict" can be omitted, but "self" didn't work
+then.  Always add FC_DICT to the function flags when it's part of a
+dictionary.
+
+When "--remote-tab" executes locally it left an empty tab page.
+
+"gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update
+text.  Do update further lines even though the "$" is displayed.
+
+VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy)
+
+When highlighting of statusline or tabline is changed there was no redraw to
+show the effect.
+
+Mac: Added "CFBundleIdentifier" to infplist.xml.
+
+Added tabpage-local variables t:var.
+
+Win32: Added double-click in tab pages line creates new tab. (Yegappan
+Lakshmanan)
+
+Motif: Added GUI tab pages line. (Yegappan Lakshmanan)
+
+Fixed crash when 'lines' was set to 1000 in a modeline.
+
+When init_spellfile() finds a writable directory in 'runtimepath' but it
+doesn't contain a "spell" directory, create one.
+
+Win32: executable() also finds "xxd" in the directory where Vim was started,
+but "!xxd" doesn't work.  Append the Vim starting directory to $PATH.
+
+The tab page labels are shortened, directory names are reduced to a single
+letter by default.  Added the pathshorten() function to allow a user to do the
+same.
+
+":saveas" now resets 'readonly' if the file was successfully written.
+
+Set $MYVIMRC file to the first found .vimrc file.
+Set $MYGVIMRC file to the first found .gvimrc file.
+Added menu item "Startup Settings" that edits the $MYVIMRC file
+
+Added matcharg().
+
+Error message E745 appeared twice.  Renamed one to E786.
+
+Fixed crash when using "au BufRead * Sexplore" and doing ":help".  Was wiping
+out a buffer that's still in a window.
+
+":hardcopy" resulted in an error message when 'encoding' is "utf-8" and
+'printencoding' is empty.  Now it assumes latin1. (Mike Williams)
+
+The check for the toolbar feature for Motif, depending on certain included
+files, wasn't detailed enough, causing building to fail in gui_xmebw.c.
+
+Using CTRL-E in Insert mode completion after CTRL-P inserted the first match
+instead of the original text.
+
+When displaying a UTF-8 character with a zero lower byte Vim might think the
+previous character is double-wide.
+
+The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8.
+
+Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile.
+HAVE_XM_UNHIGHLIGHTT_H was missing a T.
+
+Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be
+copied at once.  Adjusted the Info.plist file for three icons.
+
+When Visual mode is active while switching to another tabpage could get ml_get
+errors.
+
+When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn'
+to move to the right.
+
+When a line wraps, 'cursorcolumn' was never displayed past the end of the
+line.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/vimball.txt b/runtime/doc/vimball.txt
index 305af96..1fc1e36 100644
--- a/runtime/doc/vimball.txt
+++ b/runtime/doc/vimball.txt
@@ -1,4 +1,4 @@
-*vimball.txt*	For Vim version 7.0c.  Last change: 2006 Mar 24
+*vimball.txt*	For Vim version 7.0c.  Last change: 2006 Apr 01
 
 	Vimball Archiver
 
@@ -56,6 +56,9 @@
 ==============================================================================
 3. Vimball History					*vimball-history*
 
+	4  : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter
+	                    only fires once, so the "Source this file..."
+			    message is now issued only once.
 	3  : Mar 20, 2006 * removed query, now requires sourcing to be
 	                    extracted (:so %).  Message to that effect
 			    included.
diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt
index 954373e..b6db540 100644
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 7.0c.  Last change: 2006 Mar 11
+*windows.txt*   For Vim version 7.0c.  Last change: 2006 Apr 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -33,7 +33,7 @@
 disabled at compile time}
 
 ==============================================================================
-1. Introduction						*windows-intro*
+1. Introduction					*windows-intro* *window*
 
 A window is a viewport onto a buffer.  You can use multiple windows on one
 buffer, or several windows on different buffers.
@@ -618,13 +618,15 @@
 		The |argument-list| is set, like with the |:next| command.
 		The purpose of this command is that it can be used from a
 		program that wants Vim to edit another file, e.g., a debugger.
+		When using the |:tab| modifier each argument is opened in a
+		tab page.  The last window is used if it's empty.
 		{only available when compiled with the +gui feature}
 
 ==============================================================================
 8. Do a command in all buffers or windows			*list-repeat*
 
 							*:windo*
-:windo[!] {cmd}		Execute {cmd} in each window.
+:windo {cmd}		Execute {cmd} in each window.
 			It works like doing this: >
 				CTRL-W t
 				:{cmd}
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index cad2cc1..8d1f155 100644
--- 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 28
+" Last Change:	2006 Apr 04
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -146,7 +146,7 @@
 	\ endif
 
 " Grub (must be before catch *.lst)
-au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf	setf grub
+au BufNewFile,BufRead /boot/grub/menu.lst,/boot/grub/grub.conf,/etc/grub.conf	setf grub
 
 " Assembly (all kinds)
 " *.lst is not pure assembly, it has two extra columns (address, byte codes)
@@ -602,10 +602,10 @@
 au BufNewFile,BufRead *.fs,*.ft			setf forth
 
 " Fortran
-au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.FPP*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95	setf fortran
+au BufNewFile,BufRead *.f,*.F,*.for,*.fpp,*.FPP,*.ftn,*.f77,*.F77,*.f90,*.F90,*.f95,*.F95	setf fortran
 
 " FStab
-au BufNewFile,BufRead fstab			setf fstab
+au BufNewFile,BufRead fstab,mtab		setf fstab
 
 " GDB command files
 au BufNewFile,BufRead .gdbinit			setf gdb
@@ -880,7 +880,7 @@
 au BufNewFile,BufRead *.man			setf man
 
 " Man config
-au BufNewFile,BufRead /etc/man.conf		setf manconf
+au BufNewFile,BufRead /etc/man.conf,man.config	setf manconf
 
 " Maple V
 au BufNewFile,BufRead *.mv,*.mpl,*.mws		setf maple
@@ -1555,6 +1555,10 @@
 " SINDA
 au BufNewFile,BufRead *.sin,*.s85		setf sinda
 
+" SiSU
+au BufNewFile,BufRead *.sst,*.ssm,*.ssi,*.-sst,*._ssi setf sisu
+au BufNewFile,BufRead *.sst.meta,*.-sst.meta,*._sst.meta setf sisu
+
 " SKILL
 au BufNewFile,BufRead *.il,*.ils,*.cdf		setf skill
 
diff --git a/runtime/ftplugin/fortran.vim b/runtime/ftplugin/fortran.vim
index d189bf4..c817b3b 100644
--- a/runtime/ftplugin/fortran.vim
+++ b/runtime/ftplugin/fortran.vim
@@ -1,10 +1,11 @@
 " Vim settings file
 " Language:	Fortran90 (and Fortran95, Fortran77, F and elf90)
-" Version:	0.44
-" Last Change:	2003 May 18
+" Version:	0.45
+" Last Change:	2006 Apr. 03
 " URL:		http://www.unb.ca/chem/ajit/ftplugin/fortran.vim
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-plugin from Vim
+" Credits:      Useful suggestions were made by Stefano Zacchiroli
 
 " Only do these settings when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -26,11 +27,11 @@
   else
     " f90 and f95 allow both fixed and free source form
     " assume fixed source form unless signs of free source form
-    " are detected in the first five columns of the first 25 lines
+    " are detected in the first five columns of the first 250 lines
     " Detection becomes more accurate and time-consuming if more lines
     " are checked. Increase the limit below if you keep lots of comments at
     " the very top of each file and you have a fast computer
-    let s:lmax = 25
+    let s:lmax = 250
     if ( s:lmax > line("$") )
       let s:lmax = line("$")
     endif
@@ -73,7 +74,8 @@
 " Set 'formatoptions' to break comment and text lines but allow long lines
 setlocal fo+=tcql
 
-setlocal include=^#\\=\\s*include\\s\\+
+setlocal include=^\\c#\\=\\s*include\\s\\+
+setlocal suffixesadd+=.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp
 
 let s:cposet=&cpoptions
 set cpoptions-=C
@@ -83,6 +85,7 @@
   let s:notend = '\%(\<end\s\+\)\@<!'
   let s:notselect = '\%(\<select\s\+\)\@<!'
   let s:notelse = '\%(\<end\s\+\|\<else\s\+\)\@<!'
+  let s:notprocedure = '\%(\s\+procedure\>\)\@!'
   let b:match_ignorecase = 1
   let b:match_words =
     \ '\<select\s*case\>:' . s:notselect. '\<case\>:\<end\s*select\>,' .
@@ -95,7 +98,7 @@
     \ s:notend . '\<interface\>:\<end\s*interface\>,'.
     \ s:notend . '\<subroutine\>:\<end\s*subroutine\>,'.
     \ s:notend . '\<function\>:\<end\s*function\>,'.
-    \ s:notend . '\<module\>:\<end\s*module\>,'.
+    \ s:notend . '\<module\>' . s:notprocedure . ':\<end\s*module\>,'.
     \ s:notend . '\<program\>:\<end\s*program\>'
 endif
 
diff --git a/runtime/indent/fortran.vim b/runtime/indent/fortran.vim
index b14273a..465412b 100644
--- a/runtime/indent/fortran.vim
+++ b/runtime/indent/fortran.vim
@@ -2,7 +2,7 @@
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
 " Version:	0.36
 " URL:		http://www.unb.ca/chem/ajit/indent/fortran.vim
-" Last Change:	2004 Apr. 05
+" Last Change:	2006 Apr. 02
 " Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-indent from Vim
 
@@ -12,9 +12,6 @@
 endif
 let b:did_indent = 1
 
-let s:cposet=&cpoptions
-set cpoptions-=C
-
 setlocal indentkeys+==~end,=~case,=~if,=~else,=~do,=~where,=~elsewhere,=~select
 setlocal indentkeys+==~endif,=~enddo,=~endwhere,=~endselect
 
@@ -30,11 +27,11 @@
   else
     " f90 and f95 allow both fixed and free source form
     " assume fixed source form unless signs of free source form
-    " are detected in the first five columns of the first 25 lines
+    " are detected in the first five columns of the first 250 lines
     " Detection becomes more accurate and time-consuming if more lines
     " are checked. Increase the limit below if you keep lots of comments at
     " the very top of each file and you have a fast computer
-    let s:lmax = 25
+    let s:lmax = 250
     if ( s:lmax > line("$") )
       let s:lmax = line("$")
     endif
@@ -64,6 +61,9 @@
   endif
 endif
 
+let s:cposet=&cpoptions
+set cpoptions-=C
+
 function FortranGetIndent(lnum)
   let ind = indent(a:lnum)
   let prevline=getline(a:lnum)
diff --git a/runtime/indent/python.vim b/runtime/indent/python.vim
index 3b560a8..f268bf9 100644
--- a/runtime/indent/python.vim
+++ b/runtime/indent/python.vim
@@ -56,7 +56,7 @@
   " Trick: use the non-existing "dummy" variable to break out of the loop when
   " going too far back.
   call cursor(plnum, 1)
-  let parlnum = searchpair('(', '', ')', 'nbW',
+  let parlnum = searchpair('(\|{\|\[', '', ')\|}\|\]', 'nbW',
 	  \ "line('.') < " . (plnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
 	  \ . " =~ '\\(Comment\\|String\\)$'")
@@ -75,14 +75,14 @@
   "       + b
   "       + c)
   call cursor(a:lnum, 1)
-  let p = searchpair('(', '', ')', 'bW',
+  let p = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
 	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
 	  \ . " =~ '\\(Comment\\|String\\)$'")
   if p > 0
     if p == plnum
       " When the start is inside parenthesis, only indent one 'shiftwidth'.
-      let pp = searchpair('(', '', ')', 'bW',
+      let pp = searchpair('(\|{\|\[', '', ')\|}\|\]', 'bW',
 	  \ "line('.') < " . (a:lnum - s:maxoff) . " ? dummy :"
 	  \ . " synIDattr(synID(line('.'), col('.'), 1), 'name')"
 	  \ . " =~ '\\(Comment\\|String\\)$'")
diff --git a/runtime/lang/menu_de_de.latin1.vim b/runtime/lang/menu_de_de.latin1.vim
index 6254d09..a08a41c 100644
--- a/runtime/lang/menu_de_de.latin1.vim
+++ b/runtime/lang/menu_de_de.latin1.vim
@@ -102,7 +102,7 @@
 
 " {{{  TOOLS / WERKZEUGE
 if has("spell")
-    menutrans &Spelling					&Rechtschreibprüfung
+    menutrans &Spelling					&Rechtschreibung
     menutrans &Spell\ Check\ On				&Rechtschreibprüfung\ An
     menutrans Spell\ Check\ &Off			Rechtschreibprüfung\ &Aus
     menutrans To\ &Next\ error<Tab>]s			Zum\ &Nächsten\ Fehler<Tab>]s
diff --git a/runtime/lang/menu_it_it.latin1.vim b/runtime/lang/menu_it_it.latin1.vim
index 65228e1..184951c 100644
--- a/runtime/lang/menu_it_it.latin1.vim
+++ b/runtime/lang/menu_it_it.latin1.vim
@@ -1,7 +1,7 @@
 " Menu Translations:	Italian / Italiano
-" Maintainer:		Antonio Colombo <azc10@yahoo.com>
-"			Vlad Sandrini <sator72@libero.it>
-" Last Change:	2005 Aug 13
+" Maintainer:		Antonio Colombo <azc100@gmail.com>
+"			Vlad Sandrini <vlad.gently@gmail.com>
+" Last Change:	2006 Apr 03
 
 " Quit when menu translations have already been done.
 if exists("did_menu_trans")
@@ -33,6 +33,7 @@
 "
 menut &Open\.\.\.<Tab>:e		&Apri\.\.\.<Tab>:e
 menut Sp&lit-Open\.\.\.<Tab>:sp	A&pri\ nuova\ Finestra\.\.\.<Tab>:sp
+menut Open\ Tab\.\.\.<Tab>:tabnew Apri\ nuova\ &Linguetta\.\.\.<Tab>:tabnew
 menut &New<Tab>:enew		&Nuovo<Tab>:enew
 menut &Close<Tab>:close		&Chiudi<Tab>:close
 menut &Save<Tab>:w			&Salva<Tab>:w
@@ -84,7 +85,7 @@
 
 menut Toggle\ Insert\ &Mode<Tab>:set\ im!	&Modalità\ Inserimento\ Sì/No<Tab>:set\ im!
 menut Toggle\ Vi\ C&ompatible<Tab>:set\ cp!	C&ompatibile\ Vi\ Sì/No<Tab>:set\ cp!
-menut Search\ &Path\.\.\.	Ca&mmino\ di\ ricerca\.\.\.
+menut Search\ &Path\.\.\.	&Percorso\ di\ ricerca\.\.\.
 menut Ta&g\ Files\.\.\.		File\ Ta&g\.\.\.
 "
 " Opzioni GUI
@@ -166,7 +167,7 @@
 menut Spell\ Check\ &Off		&Disattiva\ controllo\ ortografico
 menut To\ &Next\ error<Tab>]s		Errore\ &Seguente<tab>]s
 menut To\ &Previous\ error<Tab>[s	Errore\ &Precedente<tab>[s
-menut Suggest\ &Corrections<Tab>z?	&Suggerimenti<Tab>z?
+menut Suggest\ &Corrections<Tab>z=	&Suggerimenti<Tab>z=
 menut &Repeat\ correction<Tab>:spellrepall	&Ripeti\ correzione<Tab>:spellrepall
 menut Set\ language\ to\ "en"		Imposta\ lingua\ a\ "en"
 menut Set\ language\ to\ "en_au"	Imposta\ lingua\ a\ "en_au"
diff --git a/runtime/menu.vim b/runtime/menu.vim
index a9b1c0e..31e2fb3 100644
--- 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 Mar 09
+" Last Change:	2006 Apr 02
 
 " 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.
@@ -177,6 +177,28 @@
 
 an 20.425	 &Edit.-SEP3-				<Nop>
 an 20.430	 &Edit.Settings\ &Window		:options<CR>
+an 20.435	 &Edit.Startup\ &Settings		:call <SID>EditVimrc()<CR>
+
+fun! s:EditVimrc()
+  if $MYVIMRC != ''
+    let fname = "$MYVIMRC"
+  elseif has("win32") || has("dos32") || has("dos16") || has("os2")
+    if $HOME != ''
+      let fname = "$HOME/_vimrc"
+    else
+      let fname = "$VIM/_vimrc"
+    endif
+  elseif has("amiga")
+    let fname = "s:.vimrc"
+  else
+    let fname = "$HOME/.vimrc"
+  endif
+  if &mod
+    exe "split " . fname
+  else
+    exe "edit " . fname
+  endif
+endfun
 
 fun! s:FixFText()
   " Fix text in nameless register to be used with :promptfind.
diff --git a/runtime/mswin.vim b/runtime/mswin.vim
index fb29237..1ceef84 100644
--- a/runtime/mswin.vim
+++ b/runtime/mswin.vim
@@ -1,7 +1,7 @@
 " Set options and add mapping such that Vim behaves a lot like MS-Windows
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last change:	2006 Mar 28
+" Last change:	2006 Apr 02
 
 " bail out if this isn't wanted (mrsvim.vim uses this).
 if exists("g:skip_loading_mswin") && g:skip_loading_mswin
@@ -83,6 +83,8 @@
 inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
 cnoremap <C-A> <C-C>gggH<C-O>G
 onoremap <C-A> <C-C>gggH<C-O>G
+snoremap <C-A> <C-C>gggH<C-O>G
+xnoremap <C-A> <C-C>ggVG
 
 " CTRL-Tab is Next window
 noremap <C-Tab> <C-W>w
diff --git a/runtime/plugin/matchparen.vim b/runtime/plugin/matchparen.vim
index 5750517..a3475f0 100644
--- a/runtime/plugin/matchparen.vim
+++ b/runtime/plugin/matchparen.vim
@@ -1,6 +1,6 @@
 " Vim plugin for showing matching parens
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2006 Mar 29
+" Last Change: 2006 Apr 04
 
 " Exit quickly when:
 " - this plugin was already loaded (or disabled)
@@ -16,8 +16,6 @@
   autocmd! CursorMoved,CursorMovedI * call s:Highlight_Matching_Pair()
 augroup END
 
-let s:paren_hl_on = 0
-
 " Skip the rest if it was already done.
 if exists("*s:Highlight_Matching_Pair")
   finish
@@ -30,9 +28,9 @@
 " for any matching paren.
 function! s:Highlight_Matching_Pair()
   " Remove any previous match.
-  if s:paren_hl_on
+  if exists('w:paren_hl_on') && w:paren_hl_on
     3match none
-    let s:paren_hl_on = 0
+    let w:paren_hl_on = 0
   endif
 
   " Avoid that we remove the popup menu.
@@ -63,21 +61,25 @@
 
   " Figure out the arguments for searchpairpos().
   " Restrict the search to visible lines with "stopline".
-  " And avoid searching very far (e.g., for closed folds)
+  " And avoid searching very far (e.g., for closed folds and long lines)
   if i % 2 == 0
     let s_flags = 'nW'
     let c2 = plist[i + 1]
-    let stopline = line('w$')
-    if stopline > c_lnum + 100
-      let stopline = c_lnu + 100
+    if has("byte_offset") && has("syntax_items") && &smc > 0
+      let stopbyte = min([line2byte("$"), line2byte(".") + col(".") + &smc * 2])
+      let stopline = min([line('w$'), byte2line(stopbyte)])
+    else
+      let stopline = min([line('w$'), c_lnum + 100])
     endif
   else
     let s_flags = 'nbW'
     let c2 = c
     let c = plist[i - 1]
-    let stopline = line('w0')
-    if stopline < c_lnum - 100
-      let stopline = c_lnu - 100
+    if has("byte_offset") && has("syntax_items") && &smc > 0
+      let stopbyte = max([1, line2byte(".") + col(".") - &smc * 2])
+      let stopline = max([line('w0'), byte2line(stopbyte)])
+    else
+      let stopline = max([line('w0'), c_lnum - 100])
     endif
   endif
   if c == '['
@@ -86,7 +88,7 @@
   endif
 
   " When not in a string or comment ignore matches inside them.
-  let s_skip ='synIDattr(synID(c_lnum, c_col - before, 0), "name") ' .
+  let s_skip ='synIDattr(synID(line("."), col(".") - before, 0), "name") ' .
 	\ '=~?  "string\\|comment"'
   execute 'if' s_skip '| let s_skip = 0 | endif'
 
@@ -105,7 +107,7 @@
   if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$')
     exe '3match MatchParen /\(\%' . c_lnum . 'l\%' . (c_col - before) .
 	  \ 'c\)\|\(\%' . m_lnum . 'l\%' . m_col . 'c\)/'
-    let s:paren_hl_on = 1
+    let w:paren_hl_on = 1
   endif
 endfunction
 
diff --git a/runtime/plugin/vimballPlugin.vim b/runtime/plugin/vimballPlugin.vim
index cb71404..3515889 100644
--- a/runtime/plugin/vimballPlugin.vim
+++ b/runtime/plugin/vimballPlugin.vim
@@ -21,7 +21,7 @@
 com! -ra -na=+ -bang MkVimball call vimball#MkVimball(<line1>,<line2>,<bang>0,<f-args>)
 com! -na=0 UseVimball  call vimball#Vimball(1)
 com! -na=0 VimballList call vimball#Vimball(0)
-au BufReadPost *.vba echohl WarningMsg | echo "Source this file to extract it! (:so %)" | echohl None
+au BufEnter *.vba echohl WarningMsg | echo "Source this file to extract it! (:so %)" | echohl None
 
 let &cpo= s:keepcpo
 unlet s:keepcpo
diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim
index f826262..e24dbe3 100644
--- a/runtime/syntax/c.vim
+++ b/runtime/syntax/c.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2005 Jun 20
+" Last Change:	2006 Apr 05
 
 " Quit when a (custom) syntax file was already loaded
 if exists("b:current_syntax")
@@ -184,7 +184,7 @@
 
 if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
   if exists("c_gnu")
-    syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__
+    syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__ __func__
   endif
   syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
   syn keyword cConstant __STDC_VERSION__
@@ -195,6 +195,7 @@
   syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
   syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
   if !exists("c_no_c99")
+    syn keyword cConstant __func__
     syn keyword cConstant LLONG_MAX ULLONG_MAX
     syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
     syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
diff --git a/runtime/syntax/desc.vim b/runtime/syntax/desc.vim
index 0d0dbbd..a454fb0 100644
--- a/runtime/syntax/desc.vim
+++ b/runtime/syntax/desc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
-" Language:	ROCKLinux .desc
-" Maintainer:	Piotr Esden-Tempski <esden@rocklinux.org>
-" Last Change:	2002 Apr 23
+" Language:	T2 / ROCK Linux .desc
+" Maintainer:	René Rebe <rene@exactcode.de>, Piotr Esden-Tempski <esden@rocklinux.org>
+" Last Change:	2006 Mar 30
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -14,10 +14,11 @@
 " syntax definitions
 
 setl iskeyword+=-
-syn keyword descFlag DIETLIBC contained
+syn keyword descFlag DIETLIBC KAFFE JAIL FPIC-QUIRK NO-LIBTOOL-QUIRK AUTOMAKE-QUIRK NO-AS-NEEDED NO-SSP contained
 syn keyword descLicense Unknown GPL LGPL FDL MIT BSD OpenSource Free-to-use Commercial contained
 
 " tags
+syn match descTag /^\[\(COPY\)\]/
 syn match descTag /^\[\(I\|TITLE\)\]/
 syn match descTag /^\[\(T\|TEXT\)\]/ contained
 syn match descTag /^\[\(U\|URL\)\]/
@@ -29,6 +30,7 @@
 syn match descTag /^\[\(R\|ARCH\|ARCHITECTURE\)\]/
 syn match descTag /^\[\(L\|LICENSE\)\]/ contained
 syn match descTag /^\[\(S\|STATUS\)\]/
+syn match descTag /^\[\(O\|CONF\)\]/
 syn match descTag /^\[\(V\|VER\|VERSION\)\]/
 syn match descTag /^\[\(P\|PRI\|PRIORITY\)\]/ nextgroup=descInstall skipwhite
 syn match descTag /^\[\(D\|DOWN\|DOWNLOAD\)\]/ nextgroup=descSum skipwhite
@@ -36,7 +38,7 @@
 " misc
 syn match descUrl /\w\+:\/\/\S\+/
 syn match descCategory /\w\+\/\w\+/ contained
-syn match descEmail /<\w\+@[\.A-Za-z0-9]\+>/
+syn match descEmail /<[\.A-Za-z0-9]\+@[\.A-Za-z0-9]\+>/
 
 " priority tag
 syn match descInstallX /X/ contained
diff --git a/runtime/syntax/fortran.vim b/runtime/syntax/fortran.vim
index ae1fa8b..4dd014e 100644
--- a/runtime/syntax/fortran.vim
+++ b/runtime/syntax/fortran.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Fortran95 (and Fortran90, Fortran77, F and elf90)
-" Version:	0.86
+" Version:	0.87
 " URL:		http://www.unb.ca/chem/ajit/syntax/fortran.vim
-" Last Change:	2003 Mar. 12
+" Last Change:	2006 Apr. 04
 " Maintainer:	Ajit J. Thakkar (ajit AT unb.ca); <http://www.unb.ca/chem/ajit/>
 " Usage:	Do :help fortran-syntax from Vim
 " Credits:
@@ -74,7 +74,7 @@
     " Detection becomes more accurate and time-consuming if more lines
     " are checked. Increase the limit below if you keep lots of comments at
     " the very top of each file and you have a fast computer.
-    let b:lmax = 25
+    let b:lmax = 250
     if ( b:lmax > line("$") )
       let b:lmax = line("$")
     endif
@@ -94,10 +94,7 @@
 
 syn case ignore
 
-if b:fortran_dialect == "f77"
-  syn match fortranIdentifier		"\<\a\(\a\|\d\)*\>" contains=fortranSerialNumber
-else
-  syn match fortran90Identifier		"\<\a\w*\>" contains=fortranSerialNumber
+if b:fortran_dialect !=? "f77"
   if version >= 600
     if b:fortran_fixed_source == 1
       syn match fortranConstructName	"^\s\{6,}\zs\a\w*\ze\s*:"
@@ -120,7 +117,9 @@
 
 syn match   fortranUnitHeader	"\<end\>"
 
-syn keyword fortranType		character complex integer
+syn match fortranType		"\<character\>"
+syn match fortranType		"\<complex\>"
+syn match fortranType		"\<integer\>"
 syn keyword fortranType		intrinsic
 syn match fortranType		"\<implicit\>"
 syn keyword fortranStructure	dimension
@@ -129,7 +128,7 @@
 syn keyword fortranCall		call
 syn match fortranUnitHeader	"\<function\>"
 syn match fortranUnitHeader	"\<program\>"
-syn keyword fortranStatement	return stop
+syn keyword fortranKeyword	return stop
 syn keyword fortranConditional	else then
 syn match fortranConditional	"\<if\>"
 syn match fortranRepeat		"\<do\>"
@@ -137,7 +136,7 @@
 syn keyword fortranTodo		contained todo fixme
 
 "Catch errors caused by too many right parentheses
-syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup,cIncluded
+syn region fortranParen transparent start="(" end=")" contains=ALLBUT,fortranParenError,@fortranCommentGroup,cIncluded,@spell
 syn match  fortranParenError   ")"
 
 syn match fortranOperator	"\.\s*n\=eqv\s*\."
@@ -146,8 +145,7 @@
 
 syn match fortranBoolean	"\.\s*\(true\|false\)\s*\."
 
-syn keyword fortranReadWrite	backspace close inquire open rewind endfile
-syn keyword fortranReadWrite	read write print
+syn keyword fortranReadWrite	backspace close endfile inquire open print read rewind write
 
 "If tabs are allowed then the left margin checks do not work
 if exists("fortran_have_tabs")
@@ -156,36 +154,14 @@
   syn match fortranTab		"\t"
 endif
 
-syn keyword fortranIO		unit file iostat access blank fmt form
-syn keyword fortranIO		recl status exist opened number named name
-syn keyword fortranIO		sequential direct rec
-syn keyword fortranIO		formatted unformatted nextrec
+syn keyword fortranIO		access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit
 
-syn keyword fortran66Intrinsic		cabs ccos cexp clog csin csqrt
-syn keyword fortran66Intrinsic		dacos dasin datan datan2 dcos dcosh
-syn keyword fortran66Intrinsic		ddim dexp dint dlog dlog10 dmod dabs
-syn keyword fortran66Intrinsic		dnint dsign dsin dsinh dsqrt dtan
-syn keyword fortran66Intrinsic		dtanh iabs idim idnint isign idint ifix
-syn keyword fortran66Intrinsic		amax0 amax1 dmax1 max0 max1
-syn keyword fortran66Intrinsic		amin0 amin1 dmin1 min0 min1
-syn keyword fortran66Intrinsic		amod float sngl alog alog10
+syn keyword fortran66Intrinsic		alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl
 
 " Intrinsics provided by some vendors
-syn keyword fortranExtraIntrinsic	cdabs cdcos cdexp cdlog cdsin cdsqrt
-syn keyword fortranExtraIntrinsic	cqabs cqcos cqexp cqlog cqsin cqsqrt
-syn keyword fortranExtraIntrinsic	qacos qasin qatan qatan2 qcos qcosh
-syn keyword fortranExtraIntrinsic	qdim qexp iqint qlog qlog10 qmod qabs
-syn keyword fortranExtraIntrinsic	qnint qsign qsin qsinh qsqrt qtan
-syn keyword fortranExtraIntrinsic	qtanh qmax1 qmin1
-syn keyword fortranExtraIntrinsic	dimag qimag dcmplx qcmplx dconjg qconjg
-syn keyword fortranExtraIntrinsic	gamma dgamma qgamma algama dlgama qlgama
-syn keyword fortranExtraIntrinsic	erf derf qerf erfc derfc qerfc
-syn keyword fortranExtraIntrinsic	dfloat
+syn keyword fortranExtraIntrinsic	algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama erf erfc gamma iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh
 
-syn keyword fortran77Intrinsic	abs acos aimag aint anint asin atan atan2
-syn keyword fortran77Intrinsic	cos sin tan sinh cosh tanh exp log log10
-syn keyword fortran77Intrinsic	sign sqrt int cmplx nint min max conjg
-syn keyword fortran77Intrinsic	char ichar index
+syn keyword fortran77Intrinsic	abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh
 syn match fortran77Intrinsic	"\<len\s*[(,]"me=s+3
 syn match fortran77Intrinsic	"\<real\s*("me=s+4
 syn match fortranType		"\<implicit\s\+real"
@@ -231,15 +207,16 @@
 
 syn keyword fortranTypeEx	external
 syn keyword fortranIOEx		format
-syn keyword fortranStatementEx	continue
-syn match fortranStatementEx	"\<go\s*to\>"
+syn keyword fortranKeywordEx	continue
+syn match fortranKeywordEx	"\<go\s*to\>"
 syn region fortranStringEx	start=+'+ end=+'+ contains=fortranContinueMark,fortranLeftMargin,fortranSerialNumber
 syn keyword fortran77IntrinsicEx	dim lge lgt lle llt mod
-syn keyword fortranStatementOb	assign pause to
+syn keyword fortranKeywordOb	assign pause to
 
 if b:fortran_dialect != "f77"
 
-  syn keyword fortranType	type none
+  syn match fortranType         "\<type\>"
+  syn keyword fortranType	none
 
   syn keyword fortranStructure	private public intent optional
   syn keyword fortranStructure	pointer target allocatable
@@ -252,7 +229,7 @@
   syn keyword fortranUnitHeader	result operator assignment
   syn match fortranUnitHeader	"\<interface\>"
   syn match fortranUnitHeader	"\<recursive\>"
-  syn keyword fortranStatement	allocate deallocate nullify cycle exit
+  syn keyword fortranKeyword	allocate deallocate nullify cycle exit
   syn match fortranConditional	"\<select\>"
   syn keyword fortranConditional	case default where elsewhere
 
@@ -263,21 +240,9 @@
   syn keyword fortranIO		pad position action delim readwrite
   syn keyword fortranIO		eor advance nml
 
-  syn keyword fortran90Intrinsic	adjustl adjustr all allocated any
-  syn keyword fortran90Intrinsic	associated bit_size btest ceiling
-  syn keyword fortran90Intrinsic	count cshift date_and_time
-  syn keyword fortran90Intrinsic	digits dot_product eoshift epsilon exponent
-  syn keyword fortran90Intrinsic	floor fraction huge iand ibclr ibits ibset ieor
-  syn keyword fortran90Intrinsic	ior ishft ishftc lbound len_trim
-  syn keyword fortran90Intrinsic	matmul maxexponent maxloc maxval merge
-  syn keyword fortran90Intrinsic	minexponent minloc minval modulo mvbits nearest
-  syn keyword fortran90Intrinsic	pack present product radix random_number
+  syn keyword fortran90Intrinsic	adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack precision present product radix random_number random_seed range repeat reshape rrspacing
+  syn keyword fortran90Intrinsic	scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify
   syn match fortran90Intrinsic		"\<not\>\(\s*\.\)\@!"me=s+3
-  syn keyword fortran90Intrinsic	random_seed range repeat reshape rrspacing scale
-  syn keyword fortran90Intrinsic	selected_int_kind selected_real_kind scan
-  syn keyword fortran90Intrinsic	shape size spacing spread set_exponent
-  syn keyword fortran90Intrinsic	tiny transpose trim ubound unpack verify
-  syn keyword fortran90Intrinsic	precision sum system_clock
   syn match fortran90Intrinsic	"\<kind\>\s*[(,]"me=s+4
 
   syn match  fortranUnitHeader	"\<end\s*function"
@@ -343,7 +308,7 @@
 endif
 
 if b:fortran_dialect != "f77"
-  syn match fortranComment	excludenl "!.*$" contains=@fortranCommentGroup
+  syn match fortranComment	excludenl "!.*$" contains=@fortranCommentGroup,@spell
 endif
 
 "cpp is often used with Fortran
@@ -356,26 +321,27 @@
 syn match	cInclude		"^\s*#\s*include\>\s*["<]" contains=cIncluded
 
 "Synchronising limits assume that comment and continuation lines are not mixed
-if (b:fortran_fixed_source == 0)
-  syn sync linecont "&" maxlines=40
+if exists("fortran_fold") || exists("fortran_more_precise")
+  syn sync fromstart
+elseif (b:fortran_fixed_source == 0)
+  syn sync linecont "&" minlines=20
 else
   syn sync minlines=20
 endif
 
 if version >= 600 && exists("fortran_fold")
 
-  syn sync fromstart
   if (b:fortran_fixed_source == 1)
     syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
     syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
-    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
     syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\([!c*]\|\s*#\).*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
   else
     syn region fortranProgram transparent fold keepend start="^\s*program\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(program\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranModule
     syn region fortranModule transparent fold keepend start="^\s*module\s\+\(procedure\)\@!\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\(module\(\s\+\z1\>\)\=\|$\)" contains=ALLBUT,fortranProgram
-    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
+    syn region fortranFunction transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*\(\(\(real \|integer \|logical \|complex \|double \s*precision \)\s*\((\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\|type\s\+(\s*\w\+\s*) \|character \((\(\s*len\s*=\)\=\s*\d\+\s*)\|(\(\s*kind\s*=\)\=\s*\w\+\s*)\)\=\)\=\s*function\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|function\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranSubroutine transparent fold keepend extend start="^\s*\(elemental \|pure \|recursive \)\=\s*subroutine\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|subroutine\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule
     syn region fortranBlockData transparent fold keepend start="\<block\s*data\s\+\z(\a\w*\)" skip="^\s*[!#].*$" excludenl end="\<end\s*\($\|block\s*data\(\s\+\z1\>\)\=\)" contains=ALLBUT,fortranProgram,fortranModule,fortranSubroutine,fortranFunction,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
     syn region fortranInterface transparent fold keepend extend start="^\s*interface\>" skip="^\s*[!#].*$" excludenl end="\<end\s*interface\>" contains=ALLBUT,fortranProgram,fortranModule,fortran77Loop,fortranCase,fortran90Loop,fortranIfBlock
@@ -422,31 +388,31 @@
   " fortranBlockData
   " fortran77Loop, fortran90Loop, fortranIfBlock, fortranCase
   " fortranMultiCommentLines
-  HiLink fortranStatement		Statement
-  HiLink fortranConstructName	Special
-  HiLink fortranConditional		Conditional
+  HiLink fortranKeyword 	Keyword
+  HiLink fortranConstructName	Identifier
+  HiLink fortranConditional	Conditional
   HiLink fortranRepeat		Repeat
-  HiLink fortranTodo			Todo
-  HiLink fortranContinueMark		Todo
+  HiLink fortranTodo		Todo
+  HiLink fortranContinueMark	Todo
   HiLink fortranString		String
   HiLink fortranNumber		Number
-  HiLink fortranOperator		Operator
+  HiLink fortranOperator	Operator
   HiLink fortranBoolean		Boolean
-  HiLink fortranLabelError		Error
-  HiLink fortranObsolete		Todo
-  HiLink fortranType			Type
-  HiLink fortranStructure		Type
-  HiLink fortranStorageClass		StorageClass
-  HiLink fortranCall			fortranUnitHeader
-  HiLink fortranUnitHeader		fortranPreCondit
-  HiLink fortranReadWrite		fortran90Intrinsic
-  HiLink fortranIO			fortran90Intrinsic
-  HiLink fortran95Intrinsic		fortran90Intrinsic
-  HiLink fortran77Intrinsic		fortran90Intrinsic
-  HiLink fortran90Intrinsic		Special
+  HiLink fortranLabelError	Error
+  HiLink fortranObsolete	Todo
+  HiLink fortranType		Type
+  HiLink fortranStructure	Type
+  HiLink fortranStorageClass	StorageClass
+  HiLink fortranCall		fortranUnitHeader
+  HiLink fortranUnitHeader	fortranPreCondit
+  HiLink fortranReadWrite	Keyword
+  HiLink fortranIO		Keyword
+  HiLink fortran95Intrinsic	fortran90Intrinsic
+  HiLink fortran77Intrinsic	fortran90Intrinsic
+  HiLink fortran90Intrinsic	Function
 
   if ( b:fortran_dialect == "elf" || b:fortran_dialect == "F" )
-    HiLink fortranStatementOb	fortranObsolete
+    HiLink fortranKeywordOb	fortranObsolete
     HiLink fortran66Intrinsic	fortranObsolete
     HiLink fortran77IntrinsicR	fortranObsolete
     HiLink fortranUnitHeaderR	fortranObsolete
@@ -454,47 +420,47 @@
     HiLink fortranStorageClassR	fortranObsolete
     HiLink fortran90StorageClassR	fortranObsolete
     HiLink fortran77OperatorR	fortranObsolete
-    HiLink fortranInclude		fortranObsolete
+    HiLink fortranInclude	fortranObsolete
   else
-    HiLink fortranStatementOb	Statement
+    HiLink fortranKeywordOb	fortranKeyword
     HiLink fortran66Intrinsic	fortran90Intrinsic
     HiLink fortran77IntrinsicR	fortran90Intrinsic
     HiLink fortranUnitHeaderR	fortranPreCondit
     HiLink fortranTypeR		fortranType
     HiLink fortranStorageClassR	fortranStorageClass
     HiLink fortran77OperatorR	fortranOperator
-    HiLink fortranInclude		Include
+    HiLink fortranInclude	Include
     HiLink fortran90StorageClassR	fortranStorageClass
   endif
 
   if ( b:fortran_dialect == "F" )
     HiLink fortranLabelNumber	fortranObsolete
-    HiLink fortranTarget		fortranObsolete
-    HiLink fortranFormatSpec		fortranObsolete
-    HiLink fortranFloatDExp		fortranObsolete
-    HiLink fortranFloatNoDec		fortranObsolete
+    HiLink fortranTarget	fortranObsolete
+    HiLink fortranFormatSpec	fortranObsolete
+    HiLink fortranFloatDExp	fortranObsolete
+    HiLink fortranFloatNoDec	fortranObsolete
     HiLink fortranFloatIniDec	fortranObsolete
     HiLink fortranFloatEndDec	fortranObsolete
-    HiLink fortranTypeEx		fortranObsolete
+    HiLink fortranTypeEx	fortranObsolete
     HiLink fortranIOEx		fortranObsolete
-    HiLink fortranStatementEx	fortranObsolete
-    HiLink fortranStringEx		fortranObsolete
+    HiLink fortranKeywordEx	fortranObsolete
+    HiLink fortranStringEx	fortranObsolete
     HiLink fortran77IntrinsicEx	fortranObsolete
     HiLink fortranUnitHeaderEx	fortranObsolete
     HiLink fortranConditionalEx	fortranObsolete
     HiLink fortran90IntrinsicEx	fortranObsolete
   else
     HiLink fortranLabelNumber	Special
-    HiLink fortranTarget		Special
-    HiLink fortranFormatSpec		Identifier
-    HiLink fortranFloatDExp		fortranFloat
-    HiLink fortranFloatNoDec		fortranFloat
+    HiLink fortranTarget	Special
+    HiLink fortranFormatSpec	Identifier
+    HiLink fortranFloatDExp	fortranFloat
+    HiLink fortranFloatNoDec	fortranFloat
     HiLink fortranFloatIniDec	fortranFloat
     HiLink fortranFloatEndDec	fortranFloat
-    HiLink fortranTypeEx		fortranType
+    HiLink fortranTypeEx	fortranType
     HiLink fortranIOEx		fortranIO
-    HiLink fortranStatementEx	fortranStatement
-    HiLink fortranStringEx		fortranString
+    HiLink fortranKeywordEx	fortranKeyword
+    HiLink fortranStringEx	fortranString
     HiLink fortran77IntrinsicEx	fortran90Intrinsic
     HiLink fortranUnitHeaderEx	fortranUnitHeader
     HiLink fortranConditionalEx	fortranConditional
@@ -502,21 +468,18 @@
   endif
 
   HiLink fortranFloat		Float
-  HiLink fortran90Identifier		fortranIdentifier
-  "Uncomment the next line if you want all fortran variables to be highlighted
-  "HiLink fortranIdentifier		Identifier
-  HiLink fortranPreCondit		PreCondit
+  HiLink fortranPreCondit	PreCondit
   HiLink fortranInclude		Include
-  HiLink cIncluded			fortranString
-  HiLink cInclude			Include
-  HiLink cPreProc			PreProc
-  HiLink cPreCondit			PreCondit
-  HiLink fortranParenError		Error
+  HiLink cIncluded		fortranString
+  HiLink cInclude		Include
+  HiLink cPreProc		PreProc
+  HiLink cPreCondit		PreCondit
+  HiLink fortranParenError	Error
   HiLink fortranComment		Comment
-  HiLink fortranSerialNumber		Todo
-  HiLink fortranTab			Error
+  HiLink fortranSerialNumber	Todo
+  HiLink fortranTab		Error
   " Vendor extensions
-  HiLink fortranExtraIntrinsic	Special
+  HiLink fortranExtraIntrinsic	Function
 
   delcommand HiLink
 endif
diff --git a/runtime/syntax/rhelp.vim b/runtime/syntax/rhelp.vim
index af86264..1633998 100644
--- a/runtime/syntax/rhelp.vim
+++ b/runtime/syntax/rhelp.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    R Help File
 " Maintainer:  Johannes Ranke <jranke@uni-bremen.de>
-" Last Change: 2006 Mär 06
+" Last Change: 2006 Apr 05
 " 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
@@ -15,7 +15,7 @@
 
 " Version Clears: {{{1
 " For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
+" For version 6.x and 7.x: Quit when a syntax file was already loaded
 if version < 600 
   syntax clear
 elseif exists("b:current_syntax")
@@ -36,7 +36,7 @@
 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
+elseif filereadable('/usr/share/vim/vimcurrent/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
@@ -46,12 +46,12 @@
 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
+syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpLink contained
 
 " Strings {{{1
 syn region rhelpString start=/"/ end=/"/ 
 
-" Special TeX characters  ( \$ \& \% \# \{ \} \_) {{{1
+" Special characters  ( \$ \& \% \# \{ \} \_) {{{1
 syn match rhelpSpecialChar        "\\[$&%#{}_]"
 
 " Special Delimiters {{{1
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 3a55925..4d0228e 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -1,8 +1,8 @@
 " Vim syntax file
 " Language:	Vim 7.0 script
 " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
-" Last Change:	March 29, 2006
-" Version:	7.0-37	NOT RELEASED
+" Last Change:	April 04, 2006
+" Version:	7.0-38
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -55,7 +55,7 @@
 syn case match
 
 " Function Names {{{2
-syn keyword vimFuncName contained	add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call changenr char2nr cindent col complete complete_add complete_check confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getpos getqflist getreg getregtype getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matchend matchlist matchstr max min mkdir mode nextnonblank nr2char prevnonblank printf pumvisible range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setpos setqflist setreg setwinvar simplify sort soundfold spellbadword spellsuggest split str2nr strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile 
+syn keyword vimFuncName contained	add append argc argidx argv browse browsedir bufexists buflisted bufloaded bufname bufnr bufwinnr byte2line byteidx call changenr char2nr cindent col complete complete_add complete_check confirm copy count cscope_connection cursor deepcopy delete did_filetype diff_filler diff_hlID empty escape eval eventhandler executable exists expand expr8 extend filereadable filewritable filter finddir findfile fnamemodify foldclosed foldclosedend foldlevel foldtext foldtextresult foreground function garbagecollect get getbufline getbufvar getchar getcharmod getcmdline getcmdpos getcmdtype getcwd getfontname getfperm getfsize getftime getftype getline getloclist getpos getqflist getreg getregtype getwinposx getwinposy getwinvar glob globpath has has_key hasmapto histadd histdel histget histnr hlexists hlID hostname iconv indent index input inputdialog inputlist inputrestore inputsave inputsecret insert isdirectory islocked items join keys len libcall libcallnr line line2byte lispindent localtime map maparg mapcheck match matcharg matchend matchlist matchstr max min mkdir mode nextnonblank nr2char pathshorten prevnonblank printf pumvisible range readfile reltime reltimestr remote_expr remote_foreground remote_peek remote_read remote_send remove rename repeat resolve reverse search searchdecl searchpair searchpairpos searchpos server2client serverlist setbufvar setcmdpos setline setloclist setpos setqflist setreg setwinvar simplify sort soundfold spellbadword spellsuggest split str2nr strftime stridx string strlen strpart strridx strtrans submatch substitute synID synIDattr synIDtrans system tabpagebuflist tabpagenr tabpagewinnr tagfiles taglist tempname tolower toupper tr type values virtcol visualmode winbufnr wincol winheight winline winnr winrestcmd winrestview winsaveview winwidth writefile 
 
 "--- syntax above generated by mkvimvim ---
 " Special Vim Highlighting (not automatic) {{{1
diff --git a/runtime/tutor/tutor.pl b/runtime/tutor/tutor.pl
index 847827f..4cadb8c 100644
--- a/runtime/tutor/tutor.pl
+++ b/runtime/tutor/tutor.pl
@@ -5,7 +5,7 @@
      Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o by
      wyja¶niæ je wszystkie w tym tutorialu. Ten przewodnik ma nauczyæ
      Ciê pos³ugiwaæ siê wystarczaj±co wieloma komendami by¶ móg³ ³atwo
-     u¿ywaæ Vim-a jako edytora ogólnego przeznaczenia.
+     u¿ywaæ Vima jako edytora ogólnego przeznaczenia.
 
      Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y
      od tego jak wiele czasu spêdzisz na eksperymentowaniu.  
@@ -15,10 +15,10 @@
 	 wcze¶niej kopiê tego pliku do æwiczeñ (je¶li zacz±³e¶ komend±
 	 "vimtutor" to ju¿ pracujesz na kopii).
 
-     Wa¿ne jest, by¶ pamiêta³, ¿e przewodnik ten zosta³ zaprojektowany do
-     nauki poprzez æwiczenia. To oznacza, ¿e musisz wykonywaæ polecenia
-     by nauczyæ siê ich prawid³owo. Je¶li bêdziesz jedynie czyta³ tekst
-     szybko zapomnisz wiele poleceñ!
+	 Pamiêtaj ¿e przewodnik ten zosta³ zaprojektowany do nauki poprzez
+	 æwiczenia. Oznacza to, ¿e musisz wykonywaæ polecenia by nauczyæ siê ich
+	 prawid³owo. Je¶li bêdziesz jedynie czyta³ tekst szybko zapomnisz wiele
+	 poleceñ!
 
      Teraz upewnij siê, ¿e nie masz wci¶niêtego CapsLocka i wciskaj  j
      tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu.
@@ -45,7 +45,7 @@
 
 Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj±c  hjkl  bêdziesz
        w stanie poruszaæ siê o wiele szybciej jak siê tylko przyzwyczaisz.
-	   Naprawdê!
+       Naprawdê!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
@@ -65,7 +65,7 @@
      wyj¶æ i wróciæ do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi³e¶. W nastêpnych
-lekcjach dowiesz siê jak je zapamiêtywaæ.
+       lekcjach dowiesz siê jak je zapamiêtywaæ.
 
   5. Przenie¶ kursor do lekcji 1.3.
 
@@ -150,16 +150,16 @@
   1. Zakoñcz tutorial tak jak w lekcji 1.2.:  :q!
 
   2. W pow³oce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiaj±cym edytor Vimm. 'tutor' to nazwa pliku
+     "vim" jest poleceniem uruchamiaj±cym edytor Vim. 'tutor' to nazwa pliku
      jaki chcesz edytowaæ. U¿yj pliku jaki mo¿e zostaæ zmieniony.
 
   3. Dodaj i usuñ tekst tak jak siê nauczy³e¶ w poprzednich lekcjach.
 
-  4. Zapisz plik ze zmianami w opu¶æ Vima:  :wq<ENTER>
+  4. Zapisz plik ze zmianami i opu¶æ Vima:  :wq<ENTER>
 
   5. Uruchom ponownie vimtutor i przejd¼ do podsumowania lekcji.
 
-  6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je.
+  6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -168,21 +168,21 @@
   1. Poruszasz kursorem u¿ywaj±c "strza³ek" i klawiszy  hjkl .
        h (w lewo)	 j (w dó³)	 k (do góry)		l (w prawo)
 
-  2. By wej¶æ do Vim-a (z pow³oki) wpisz:
+  2. By wej¶æ do Vima (z pow³oki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyj¶æ z Vim-a wpisz:
+  3. By wyj¶æ z Vima wpisz:
 			    <ESC> :q!<ENTER>  by usun±c wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowaæ.
 
   4. By usun±æ znak pod kursorem wci¶nij:  x
 
   5. By wstawiæ tekst przed kursorem lub dodaæ:
-	i         wpisz tekst      <ESC> wstawi przed kursorem
-	A         wpisz tekst      <ESC> doda na koñcu linii
+	i   wpisz tekst   <ESC>         wstawi przed kursorem
+	A   wpisz tekst   <ESC>         doda na koñcu linii
 
 UWAGA: Wci¶niêcie <ESC> przeniesie Ciê z powrotem do trybu Normal
-lub odwo³a niechciane lub czê¶ciowo wprowadzone polecenia.
+       lub odwo³a niechciane lub czê¶ciowo wprowadzone polecenia.
 
 Teraz mo¿emy kontynuowaæ i przej¶æ do Lekcji 2.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -197,11 +197,11 @@
 
   3. Przesuñ kursor na pocz±tek wyrazu, które chcesz usun±æ.
 
-  4. Wpisz   dw   by usun±c wyraz.
+  4. Wpisz   dw   by usun±æ wyraz.
 
   UWAGA: Litera  d  pojawi siê na dole ekranu. Vim czeka na wpisanie  w . 
-	 Je¶li zobaczysz inny znak wpisa³e¶ co¶ ¼le, wci¶nij <ESC> i zacznij
-	 od pocz±tku.
+	 Je¶li zobaczysz inny znak oznacza to, ¿e wpisa³e¶ co¶ ¼le, wci¶nij
+	 <ESC> i zacznij od pocz±tku.
 
 ---> Jest tu parê papier wyrazów, które kamieñ nie nale¿± do no¿yce tego zdania.
 
@@ -306,13 +306,13 @@
 
 		   ** Wpisz  dd  aby usun±æ ca³± liniê. **
 
-  Z powodu czêsto¶ci usuwania ca³ych linii, projektanci VI zdecydowali, ¿e
+  Z powodu czêsto¶ci usuwania ca³ych linii, projektanci Vi zdecydowali, ¿e
   bêdzie ³atwiej wpisaæ dwa razy  d  aby usun±æ liniê.
 
-  1. Przenie¶ kursor do zdania poni¿ej.
-  2. Wpisz  dd  aby usun±c wiersz.
+  1. Przenie¶ kursor do drugiego zdania z wierszyka poni¿ej.
+  2. Wpisz  dd  aby usun±æ wiersz.
   3. Teraz przenie¶ siê do czwartego wiersza.
-  4. Wpisz  2dd  aby usun±c dwia wiersze.
+  4. Wpisz  2dd  aby usun±c dwa wiersze.
 
 --->  1)  Ró¿e s± czerwone,
 --->  2)  B³oto jest fajne,
@@ -337,7 +337,7 @@
   4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj±c polecenia  x .
   5. Teraz wci¶nij wielkie U aby przywróciæ liniê do oryginalnego stanu.
   6. Teraz wci¶nij  u  kilka razy by cofn±æ  U  i poprzednie polecenia.
-  7. Teraz wpsz CTRL-R (trzymaj równocze¶nie wci¶niête klawisze CTRL i R)
+  7. Teraz wpisz CTRL-R (trzymaj równocze¶nie wci¶niête klawisze CTRL i R)
      kilka razy, by cofn±æ cofniêcia.
 
 ---> Poopraw blêdyyy w teej liniii i zaamiieñ je prrzez coofnij.
@@ -377,14 +377,14 @@
 
   1. Przenie¶ kursor do pierwszej linii ---> poni¿ej.
 
-  2. Wpisz  dd  aby usun±æ liniê i przechowaæ j± w rejestrze Vim-a.
+  2. Wpisz  dd  aby usun±æ liniê i przechowaæ j± w rejestrze Vima.
 
   3. Przenie¶ kursor do linii c), POWY¯EJ tej gdzie usuniêta linia powinna
      siê znajdowaæ.
 
   4. Wci¶nij  p  by wstawiæ liniê poni¿ej kursora.
 
-  5. Powtaj kroki 2. do 4. a¿ znajd± siê w odpowiednim porz±dku.
+  5. Powtarzaj kroki 2. do 4. a¿ znajd± siê w odpowiednim porz±dku.
 
 ---> d) Jak dwa anio³ki.
 ---> b) Na dole fio³ki,
@@ -456,7 +456,7 @@
 
   5. Wpisz  c$ , popraw koniec wiersza i wci¶nij <ESC>.
 
----> Koniec tego wiersza musi byæ poprawiony aby wygl±dal tak jak drugi.
+---> Koniec tego wiersza musi byæ poprawiony aby wygl±da³ tak jak drugi.
 ---> Koniec tego wiersza musi byæ poprawiony u¿ywaj±c polecenia  c$ .
 
 UWAGA:  Mo¿esz u¿ywaæ <BS> aby poprawiaæ b³êdy w czasie pisania.
@@ -526,15 +526,15 @@
   5. Aby wróciæ gdzie by³e¶ wci¶nij  CTRL-O. Powtarzaj by wróciæ dalej. CTRL-I
      idzie do przodu.
 
-UWAGA:  'b³ond' to nie jest metoda by przeliterowaæ b³±d; 'b³ond' to b³±d.
-UWAGA:  Kiedy szukanie osi±gnie koniec pliku bêdzie kontynuowa³o od pocz±tku
-o ile opcja 'wrapscan' nie zosta³a przestawiona.
+Uwaga:  'b³ond' to nie jest metoda by przeliterowaæ b³±d; 'b³ond' to b³±d.
+Uwaga:  Kiedy szukanie osi±gnie koniec pliku bêdzie kontynuowa³o od pocz±tku
+        o ile opcja 'wrapscan' nie zosta³a przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Lekcja 4.3.: W POSZUKIWANIU PARUJ¡CYCH NAWIASÓW
 
 
-		** Wpisz  %  by znale¼æ pasuj±cy ),], lub } . **
+	       ** Wpisz  %  by znale¼æ paruj±cy ), ], lub } . **
 
   1. Umie¶æ kursor na którym¶ z (, [, lub { w linii poni¿ej oznaczonej --->.
 
@@ -548,7 +548,7 @@
 
 ---> To ( jest linia testowa z (, [, ] i {, } . ))
 
-UWAGA: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu
+Uwaga: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu
        z niesparowanymi nawiasami!
 
 
@@ -598,7 +598,7 @@
      By zamieniæ wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
      By zamieniæ frazy pomiêdzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
      By zamieniæ wszystkie wyst±pienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosi³ Ciê o potwierdzienie dodaj 'c'	   :%s/stary/nowy/gc
+     By Vim prosi³ Ciê o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		 Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE
 
@@ -606,7 +606,7 @@
 	** Wpisz  :!  a nastêpnie zewnêtrzne polecenie by je wykonaæ. **
 
   1. Wpisz znajome polecenie  :  by ustawiæ kursor na dole ekranu. To pozwala
-     na wprowadzenie polecenia.
+     na wprowadzenie komendy linii poleceñ.
 
   2. Teraz wstaw  !  (wykrzyknik). To umo¿liwi Ci wykonanie dowolnego
      zewnêtrznego polecenia pow³oki.
@@ -638,12 +638,12 @@
   4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw± TEST.
      By to sprawdziæ wpisz  :!dir  lub  :!ls , ¿eby znowu zobaczyæ listê plików.
 
-Uwaga: Zauwa¿, ¿e gdyby¶ teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie
-       komend±  vim TEST , plik by³by dok³adn± kopi± tutoriala kiedy go
+Uwaga: Zauwa¿, ¿e gdyby¶ teraz wyszed³ z Vima, a nastêpnie wszed³ ponownie
+       poleceniem  vim TEST , plik by³by dok³adn± kopi± tutoriala kiedy go
        zapisywa³e¶.
 
-  5. Teraz usuñ plik wpisuj±c:		   :!rm TEST
-
+  5. Teraz usuñ plik wpisuj±c (MS-DOS):		   :!del TEST
+                          lub (Unix):              :!rm TEST
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
@@ -687,8 +687,8 @@
      teraz s± dwie kopie Lekcji 5.3., orygina³ i kopia z pliku.
 
 UWAGA: Mo¿esz te¿ wczytaæ wyj¶cie zewnêtrznego polecenia. Na przyk³ad
-       :r !ls  wczytuje wyj¶cie polecenia ls i umieszcza je pod kursorem.
-
+       :r !ls  wczytuje wyj¶cie polecenia ls i umieszcza je pod poni¿ej
+       kursora.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -703,7 +703,7 @@
 
 	  :!rm NAZWA_PLIKU  -  usuwa plik NAZWA_PLIKU.
 
-  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vim-a na dysk z nazw± NAZWA_PLIKU.
+  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vima na dysk z nazw± NAZWA_PLIKU.
 
   3.  v ruch :w NAZWA_PLIKU  zapisuje Wizualnie wybrane linie do NAZWA_PLIKU.
 
@@ -752,13 +752,13 @@
   4. Dokoñcz wyraz tak jak w linii poni¿ej. Wci¶nij <ESC> aby opu¶ciæ tryb
      Insert.
 
-  5. U¿yj  e  by przej¶æ do kolejnego niedokoñczonego wyraze i powtarzaj kroki
+  5. U¿yj  e  by przej¶æ do kolejnego niedokoñczonego wyrazu i powtarzaj kroki
      3. i 4.
 
 ---> Ta li poz Ci æwi dodaw teks do koñ lin
 ---> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii.
 
-Uwaga:  a ,  i  and  A  prowadz± do trybu Insert, jedyn± ró¿nic± jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadz± do trybu Insert, jedyn± ró¿nic± jest miejsce
        gdzie nowe znaki bêd± dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -789,7 +789,7 @@
 
        ** u¿yj operatora  y  aby skopiowaæ tekst i  p  aby go wkleiæ **
 
-  1. Przejd¼ do linii oznaczonej ---> i umie¶c kursor za "a)".
+  1. Przejd¼ do linii oznaczonej ---> i umie¶æ kursor za "a)".
 
   2. Wejd¼ w tryb Visual  v  i przenie¶ kursor na pocz±tek "pierwszy".
 
@@ -799,8 +799,8 @@
 
   5. Wci¶nij  p  aby wpakowaæ (paste) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. U¿yj trybu Visual aby wybraæ " element.", yankuj go  y , przejd¼ do koñca
-     nastêpnej linii  j$ i upakuj tam tekst z  p .
+  6. U¿yj trybu Wizualnego aby wybraæ " element.", yankuj go  y , przejd¼ do
+     koñca nastêpnej linii  j$ i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -818,7 +818,7 @@
   2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielko¶æ liter) poprzez
      wpisanie:		:set ic
 
-  3. Teraz szukaj 'ignore' ponownie wciskuj±c:  n
+  3. Teraz szukaj 'ignore' ponownie wciskaj±c:  n
      Zauwa¿, ¿e Ignore i IGNORE tak¿e s± teraz znalezione.
 
   4. Ustaw opcje 'hlsearch' i 'incsearch':    :set hls is
@@ -835,16 +835,18 @@
 
 
   1. Wpisanie  o  otwiera liniê PONI¯EJ kursora.
-     Wpisanie wielkiego  O  otwiera liniê POWY¯EJ kursora.
-  2. Wpisz  a  by wstawiæ tekst ZA znakiem na, którym jest kursor.
-     Wpisanie wielkiego  A  dodaje tekst na koñcu linii.
+     Wpisanie  O  otwiera liniê POWY¯EJ kursora.
+
+  2. Wpisanie  a  by wstawiæ tekst ZA znakiem na, którym jest kursor.
+     Wpisanie  A  dodaje tekst na koñcu linii.
+
   3. Polecenie  e  przenosi do koñca wyrazu.
-  4. Operato  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopóki
      nie zostanie wci¶niêty <ESC>.
   6. Wpisanie ":set xxx" ustawia opcjê "xxx". Nietkóre opcje:
-	'ic' 'ignorecase'	ignoruj wielko¶æ znaków
-	'is' 'incsearch'	poka¿ czê¶ciowe dopasowania
+	'ic'  'ignorecase'	ignoruj wielko¶æ znaków
+	'is'  'incsearch'	poka¿ czê¶ciowe dopasowania
 	'hls' 'hlsearch'	pod¶wietl wszystkie dopasowania
      Mo¿esz u¿yæ zarówno d³ugiej jak i krótkiej formy.
   7. Dodaj "no" aby wy³±czyæ opcjê:   :set noic
@@ -854,14 +856,14 @@
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKAÆ POMOC 
+			LEKCJA 7.1. JAK UZYSKAÆ POMOC
 
 		      ** U¿ycie systemu pomocy on-line **
 
   Vim posiada bardzo dobry system pomocy on-line. By zacz±æ spróbuj jednej
   z trzech mo¿liwo¶ci:
-	- wci¶nij klawisz <HELP> (je¶li takowy posiadasz)
-	- wci¶nij klawisz <F1> (je¶li takowy posiadasz)
+	- wci¶nij klawisz <HELP> (je¶li taki masz)
+	- wci¶nij klawisz <F1> (je¶li taki masz)
 	- wpisz   :help<ENTER>
 
   Przeczytaj tekst w oknie pomocy  aby dowiedzieæ siê jak dzia³a pomoc.
@@ -878,7 +880,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO
 
-			 ** W³±cz mo¿liwo¶ci Vim-a **
+			  ** W³±cz mo¿liwo¶ci Vima **
 
   Vim ma o wiele wiêcej mo¿liwo¶ci ni¿ Vi, ale wiêkszo¶æ z nich jest domy¶lnie
   wy³±czona. Je¶li chcesz w³±czyæ te mo¿liwo¶ci na starcie musisz utworzyæ
@@ -943,23 +945,23 @@
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj siê koñczy tutorial Vim-a. Zosta³ on pomy¶lany tak aby daæ krótki
+  Tutaj siê koñczy tutorial Vima. Zosta³ on pomy¶lany tak aby daæ krótki
   przegl±d jego mo¿liwo¶ci, wystarczaj±cy by¶ móg³ go u¿ywaæ. Jest on
   daleki od kompletno¶ci poniewa¿ Vim ma o wiele, wiele wiêcej poleceñ.
 
   Dla dalszej nauki rekomendujemy ksi±¿kê:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksi±zka ca³kowicie po¶wiêcona Vim-owi. U¿yteczna zw³aszcza dla
+  Pierwsza ksi±zka ca³kowicie po¶wiêcona Vimowi. U¿yteczna zw³aszcza dla
   pocz±tkuj±cych. Zawiera wiele przyk³adów i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
-  Ta ksi±¿ka jest starsza i bardziej o Vi ni¿ o Vim-ie, ale tak¿e warta
+  Starsza pozycja i bardziej o Vi ni¿ o Vimie, ale tak¿e warta
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
   To dobra ksi±¿ka by dowiedzieæ siê niemal wszystkiego co chcia³by¶ zrobiæ
-  z Vi. Szósta edycja zawiera te¿ informacje o Vim-ie.
+  z Vi. Szósta edycja zawiera te¿ informacje o Vimie.
 
   Po polsku wydano:
 	Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins
@@ -967,10 +969,10 @@
 	ISBN: 83-7197-472-8
 	http://helion.pl/ksiazki/vilek.htm
   Jest to ksi±¿eczka zawieraj±ca spis poleceñ vi i jego najwa¿niejszych
-  klonów (miêdzy innymi Vim-a).
+  klonów (miêdzy innymi Vima).
 
 	Edytor vi - autorzy Linda Lamb i Arnold Robbins
-	Wydawca: Helion 2001 (O'Reilly) - wg 6 ang. wydania
+	Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania
 	ISBN: 83-7197-539-2
 	http://helion.pl/ksiazki/viedyt.htm
   Rozszerzona wersja Learning the Vi Editor w polskim t³umaczeniu.
@@ -980,7 +982,7 @@
   Colorado State University.
   E-mail: bware@mines.colorado.edu.
 
-  Zmodyfikowane dla Vim-a przez Brama Moolenaara.
+  Zmodyfikowane dla Vima przez Brama Moolenaara.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -988,4 +990,5 @@
   Sierpieñ 2001,
   rev. Marzec 2002
   2nd rev. Wrzesieñ 2004
+  3rd rev. Marzec 2006
   Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl
diff --git a/runtime/tutor/tutor.pl.cp1250 b/runtime/tutor/tutor.pl.cp1250
index cc2a6cc..4daed18 100644
--- a/runtime/tutor/tutor.pl.cp1250
+++ b/runtime/tutor/tutor.pl.cp1250
@@ -5,7 +5,7 @@
      Vim to potê¿ny edytor, który posiada wiele poleceñ, zbyt du¿o by
      wyjaœniæ je wszystkie w tym tutorialu. Ten przewodnik ma nauczyæ
      Ciê pos³ugiwaæ siê wystarczaj¹co wieloma komendami byœ móg³ ³atwo
-     u¿ywaæ Vim-a jako edytora ogólnego przeznaczenia.
+     u¿ywaæ Vima jako edytora ogólnego przeznaczenia.
 
      Czas potrzebny na ukoñczenie tutoriala to 25 do 30 minut i zale¿y
      od tego jak wiele czasu spêdzisz na eksperymentowaniu.  
@@ -15,10 +15,10 @@
 	 wczeœniej kopiê tego pliku do æwiczeñ (jeœli zacz¹³eœ komend¹
 	 "vimtutor" to ju¿ pracujesz na kopii).
 
-     Wa¿ne jest, byœ pamiêta³, ¿e przewodnik ten zosta³ zaprojektowany do
-     nauki poprzez æwiczenia. To oznacza, ¿e musisz wykonywaæ polecenia
-     by nauczyæ siê ich prawid³owo. Jeœli bêdziesz jedynie czyta³ tekst
-     szybko zapomnisz wiele poleceñ!
+	 Pamiêtaj ¿e przewodnik ten zosta³ zaprojektowany do nauki poprzez
+	 æwiczenia. Oznacza to, ¿e musisz wykonywaæ polecenia by nauczyæ siê ich
+	 prawid³owo. Jeœli bêdziesz jedynie czyta³ tekst szybko zapomnisz wiele
+	 poleceñ!
 
      Teraz upewnij siê, ¿e nie masz wciœniêtego CapsLocka i wciskaj  j
      tak d³ugo dopóki Lekcja 1.1. nie wype³ni ca³kowicie ekranu.
@@ -45,7 +45,7 @@
 
 Uwaga: Klawisze kursora tak¿e powinny dzia³aæ, ale u¿ywaj¹c  hjkl  bêdziesz
        w stanie poruszaæ siê o wiele szybciej jak siê tylko przyzwyczaisz.
-	   Naprawdê!
+       Naprawdê!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
@@ -65,7 +65,7 @@
      wyjœæ i wróciæ do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobi³eœ. W nastêpnych
-lekcjach dowiesz siê jak je zapamiêtywaæ.
+       lekcjach dowiesz siê jak je zapamiêtywaæ.
 
   5. Przenieœ kursor do lekcji 1.3.
 
@@ -150,16 +150,16 @@
   1. Zakoñcz tutorial tak jak w lekcji 1.2.:  :q!
 
   2. W pow³oce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiaj¹cym edytor Vimm. 'tutor' to nazwa pliku
+     "vim" jest poleceniem uruchamiaj¹cym edytor Vim. 'tutor' to nazwa pliku
      jaki chcesz edytowaæ. U¿yj pliku jaki mo¿e zostaæ zmieniony.
 
   3. Dodaj i usuñ tekst tak jak siê nauczy³eœ w poprzednich lekcjach.
 
-  4. Zapisz plik ze zmianami w opuϾ Vima:  :wq<ENTER>
+  4. Zapisz plik ze zmianami i opuϾ Vima:  :wq<ENTER>
 
   5. Uruchom ponownie vimtutor i przejdŸ do podsumowania lekcji.
 
-  6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je.
+  6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -168,21 +168,21 @@
   1. Poruszasz kursorem u¿ywaj¹c "strza³ek" i klawiszy  hjkl .
        h (w lewo)	 j (w dó³)	 k (do góry)		l (w prawo)
 
-  2. By wejœæ do Vim-a (z pow³oki) wpisz:
+  2. By wejœæ do Vima (z pow³oki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyjϾ z Vim-a wpisz:
+  3. By wyjϾ z Vima wpisz:
 			    <ESC> :q!<ENTER>  by usun¹c wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachowaæ.
 
   4. By usun¹æ znak pod kursorem wciœnij:  x
 
   5. By wstawiæ tekst przed kursorem lub dodaæ:
-	i         wpisz tekst      <ESC> wstawi przed kursorem
-	A         wpisz tekst      <ESC> doda na koñcu linii
+	i   wpisz tekst   <ESC>         wstawi przed kursorem
+	A   wpisz tekst   <ESC>         doda na koñcu linii
 
 UWAGA: Wciœniêcie <ESC> przeniesie Ciê z powrotem do trybu Normal
-lub odwo³a niechciane lub czêœciowo wprowadzone polecenia.
+       lub odwo³a niechciane lub czêœciowo wprowadzone polecenia.
 
 Teraz mo¿emy kontynuowaæ i przejœæ do Lekcji 2.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -197,11 +197,11 @@
 
   3. Przesuñ kursor na pocz¹tek wyrazu, które chcesz usun¹æ.
 
-  4. Wpisz   dw   by usun¹c wyraz.
+  4. Wpisz   dw   by usun¹æ wyraz.
 
   UWAGA: Litera  d  pojawi siê na dole ekranu. Vim czeka na wpisanie  w . 
-	 Jeœli zobaczysz inny znak wpisa³eœ coœ Ÿle, wciœnij <ESC> i zacznij
-	 od pocz¹tku.
+	 Jeœli zobaczysz inny znak oznacza to, ¿e wpisa³eœ coœ Ÿle, wciœnij
+	 <ESC> i zacznij od pocz¹tku.
 
 ---> Jest tu parê papier wyrazów, które kamieñ nie nale¿¹ do no¿yce tego zdania.
 
@@ -306,13 +306,13 @@
 
 		   ** Wpisz  dd  aby usun¹æ ca³¹ liniê. **
 
-  Z powodu czêstoœci usuwania ca³ych linii, projektanci VI zdecydowali, ¿e
+  Z powodu czêstoœci usuwania ca³ych linii, projektanci Vi zdecydowali, ¿e
   bêdzie ³atwiej wpisaæ dwa razy  d  aby usun¹æ liniê.
 
-  1. Przenieœ kursor do zdania poni¿ej.
-  2. Wpisz  dd  aby usun¹c wiersz.
+  1. Przenieœ kursor do drugiego zdania z wierszyka poni¿ej.
+  2. Wpisz  dd  aby usun¹æ wiersz.
   3. Teraz przenieœ siê do czwartego wiersza.
-  4. Wpisz  2dd  aby usun¹c dwia wiersze.
+  4. Wpisz  2dd  aby usun¹c dwa wiersze.
 
 --->  1)  Ró¿e s¹ czerwone,
 --->  2)  B³oto jest fajne,
@@ -337,7 +337,7 @@
   4. Tym razem popraw wszystkie b³êdy w linii u¿ywaj¹c polecenia  x .
   5. Teraz wciœnij wielkie U aby przywróciæ liniê do oryginalnego stanu.
   6. Teraz wciœnij  u  kilka razy by cofn¹æ  U  i poprzednie polecenia.
-  7. Teraz wpsz CTRL-R (trzymaj równoczeœnie wciœniête klawisze CTRL i R)
+  7. Teraz wpisz CTRL-R (trzymaj równoczeœnie wciœniête klawisze CTRL i R)
      kilka razy, by cofn¹æ cofniêcia.
 
 ---> Poopraw blêdyyy w teej liniii i zaamiieñ je prrzez coofnij.
@@ -377,14 +377,14 @@
 
   1. Przenieœ kursor do pierwszej linii ---> poni¿ej.
 
-  2. Wpisz  dd  aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vim-a.
+  2. Wpisz  dd  aby usun¹æ liniê i przechowaæ j¹ w rejestrze Vima.
 
   3. Przenieœ kursor do linii c), POWY¯EJ tej gdzie usuniêta linia powinna
      siê znajdowaæ.
 
   4. Wciœnij  p  by wstawiæ liniê poni¿ej kursora.
 
-  5. Powtaj kroki 2. do 4. a¿ znajd¹ siê w odpowiednim porz¹dku.
+  5. Powtarzaj kroki 2. do 4. a¿ znajd¹ siê w odpowiednim porz¹dku.
 
 ---> d) Jak dwa anio³ki.
 ---> b) Na dole fio³ki,
@@ -456,7 +456,7 @@
 
   5. Wpisz  c$ , popraw koniec wiersza i wciœnij <ESC>.
 
----> Koniec tego wiersza musi byæ poprawiony aby wygl¹dal tak jak drugi.
+---> Koniec tego wiersza musi byæ poprawiony aby wygl¹da³ tak jak drugi.
 ---> Koniec tego wiersza musi byæ poprawiony u¿ywaj¹c polecenia  c$ .
 
 UWAGA:  Mo¿esz u¿ywaæ <BS> aby poprawiaæ b³êdy w czasie pisania.
@@ -526,15 +526,15 @@
   5. Aby wróciæ gdzie by³eœ wciœnij  CTRL-O. Powtarzaj by wróciæ dalej. CTRL-I
      idzie do przodu.
 
-UWAGA:  'b³ond' to nie jest metoda by przeliterowaæ b³¹d; 'b³ond' to b³¹d.
-UWAGA:  Kiedy szukanie osi¹gnie koniec pliku bêdzie kontynuowa³o od pocz¹tku
-o ile opcja 'wrapscan' nie zosta³a przestawiona.
+Uwaga:  'b³ond' to nie jest metoda by przeliterowaæ b³¹d; 'b³ond' to b³¹d.
+Uwaga:  Kiedy szukanie osi¹gnie koniec pliku bêdzie kontynuowa³o od pocz¹tku
+        o ile opcja 'wrapscan' nie zosta³a przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Lekcja 4.3.: W POSZUKIWANIU PARUJ¥CYCH NAWIASÓW
 
 
-		** Wpisz  %  by znaleŸæ pasuj¹cy ),], lub } . **
+	       ** Wpisz  %  by znaleŸæ paruj¹cy ), ], lub } . **
 
   1. Umieœæ kursor na którymœ z (, [, lub { w linii poni¿ej oznaczonej --->.
 
@@ -548,7 +548,7 @@
 
 ---> To ( jest linia testowa z (, [, ] i {, } . ))
 
-UWAGA: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu
+Uwaga: Ta funkcja jest bardzo u¿yteczna w debuggowaniu programu
        z niesparowanymi nawiasami!
 
 
@@ -598,7 +598,7 @@
      By zamieniæ wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
      By zamieniæ frazy pomiêdzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
      By zamieniæ wszystkie wyst¹pienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosi³ Ciê o potwierdzienie dodaj 'c'	   :%s/stary/nowy/gc
+     By Vim prosi³ Ciê o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		 Lekcja 5.1.: JAK WYKONAÆ POLECENIA ZEWNÊTRZNE
 
@@ -606,7 +606,7 @@
 	** Wpisz  :!  a nastêpnie zewnêtrzne polecenie by je wykonaæ. **
 
   1. Wpisz znajome polecenie  :  by ustawiæ kursor na dole ekranu. To pozwala
-     na wprowadzenie polecenia.
+     na wprowadzenie komendy linii poleceñ.
 
   2. Teraz wstaw  !  (wykrzyknik). To umo¿liwi Ci wykonanie dowolnego
      zewnêtrznego polecenia pow³oki.
@@ -638,12 +638,12 @@
   4. To polecenie zapamiêta ca³y plik (Vim Tutor) pod nazw¹ TEST.
      By to sprawdziæ wpisz  :!dir  lub  :!ls , ¿eby znowu zobaczyæ listê plików.
 
-Uwaga: Zauwa¿, ¿e gdybyœ teraz wyszed³ z Vim-a, a nastêpnie wszed³ ponownie
-       komend¹  vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala kiedy go
+Uwaga: Zauwa¿, ¿e gdybyœ teraz wyszed³ z Vima, a nastêpnie wszed³ ponownie
+       poleceniem  vim TEST , plik by³by dok³adn¹ kopi¹ tutoriala kiedy go
        zapisywa³eœ.
 
-  5. Teraz usuñ plik wpisuj¹c:		   :!rm TEST
-
+  5. Teraz usuñ plik wpisuj¹c (MS-DOS):		   :!del TEST
+                          lub (Unix):              :!rm TEST
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
@@ -687,8 +687,8 @@
      teraz s¹ dwie kopie Lekcji 5.3., orygina³ i kopia z pliku.
 
 UWAGA: Mo¿esz te¿ wczytaæ wyjœcie zewnêtrznego polecenia. Na przyk³ad
-       :r !ls  wczytuje wyjœcie polecenia ls i umieszcza je pod kursorem.
-
+       :r !ls  wczytuje wyjœcie polecenia ls i umieszcza je pod poni¿ej
+       kursora.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -703,7 +703,7 @@
 
 	  :!rm NAZWA_PLIKU  -  usuwa plik NAZWA_PLIKU.
 
-  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vim-a na dysk z nazw¹ NAZWA_PLIKU.
+  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vima na dysk z nazw¹ NAZWA_PLIKU.
 
   3.  v ruch :w NAZWA_PLIKU  zapisuje Wizualnie wybrane linie do NAZWA_PLIKU.
 
@@ -752,13 +752,13 @@
   4. Dokoñcz wyraz tak jak w linii poni¿ej. Wciœnij <ESC> aby opuœciæ tryb
      Insert.
 
-  5. U¿yj  e  by przejœæ do kolejnego niedokoñczonego wyraze i powtarzaj kroki
+  5. U¿yj  e  by przejœæ do kolejnego niedokoñczonego wyrazu i powtarzaj kroki
      3. i 4.
 
 ---> Ta li poz Ci æwi dodaw teks do koñ lin
 ---> Ta linia pozwoli Ci æwiczyæ dodawanie tekstu do koñca linii.
 
-Uwaga:  a ,  i  and  A  prowadz¹ do trybu Insert, jedyn¹ ró¿nic¹ jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadz¹ do trybu Insert, jedyn¹ ró¿nic¹ jest miejsce
        gdzie nowe znaki bêd¹ dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -789,7 +789,7 @@
 
        ** u¿yj operatora  y  aby skopiowaæ tekst i  p  aby go wkleiæ **
 
-  1. PrzejdŸ do linii oznaczonej ---> i umieœc kursor za "a)".
+  1. PrzejdŸ do linii oznaczonej ---> i umieœæ kursor za "a)".
 
   2. WejdŸ w tryb Visual  v  i przenieœ kursor na pocz¹tek "pierwszy".
 
@@ -799,8 +799,8 @@
 
   5. Wciœnij  p  aby wpakowaæ (paste) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. U¿yj trybu Visual aby wybraæ " element.", yankuj go  y , przejdŸ do koñca
-     nastêpnej linii  j$ i upakuj tam tekst z  p .
+  6. U¿yj trybu Wizualnego aby wybraæ " element.", yankuj go  y , przejdŸ do
+     koñca nastêpnej linii  j$ i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -818,7 +818,7 @@
   2. Ustaw opcjê 'ic' (Ignore case -- ignoruj wielkoœæ liter) poprzez
      wpisanie:		:set ic
 
-  3. Teraz szukaj 'ignore' ponownie wciskuj¹c:  n
+  3. Teraz szukaj 'ignore' ponownie wciskaj¹c:  n
      Zauwa¿, ¿e Ignore i IGNORE tak¿e s¹ teraz znalezione.
 
   4. Ustaw opcje 'hlsearch' i 'incsearch':    :set hls is
@@ -835,16 +835,18 @@
 
 
   1. Wpisanie  o  otwiera liniê PONI¯EJ kursora.
-     Wpisanie wielkiego  O  otwiera liniê POWY¯EJ kursora.
-  2. Wpisz  a  by wstawiæ tekst ZA znakiem na, którym jest kursor.
-     Wpisanie wielkiego  A  dodaje tekst na koñcu linii.
+     Wpisanie  O  otwiera liniê POWY¯EJ kursora.
+
+  2. Wpisanie  a  by wstawiæ tekst ZA znakiem na, którym jest kursor.
+     Wpisanie  A  dodaje tekst na koñcu linii.
+
   3. Polecenie  e  przenosi do koñca wyrazu.
-  4. Operato  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopóki
      nie zostanie wciœniêty <ESC>.
   6. Wpisanie ":set xxx" ustawia opcjê "xxx". Nietkóre opcje:
-	'ic' 'ignorecase'	ignoruj wielkoœæ znaków
-	'is' 'incsearch'	poka¿ czêœciowe dopasowania
+	'ic'  'ignorecase'	ignoruj wielkoœæ znaków
+	'is'  'incsearch'	poka¿ czêœciowe dopasowania
 	'hls' 'hlsearch'	podœwietl wszystkie dopasowania
      Mo¿esz u¿yæ zarówno d³ugiej jak i krótkiej formy.
   7. Dodaj "no" aby wy³¹czyæ opcjê:   :set noic
@@ -854,14 +856,14 @@
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKAÆ POMOC 
+			LEKCJA 7.1. JAK UZYSKAÆ POMOC
 
 		      ** U¿ycie systemu pomocy on-line **
 
   Vim posiada bardzo dobry system pomocy on-line. By zacz¹æ spróbuj jednej
   z trzech mo¿liwoœci:
-	- wciœnij klawisz <HELP> (jeœli takowy posiadasz)
-	- wciœnij klawisz <F1> (jeœli takowy posiadasz)
+	- wciœnij klawisz <HELP> (jeœli taki masz)
+	- wciœnij klawisz <F1> (jeœli taki masz)
 	- wpisz   :help<ENTER>
 
   Przeczytaj tekst w oknie pomocy  aby dowiedzieæ siê jak dzia³a pomoc.
@@ -878,7 +880,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO
 
-			 ** W³¹cz mo¿liwoœci Vim-a **
+			  ** W³¹cz mo¿liwoœci Vima **
 
   Vim ma o wiele wiêcej mo¿liwoœci ni¿ Vi, ale wiêkszoœæ z nich jest domyœlnie
   wy³¹czona. Jeœli chcesz w³¹czyæ te mo¿liwoœci na starcie musisz utworzyæ
@@ -943,23 +945,23 @@
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj siê koñczy tutorial Vim-a. Zosta³ on pomyœlany tak aby daæ krótki
+  Tutaj siê koñczy tutorial Vima. Zosta³ on pomyœlany tak aby daæ krótki
   przegl¹d jego mo¿liwoœci, wystarczaj¹cy byœ móg³ go u¿ywaæ. Jest on
   daleki od kompletnoœci poniewa¿ Vim ma o wiele, wiele wiêcej poleceñ.
 
   Dla dalszej nauki rekomendujemy ksi¹¿kê:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksi¹zka ca³kowicie poœwiêcona Vim-owi. U¿yteczna zw³aszcza dla
+  Pierwsza ksi¹zka ca³kowicie poœwiêcona Vimowi. U¿yteczna zw³aszcza dla
   pocz¹tkuj¹cych. Zawiera wiele przyk³adów i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
-  Ta ksi¹¿ka jest starsza i bardziej o Vi ni¿ o Vim-ie, ale tak¿e warta
+  Starsza pozycja i bardziej o Vi ni¿ o Vimie, ale tak¿e warta
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
   To dobra ksi¹¿ka by dowiedzieæ siê niemal wszystkiego co chcia³byœ zrobiæ
-  z Vi. Szósta edycja zawiera te¿ informacje o Vim-ie.
+  z Vi. Szósta edycja zawiera te¿ informacje o Vimie.
 
   Po polsku wydano:
 	Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins
@@ -967,10 +969,10 @@
 	ISBN: 83-7197-472-8
 	http://helion.pl/ksiazki/vilek.htm
   Jest to ksi¹¿eczka zawieraj¹ca spis poleceñ vi i jego najwa¿niejszych
-  klonów (miêdzy innymi Vim-a).
+  klonów (miêdzy innymi Vima).
 
 	Edytor vi - autorzy Linda Lamb i Arnold Robbins
-	Wydawca: Helion 2001 (O'Reilly) - wg 6 ang. wydania
+	Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania
 	ISBN: 83-7197-539-2
 	http://helion.pl/ksiazki/viedyt.htm
   Rozszerzona wersja Learning the Vi Editor w polskim t³umaczeniu.
@@ -980,7 +982,7 @@
   Colorado State University.
   E-mail: bware@mines.colorado.edu.
 
-  Zmodyfikowane dla Vim-a przez Brama Moolenaara.
+  Zmodyfikowane dla Vima przez Brama Moolenaara.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -988,4 +990,5 @@
   Sierpieñ 2001,
   rev. Marzec 2002
   2nd rev. Wrzesieñ 2004
+  3rd rev. Marzec 2006
   Wszelkie uwagi proszê kierowaæ na: mikmach@wp.pl
diff --git a/runtime/tutor/tutor.pl.utf-8 b/runtime/tutor/tutor.pl.utf-8
index 8f6805e..065184d 100644
--- a/runtime/tutor/tutor.pl.utf-8
+++ b/runtime/tutor/tutor.pl.utf-8
@@ -5,7 +5,7 @@
      Vim to potężny edytor, który posiada wiele poleceń, zbyt dużo by
      wyjaśnić je wszystkie w tym tutorialu. Ten przewodnik ma nauczyć
      Cię posługiwać się wystarczająco wieloma komendami byś mógł łatwo
-     używać Vim-a jako edytora ogólnego przeznaczenia.
+     używać Vima jako edytora ogólnego przeznaczenia.
 
      Czas potrzebny na ukończenie tutoriala to 25 do 30 minut i zależy
      od tego jak wiele czasu spędzisz na eksperymentowaniu.  
@@ -15,10 +15,10 @@
 	 wcześniej kopię tego pliku do ćwiczeń (jeśli zacząłeś komendą
 	 "vimtutor" to już pracujesz na kopii).
 
-     Ważne jest, byś pamiętał, że przewodnik ten został zaprojektowany do
-     nauki poprzez ćwiczenia. To oznacza, że musisz wykonywać polecenia
-     by nauczyć się ich prawidłowo. Jeśli będziesz jedynie czytał tekst
-     szybko zapomnisz wiele poleceń!
+	 Pamiętaj że przewodnik ten został zaprojektowany do nauki poprzez
+	 ćwiczenia. Oznacza to, że musisz wykonywać polecenia by nauczyć się ich
+	 prawidłowo. Jeśli będziesz jedynie czytał tekst szybko zapomnisz wiele
+	 poleceń!
 
      Teraz upewnij się, że nie masz wciśniętego CapsLocka i wciskaj  j
      tak długo dopóki Lekcja 1.1. nie wypełni całkowicie ekranu.
@@ -45,7 +45,7 @@
 
 Uwaga: Klawisze kursora także powinny działać, ale używając  hjkl  będziesz
        w stanie poruszać się o wiele szybciej jak się tylko przyzwyczaisz.
-	   Naprawdę!
+       Naprawdę!
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 1.2.: WYCHODZENIE Z VIM-a
@@ -65,7 +65,7 @@
      wyjść i wrócić do edytora.
 
 UWAGA: :q!<ENTER> porzuca wszelkie zmiany jakie zrobiłeś. W następnych
-lekcjach dowiesz się jak je zapamiętywać.
+       lekcjach dowiesz się jak je zapamiętywać.
 
   5. Przenieś kursor do lekcji 1.3.
 
@@ -150,16 +150,16 @@
   1. Zakończ tutorial tak jak w lekcji 1.2.:  :q!
 
   2. W powłoce wydaj polecenie:  vim tutor<ENTER>
-     "vim" jest poleceniem uruchamiającym edytor Vimm. 'tutor' to nazwa pliku
+     "vim" jest poleceniem uruchamiającym edytor Vim. 'tutor' to nazwa pliku
      jaki chcesz edytować. Użyj pliku jaki może zostać zmieniony.
 
   3. Dodaj i usuń tekst tak jak się nauczyłeś w poprzednich lekcjach.
 
-  4. Zapisz plik ze zmianami w opuść Vima:  :wq<ENTER>
+  4. Zapisz plik ze zmianami i opuść Vima:  :wq<ENTER>
 
   5. Uruchom ponownie vimtutor i przejdź do podsumowania lekcji.
 
-  6. Po przeczytaniu wszystkich kroków i zrozumieniu ich: wykonaj je.
+  6. Po przeczytaniu wszystkich kroków i ich zrozumieniu: wykonaj je.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -168,21 +168,21 @@
   1. Poruszasz kursorem używając "strzałek" i klawiszy  hjkl .
        h (w lewo)	 j (w dół)	 k (do góry)		l (w prawo)
 
-  2. By wejść do Vim-a (z powłoki) wpisz:
+  2. By wejść do Vima (z powłoki) wpisz:
 			    vim NAZWA_PLIKU<ENTER>
 
-  3. By wyjść z Vim-a wpisz:
+  3. By wyjść z Vima wpisz:
 			    <ESC> :q!<ENTER>  by usunąc wszystkie zmiany.
 	     LUB:	    <ESC> :wq<ENTER>  by zmiany zachować.
 
   4. By usunąć znak pod kursorem wciśnij:  x
 
   5. By wstawić tekst przed kursorem lub dodać:
-	i         wpisz tekst      <ESC> wstawi przed kursorem
-	A         wpisz tekst      <ESC> doda na końcu linii
+	i   wpisz tekst   <ESC>         wstawi przed kursorem
+	A   wpisz tekst   <ESC>         doda na końcu linii
 
 UWAGA: Wciśnięcie <ESC> przeniesie Cię z powrotem do trybu Normal
-lub odwoła niechciane lub częściowo wprowadzone polecenia.
+       lub odwoła niechciane lub częściowo wprowadzone polecenia.
 
 Teraz możemy kontynuować i przejść do Lekcji 2.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -197,11 +197,11 @@
 
   3. Przesuń kursor na początek wyrazu, które chcesz usunąć.
 
-  4. Wpisz   dw   by usunąc wyraz.
+  4. Wpisz   dw   by usunąć wyraz.
 
   UWAGA: Litera  d  pojawi się na dole ekranu. Vim czeka na wpisanie  w . 
-	 Jeśli zobaczysz inny znak wpisałeś coś źle, wciśnij <ESC> i zacznij
-	 od początku.
+	 Jeśli zobaczysz inny znak oznacza to, że wpisałeś coś źle, wciśnij
+	 <ESC> i zacznij od początku.
 
 ---> Jest tu parę papier wyrazów, które kamień nie należą do nożyce tego zdania.
 
@@ -306,13 +306,13 @@
 
 		   ** Wpisz  dd  aby usunąć całą linię. **
 
-  Z powodu częstości usuwania całych linii, projektanci VI zdecydowali, że
+  Z powodu częstości usuwania całych linii, projektanci Vi zdecydowali, że
   będzie łatwiej wpisać dwa razy  d  aby usunąć linię.
 
-  1. Przenieś kursor do zdania poniżej.
-  2. Wpisz  dd  aby usunąc wiersz.
+  1. Przenieś kursor do drugiego zdania z wierszyka poniżej.
+  2. Wpisz  dd  aby usunąć wiersz.
   3. Teraz przenieś się do czwartego wiersza.
-  4. Wpisz  2dd  aby usunąc dwia wiersze.
+  4. Wpisz  2dd  aby usunąc dwa wiersze.
 
 --->  1)  Róże są czerwone,
 --->  2)  Błoto jest fajne,
@@ -337,7 +337,7 @@
   4. Tym razem popraw wszystkie błędy w linii używając polecenia  x .
   5. Teraz wciśnij wielkie U aby przywrócić linię do oryginalnego stanu.
   6. Teraz wciśnij  u  kilka razy by cofnąć  U  i poprzednie polecenia.
-  7. Teraz wpsz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R)
+  7. Teraz wpisz CTRL-R (trzymaj równocześnie wciśnięte klawisze CTRL i R)
      kilka razy, by cofnąć cofnięcia.
 
 ---> Poopraw blędyyy w teej liniii i zaamiień je prrzez coofnij.
@@ -377,14 +377,14 @@
 
   1. Przenieś kursor do pierwszej linii ---> poniżej.
 
-  2. Wpisz  dd  aby usunąć linię i przechować ją w rejestrze Vim-a.
+  2. Wpisz  dd  aby usunąć linię i przechować ją w rejestrze Vima.
 
   3. Przenieś kursor do linii c), POWYŻEJ tej gdzie usunięta linia powinna
      się znajdować.
 
   4. Wciśnij  p  by wstawić linię poniżej kursora.
 
-  5. Powtaj kroki 2. do 4. aż znajdą się w odpowiednim porządku.
+  5. Powtarzaj kroki 2. do 4. aż znajdą się w odpowiednim porządku.
 
 ---> d) Jak dwa aniołki.
 ---> b) Na dole fiołki,
@@ -456,7 +456,7 @@
 
   5. Wpisz  c$ , popraw koniec wiersza i wciśnij <ESC>.
 
----> Koniec tego wiersza musi być poprawiony aby wyglądal tak jak drugi.
+---> Koniec tego wiersza musi być poprawiony aby wyglądał tak jak drugi.
 ---> Koniec tego wiersza musi być poprawiony używając polecenia  c$ .
 
 UWAGA:  Możesz używać <BS> aby poprawiać błędy w czasie pisania.
@@ -526,15 +526,15 @@
   5. Aby wrócić gdzie byłeś wciśnij  CTRL-O. Powtarzaj by wrócić dalej. CTRL-I
      idzie do przodu.
 
-UWAGA:  'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd.
-UWAGA:  Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku
-o ile opcja 'wrapscan' nie została przestawiona.
+Uwaga:  'błond' to nie jest metoda by przeliterować błąd; 'błond' to błąd.
+Uwaga:  Kiedy szukanie osiągnie koniec pliku będzie kontynuowało od początku
+        o ile opcja 'wrapscan' nie została przestawiona.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		Lekcja 4.3.: W POSZUKIWANIU PARUJĄCYCH NAWIASÓW
 
 
-		** Wpisz  %  by znaleźć pasujący ),], lub } . **
+	       ** Wpisz  %  by znaleźć parujący ), ], lub } . **
 
   1. Umieść kursor na którymś z (, [, lub { w linii poniżej oznaczonej --->.
 
@@ -548,7 +548,7 @@
 
 ---> To ( jest linia testowa z (, [, ] i {, } . ))
 
-UWAGA: Ta funkcja jest bardzo użyteczna w debuggowaniu programu
+Uwaga: Ta funkcja jest bardzo użyteczna w debuggowaniu programu
        z niesparowanymi nawiasami!
 
 
@@ -598,7 +598,7 @@
      By zamienić wszystkie stary na nowy w linii wpisz     :s/stary/nowy/g
      By zamienić frazy pomiędzy dwoma liniami # wpisz      :#,#s/stary/nowy/g
      By zamienić wszystkie wystąpienia w pliku wpisz       :%s/stary/nowy/g
-     By Vim prosił Cię o potwierdzienie dodaj 'c'	   :%s/stary/nowy/gc
+     By Vim prosił Cię o potwierdzenie dodaj 'c'	   :%s/stary/nowy/gc
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		 Lekcja 5.1.: JAK WYKONAĆ POLECENIA ZEWNĘTRZNE
 
@@ -606,7 +606,7 @@
 	** Wpisz  :!  a następnie zewnętrzne polecenie by je wykonać. **
 
   1. Wpisz znajome polecenie  :  by ustawić kursor na dole ekranu. To pozwala
-     na wprowadzenie polecenia.
+     na wprowadzenie komendy linii poleceń.
 
   2. Teraz wstaw  !  (wykrzyknik). To umożliwi Ci wykonanie dowolnego
      zewnętrznego polecenia powłoki.
@@ -638,12 +638,12 @@
   4. To polecenie zapamięta cały plik (Vim Tutor) pod nazwą TEST.
      By to sprawdzić wpisz  :!dir  lub  :!ls , żeby znowu zobaczyć listę plików.
 
-Uwaga: Zauważ, że gdybyś teraz wyszedł z Vim-a, a następnie wszedł ponownie
-       komendą  vim TEST , plik byłby dokładną kopią tutoriala kiedy go
+Uwaga: Zauważ, że gdybyś teraz wyszedł z Vima, a następnie wszedł ponownie
+       poleceniem  vim TEST , plik byłby dokładną kopią tutoriala kiedy go
        zapisywałeś.
 
-  5. Teraz usuń plik wpisując:		   :!rm TEST
-
+  5. Teraz usuń plik wpisując (MS-DOS):		   :!del TEST
+                          lub (Unix):              :!rm TEST
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		    Lekcja 5.3.: WYBRANIE TEKSTU DO ZAPISU
@@ -687,8 +687,8 @@
      teraz są dwie kopie Lekcji 5.3., oryginał i kopia z pliku.
 
 UWAGA: Możesz też wczytać wyjście zewnętrznego polecenia. Na przykład
-       :r !ls  wczytuje wyjście polecenia ls i umieszcza je pod kursorem.
-
+       :r !ls  wczytuje wyjście polecenia ls i umieszcza je pod poniżej
+       kursora.
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -703,7 +703,7 @@
 
 	  :!rm NAZWA_PLIKU  -  usuwa plik NAZWA_PLIKU.
 
-  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vim-a na dysk z nazwą NAZWA_PLIKU.
+  2.  :w NAZWA_PLIKU  zapisuje obecny plik Vima na dysk z nazwą NAZWA_PLIKU.
 
   3.  v ruch :w NAZWA_PLIKU  zapisuje Wizualnie wybrane linie do NAZWA_PLIKU.
 
@@ -752,13 +752,13 @@
   4. Dokończ wyraz tak jak w linii poniżej. Wciśnij <ESC> aby opuścić tryb
      Insert.
 
-  5. Użyj  e  by przejść do kolejnego niedokończonego wyraze i powtarzaj kroki
+  5. Użyj  e  by przejść do kolejnego niedokończonego wyrazu i powtarzaj kroki
      3. i 4.
 
 ---> Ta li poz Ci ćwi dodaw teks do koń lin
 ---> Ta linia pozwoli Ci ćwiczyć dodawanie tekstu do końca linii.
 
-Uwaga:  a ,  i  and  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce
+Uwaga:  a ,  i  oraz  A  prowadzą do trybu Insert, jedyną różnicą jest miejsce
        gdzie nowe znaki będą dodawane.
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   Lekcja 6.3.: INNA WERSJA REPLACE (zamiana)
@@ -789,7 +789,7 @@
 
        ** użyj operatora  y  aby skopiować tekst i  p  aby go wkleić **
 
-  1. Przejdź do linii oznaczonej ---> i umieśc kursor za "a)".
+  1. Przejdź do linii oznaczonej ---> i umieść kursor za "a)".
 
   2. Wejdź w tryb Visual  v  i przenieś kursor na początek "pierwszy".
 
@@ -799,8 +799,8 @@
 
   5. Wciśnij  p  aby wpakować (paste) tekst.  Dodaj:  a drugi<ESC> .
 
-  6. Użyj trybu Visual aby wybrać " element.", yankuj go  y , przejdź do końca
-     następnej linii  j$ i upakuj tam tekst z  p .
+  6. Użyj trybu Wizualnego aby wybrać " element.", yankuj go  y , przejdź do
+     końca następnej linii  j$ i upakuj tam tekst z  p .
 
 --->  a) to jest pierwszy element.
       b)
@@ -818,7 +818,7 @@
   2. Ustaw opcję 'ic' (Ignore case -- ignoruj wielkość liter) poprzez
      wpisanie:		:set ic
 
-  3. Teraz szukaj 'ignore' ponownie wciskując:  n
+  3. Teraz szukaj 'ignore' ponownie wciskając:  n
      Zauważ, że Ignore i IGNORE także są teraz znalezione.
 
   4. Ustaw opcje 'hlsearch' i 'incsearch':    :set hls is
@@ -835,16 +835,18 @@
 
 
   1. Wpisanie  o  otwiera linię PONIŻEJ kursora.
-     Wpisanie wielkiego  O  otwiera linię POWYŻEJ kursora.
-  2. Wpisz  a  by wstawić tekst ZA znakiem na, którym jest kursor.
-     Wpisanie wielkiego  A  dodaje tekst na końcu linii.
+     Wpisanie  O  otwiera linię POWYŻEJ kursora.
+
+  2. Wpisanie  a  by wstawić tekst ZA znakiem na, którym jest kursor.
+     Wpisanie  A  dodaje tekst na końcu linii.
+
   3. Polecenie  e  przenosi do końca wyrazu.
-  4. Operato  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
+  4. Operator  y  yankuje (kopiuje) tekst,  p  pakuje (wkleja, paste) go.
   5. Wpisanie wielkiego  R  wprowadza w tryb Replace (zamiana) dopóki
      nie zostanie wciśnięty <ESC>.
   6. Wpisanie ":set xxx" ustawia opcję "xxx". Nietkóre opcje:
-	'ic' 'ignorecase'	ignoruj wielkość znaków
-	'is' 'incsearch'	pokaż częściowe dopasowania
+	'ic'  'ignorecase'	ignoruj wielkość znaków
+	'is'  'incsearch'	pokaż częściowe dopasowania
 	'hls' 'hlsearch'	podświetl wszystkie dopasowania
      Możesz użyć zarówno długiej jak i krótkiej formy.
   7. Dodaj "no" aby wyłączyć opcję:   :set noic
@@ -854,14 +856,14 @@
 
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-			LEKCJA 7.1. JAK UZYSKAĆ POMOC 
+			LEKCJA 7.1. JAK UZYSKAĆ POMOC
 
 		      ** Użycie systemu pomocy on-line **
 
   Vim posiada bardzo dobry system pomocy on-line. By zacząć spróbuj jednej
   z trzech możliwości:
-	- wciśnij klawisz <HELP> (jeśli takowy posiadasz)
-	- wciśnij klawisz <F1> (jeśli takowy posiadasz)
+	- wciśnij klawisz <HELP> (jeśli taki masz)
+	- wciśnij klawisz <F1> (jeśli taki masz)
 	- wpisz   :help<ENTER>
 
   Przeczytaj tekst w oknie pomocy  aby dowiedzieć się jak działa pomoc.
@@ -878,7 +880,7 @@
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 		   LEKCJA 7.2. TWORZENIE SKRYPTU STARTOWEGO
 
-			 ** Włącz możliwości Vim-a **
+			  ** Włącz możliwości Vima **
 
   Vim ma o wiele więcej możliwości niż Vi, ale większość z nich jest domyślnie
   wyłączona. Jeśli chcesz włączyć te możliwości na starcie musisz utworzyć
@@ -943,23 +945,23 @@
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  Tutaj się kończy tutorial Vim-a. Został on pomyślany tak aby dać krótki
+  Tutaj się kończy tutorial Vima. Został on pomyślany tak aby dać krótki
   przegląd jego możliwości, wystarczający byś mógł go używać. Jest on
   daleki od kompletności ponieważ Vim ma o wiele, wiele więcej poleceń.
 
   Dla dalszej nauki rekomendujemy książkę:
 	Vim - Vi Improved - autor Steve Oualline
 	Wydawca: New Riders
-  Pierwsza ksiązka całkowicie poświęcona Vim-owi. Użyteczna zwłaszcza dla
+  Pierwsza ksiązka całkowicie poświęcona Vimowi. Użyteczna zwłaszcza dla
   początkujących. Zawiera wiele przykładów i ilustracji.
   Zobacz http://iccf-holland.org./click5.html
 
-  Ta książka jest starsza i bardziej o Vi niż o Vim-ie, ale także warta
+  Starsza pozycja i bardziej o Vi niż o Vimie, ale także warta
   polecenia:
 	Learning the Vi Editor - autor Linda Lamb
 	Wydawca: O'Reilly & Associates Inc.
   To dobra książka by dowiedzieć się niemal wszystkiego co chciałbyś zrobić
-  z Vi. Szósta edycja zawiera też informacje o Vim-ie.
+  z Vi. Szósta edycja zawiera też informacje o Vimie.
 
   Po polsku wydano:
 	Edytor vi. Leksykon kieszonkowy - autor Arnold Robbins
@@ -967,10 +969,10 @@
 	ISBN: 83-7197-472-8
 	http://helion.pl/ksiazki/vilek.htm
   Jest to książeczka zawierająca spis poleceń vi i jego najważniejszych
-  klonów (między innymi Vim-a).
+  klonów (między innymi Vima).
 
 	Edytor vi - autorzy Linda Lamb i Arnold Robbins
-	Wydawca: Helion 2001 (O'Reilly) - wg 6 ang. wydania
+	Wydawca: Helion 2001 (O'Reilly) - wg 6. ang. wydania
 	ISBN: 83-7197-539-2
 	http://helion.pl/ksiazki/viedyt.htm
   Rozszerzona wersja Learning the Vi Editor w polskim tłumaczeniu.
@@ -980,7 +982,7 @@
   Colorado State University.
   E-mail: bware@mines.colorado.edu.
 
-  Zmodyfikowane dla Vim-a przez Brama Moolenaara.
+  Zmodyfikowane dla Vima przez Brama Moolenaara.
 
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -988,4 +990,5 @@
   Sierpień 2001,
   rev. Marzec 2002
   2nd rev. Wrzesień 2004
+  3rd rev. Marzec 2006
   Wszelkie uwagi proszę kierować na: mikmach@wp.pl