diff --git a/runtime/autoload/phpcomplete.vim b/runtime/autoload/phpcomplete.vim
index 1953aa2..1dbabc3 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 Apr 15
+" Last Change:	2006 Apr 30
 "
 "   TODO:
 "   - Class aware completion:
@@ -72,7 +72,7 @@
 		" Complete class name
 		" Internal solution for finding classes in current file.
 		let file = getline(1, '$')
-		call filter(file, 
+		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, ' ')
@@ -153,15 +153,15 @@
 				" and ifs. No good solution
 				" Functions declared with public keyword or without any
 				" keyword are public
-				let functions = filter(deepcopy(sccontent), 
+				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, 
+					let f_name = matchstr(i,
 							\ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
-					let f_args = matchstr(i, 
+					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
@@ -169,13 +169,13 @@
 				endfor
 				" Variables declared with var or with public keyword are
 				" public
-				let variables = filter(deepcopy(sccontent), 
+				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, 
+					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] = ''
@@ -204,13 +204,13 @@
 						if all_values[i] != ''
 							let class = i.' class '
 						endif
-						let final_list += 
-								\ [{'word':i, 
-								\   'info':class.all_values[i], 
+						let final_list +=
+								\ [{'word':i,
+								\   'info':class.all_values[i],
 								\   'kind':'v'}]
 					else
-						let final_list += 
-								\ [{'word':substitute(i, '.*::', '', ''), 
+						let final_list +=
+								\ [{'word':substitute(i, '.*::', '', ''),
 								\   'info':i.all_values[i].')',
 								\   'kind':'f'}]
 					endif
@@ -241,7 +241,7 @@
 				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, " \\")'))
@@ -256,7 +256,7 @@
 				let classname = ''
 				if field['text'] =~ item.'\s*=\s*new\s\+'
 					let item = item.'->'
-					let classname = matchstr(field['text'], 
+					let classname = matchstr(field['text'],
 							\ '=\s*new\s\+\zs[a-zA-Z_0-9\x7f-\xff]\+\ze')
 				endif
 				let ext_vars[adddollar.item] = classname
@@ -268,16 +268,16 @@
 
 		" Internal solution for finding functions in current file.
 		let file = getline(1, '$')
-		call filter(file, 
+		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, 
+			let f_name = matchstr(i,
 					\ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
-			let f_args = matchstr(i, 
+			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
@@ -291,7 +291,7 @@
 				" File name
 				let item = matchstr(field['text'], '^[^[:space:]]\+')
 				let fname = matchstr(field['text'], '\t\zs\f\+\ze')
-				let prototype = matchstr(field['text'], 
+				let prototype = matchstr(field['text'],
 						\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
 				let ext_functions[item.'('] = prototype.') - '.fname
 			endfor
@@ -320,8 +320,8 @@
 				endif
 				let final_list += [{'word':i, 'info':class.all_values[i], 'kind':'v'}]
 			else
-				let final_list += 
-						\ [{'word':substitute(i, '.*::', '', ''), 
+				let final_list +=
+						\ [{'word':substitute(i, '.*::', '', ''),
 						\   'info':i.all_values[i],
 						\   'kind':'f'}]
 			endif
@@ -361,10 +361,10 @@
 		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, 
+				let val = matchstr(i,
 						\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*').'->'
 			else
-				let val = matchstr(i, 
+				let val = matchstr(i,
 						\ '^\$[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*')
 			endif
 			if val != ''
@@ -373,7 +373,7 @@
 		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 = {}
@@ -387,7 +387,7 @@
 				" Add -> if it is possible object declaration
 				if field['text'] =~ item.'\s*=\s*new\s\+'
 					let item = item.'->'
-					let m_menu = matchstr(field['text'], 
+					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
@@ -421,7 +421,7 @@
 		return int_dict
 
 	else
-		" Complete everything else - 
+		" Complete everything else -
 		"  + functions,  DONE
 		"  + keywords of language DONE
 		"  + defines (constant definitions), DONE
@@ -431,16 +431,16 @@
 
 		" Internal solution for finding functions in current file.
 		let file = getline(1, '$')
-		call filter(file, 
+		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, 
+			let f_name = matchstr(i,
 					\ '^&\?\zs[a-zA-Z_\x7f-\xff][a-zA-Z_0-9\x7f-\xff]*\ze')
-			let f_args = matchstr(i, 
+			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
@@ -454,7 +454,7 @@
 				" File name
 				let item = matchstr(field['text'], '^[^[:space:]]\+')
 				let fname = matchstr(field['text'], '\t\zs\f\+\ze')
-				let prototype = matchstr(field['text'], 
+				let prototype = matchstr(field['text'],
 						\ 'function\s\+&\?[^[:space:]]\+\s*(\s*\zs.\{-}\ze\s*)\s*{\?')
 				let ext_functions[item.'('] = prototype.') - '.fname
 			endfor
@@ -472,7 +472,7 @@
 		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, 
+			" 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
@@ -516,8 +516,8 @@
 		let final_list = []
 		for i in int_list
 			if has_key(int_functions, i)
-				let final_list += 
-						\ [{'word':i, 
+				let final_list +=
+						\ [{'word':i,
 						\   'info':i.int_functions[i],
 						\   'kind':'f'}]
 			elseif has_key(int_constants, i)
@@ -599,17 +599,17 @@
 
 function! phpcomplete#GetClassContents(file, name) " {{{
 	let cfile = join(a:file, "\n")
-	" We use new buffer and (later) normal! because 
+	" 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 {} 
+	" matching {}
 	below 1new
 	0put =cfile
 	call search('class\s\+'.a:name)
 	let cfline = line('.')
 	" Catch extends
 	if getline('.') =~ 'extends'
-		let extends_class = matchstr(getline('.'), 
+		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 = ''
@@ -965,8 +965,8 @@
 " PHP builtin functions {{{
 " To create from scratch list of functions:
 " 1. Download multi html file PHP documentation
-" 2. run for i in `ls | grep "^function\."`; do grep -A4 Description $i >> funcs; done 
-" 3. Open funcs in Vim and 
+" 2. run for i in `ls | grep "^function\."`; do grep -A4 Description $i >> funcs; done
+" 3. Open funcs in Vim and
 "    a) g/Description/normal! 5J
 "    b) remove all html tags (it will require few s/// and g//)
 "    c) :%s/^\([^[:space:]]\+\) \([^[:space:]]\+\) ( \(.*\))/\\ '\2(': '\3| \1',
