updated for version 7.0158
diff --git a/runtime/autoload/htmlcomplete.vim b/runtime/autoload/htmlcomplete.vim
index a773ff2..bd138e6 100644
--- a/runtime/autoload/htmlcomplete.vim
+++ b/runtime/autoload/htmlcomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	XHTML 1.0 Strict
 " Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
-" Last Change:	2005 Oct 12
+" Last Change:	2005 Now 20
 
 function! htmlcomplete#CompleteTags(findstart, base)
   if a:findstart
@@ -52,10 +52,13 @@
 	if exists("b:entitiescompl")
 		unlet! b:entitiescompl
 
-		" Very, very long line
-        let values = ["AElig", "Aacute", "Acirc", "Agrave", "Alpha", "Aring", "Atilde", "Auml", "Beta", "Ccedil", "Chi", "Dagger", "Delta", "ETH", "Eacute", "Ecirc", "Egrave", "Epsilon", "Eta", "Euml", "Gamma", "Iacute", "Icirc", "Igrave", "Iota", "Iuml", "Kappa", "Lambda", "Mu", "Ntilde", "Nu", "OElig", "Oacute", "Ocirc", "Ograve", "Omega", "Omicron", "Oslash", "Otilde", "Ouml", "Phi", "Pi", "Prime", "Psi", "Rho", "Scaron", "Sigma", "THORN", "TITY", "Tau", "Theta", "Uacute", "Ucirc", "Ugrave", "Upsilon", "Uuml", "Xi", "Yacute", "Yuml", "Zeta", "amp", "aacute", "acirc", "acute", "aelig", "agrave", "alefsym", "alpha", "and", "ang", "apos", "aring", "asymp", "atilde", "auml", "bdquo", "beta", "brvbar", "bull", "cap", "ccedil", "cedil", "cent", "chi", "circ", "clubs", "copy", "cong", "crarr", "cup", "curren", "dArr", "dagger", "darr", "deg", "delta", "diams", "divide", "eacute", "ecirc", "egrave", "empty", "ensp", "emsp", "epsilon", "equiv", "eta", "eth", "euro", "euml", "exist", "fnof", "forall", "frac12", "frac14", "frac34", "frasl", "gt", "gamma", "ge", "hArr", "harr", "hearts", "hellip", "iacute", "icirc", "iexcl", "igrave", "image", "infin", "int", "iota", "iquest", "isin", "iuml", "kappa", "lt", "laquo", "lArr", "lambda", "lang", "larr", "lceil", "ldquo", "le", "lfloor", "lowast", "loz", "lrm", "lsaquo", "lsquo", "macr", "mdash", "micro", "middot", "minus", "mu", "nbsp", "nabla", "ndash", "ne", "ni", "not", "notin", "nsub", "ntilde", "nu", "oacute", "ocirc", "oelig", "ograve", "oline", "omega", "omicron", "oplus", "or", "ordf", "ordm", "oslash", "otilde", "otimes", "ouml", "para", "part", "permil", "perp", "phi", "pi", "piv", "plusmn", "pound", "prime", "prod", "prop", "psi", "quot", "rArr", "raquo", "radic", "rang", "rarr", "rceil", "rdquo", "real", "reg", "rfloor", "rho", "rlm", "rsaquo", "rsquo", "sbquo", "scaron", "sdot", "sect", "shy", "sigma", "sigmaf", "sim", "spades", "sub", "sube", "sum", "sup", "sup1", "sup2", "sup3", "supe", "szlig", "tau", "there4", "theta", "thetasym", "thinsp", "thorn", "tilde", "times", "trade", "uArr", "uacute", "uarr", "ucirc", "ugrave", "uml", "upsih", "upsilon", "uuml", "weierp", "xi", "yacute", "yen", "yuml", "zeta", "zwj", "zwnj"]
+		if !exists("g:xmldata_xhtml10s")
+			runtime! autoload/xml/xhtml10s.vim
+		endif
 
-		for m in values
+	    let entities =  g:xmldata_xhtml10s['vimxmlentities']
+
+		for m in entities
 			if m =~ '^'.a:base
 				call add(res, m.';')
 			endif
@@ -114,6 +117,7 @@
 				let head = getline(search('<head\>'), search('<\/head>'))
 				let headjoined = join(copy(head), ' ')
 				if headjoined =~ '<style'
+					" Remove possibly confusing CSS operators
 					let stylehead = substitute(headjoined, '+>\*[,', ' ', 'g')
 					if search_for == 'class'
 						let styleheadlines = split(stylehead)
@@ -447,68 +451,18 @@
 	" Close tag
 	let b:unaryTagsStack = "base meta link hr br param img area input col"
 	if context =~ '^\/'
-		let opentag = htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+		let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
 		return [opentag.">"]
 	endif
 	" Deal with tag completion.
-	let opentag = htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
-	" Clusters
-	let special = "br span bdo map object img"
-	let phrase =  "em strong dfn code q samp kbd var cite abbr acronym sub sup"
-	let inlineforms = "input select textarea label button"
-	let miscinline = "ins del script"
-	let inline = "a ".special." ".phrase." ".inlineforms." tt i b big small"
-	let misc = "noscript ".miscinline
-	let block = "p h1 h2 h3 h4 h5 h6 div ul ol dl pre hr blockquote address fieldset table"
+	let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
 
-	if opentag == 'a'
-		let tags = split("tt i b big small ".special." ".phrase." ".inlineforms." ".miscinline)
-	elseif opentag =~ '^\(abbr\|acronym\|address\|b\|p\|h\d\|dt\|span\|bdo\|em\|strong\|dfn\|code\|samp\|kbd\|var\|cite\|q\|sub\|sup\|tt\|i\|big\|small\|label\|caption\)$'
-		let tags = split(inline." ".miscinline)
-	elseif opentag == 'pre'
-		let tags = split("a tt i b big small br span bdo map ".phrase." ".miscinline." ".inlineforms)
-	elseif opentag == 'html'
-		let tags = ["head", "body"]
-	elseif opentag == 'legend'
-		let tags = split(inline." ".miscinline)
-	elseif opentag == 'head'
-		let tags = ["title", "base", "scipt", "style", "meta", "link", "object"]
-	elseif opentag =~ '^\(noscript\|body\|blockquote\)$'
-		let tags = split("form ".block." ".misc)
-	elseif opentag =~ '^\(ul\|ol\)$'
-		let tags = ["li"]
-	elseif opentag == 'dl'
-		let tags = ["dt", "dd"]
-	elseif opentag =~ '^\(ins\|del\|th\|td\|dd\|div\|li\)$'
-		let tags = split("form ".block." ".inline." ".misc)
-	elseif opentag == 'object'
-		let tags = split("param form ".block." ".inline." ".misc)
-	elseif opentag == 'fieldset'
-		let tags = split("legend form ".block." ".inline." ".misc)
-	elseif opentag == 'map'
-		let tags = split("area form ".block." ".misc)
-	elseif opentag == 'form'
-		let tags = split(block." ".misc)
-	elseif opentag == 'select'
-		let tags = ["optgroup", "option"]
-	elseif opentag == 'optgroup'
-		let tags = ["option"]
-	elseif opentag == 'colgroup'
-		let tags = ["col"]
-	elseif opentag == '^\(textarea\|option\|script\|style\|title\)$'
-		let tags = ['empty']
-	elseif opentag == 'button'
-		let tags = ["p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "ul", "ol", "dl", "table"]
-	elseif opentag =~ '^\(thead\|tfoot\|tbody\)$'
-		let tags = ["tr"]
-	elseif opentag == 'tr'
-		let tags = ["th", "td"]
-	elseif opentag == 'table'
-		let tags = ["caption", "col", "colgroup", "thead", "tfoot", "tbody", "tr"]
-	else
-		return []
+	if !exists("g:xmldata_xhtml10s")
+		runtime! autoload/xml/xhtml10s.vim
 	endif
 
+	let tags = g:xmldata_xhtml10s[opentag][0]
+
 	for m in tags
 		if m =~ '^'.context
 			call add(res, m)
@@ -521,133 +475,3 @@
 
   endif
 endfunction
-
-" MM: This is greatly reduced closetag.vim used with kind permission of Steven
-"     Mueller
-"     Changes: strip all comments; delete error messages
-" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
-" Last Modified: Tue May 24 13:29:48 PDT 2005 
-" Version: 0.9.1
-
-function! htmlcomplete#GetLastOpenTag(unaryTagsStack)
-	let linenum=line('.')
-	let lineend=col('.') - 1 " start: cursor position
-	let first=1              " flag for first line searched
-	let b:TagStack=''        " main stack of tags
-	let startInComment=s:InComment()
-
-	let tagpat='</\=\(\k\|[-:]\)\+\|/>'
-	while (linenum>0)
-		let line=getline(linenum)
-		if first
-			let line=strpart(line,0,lineend)
-		else
-			let lineend=strlen(line)
-		endif
-		let b:lineTagStack=''
-		let mpos=0
-		let b:TagCol=0
-		while (mpos > -1)
-			let mpos=matchend(line,tagpat)
-			if mpos > -1
-				let b:TagCol=b:TagCol+mpos
-				let tag=matchstr(line,tagpat)
-
-				if exists('b:closetag_disable_synID') || startInComment==s:InCommentAt(linenum, b:TagCol)
-					let b:TagLine=linenum
-					call s:Push(matchstr(tag,'[^<>]\+'),'b:lineTagStack')
-				endif
-				let lineend=lineend-mpos
-				let line=strpart(line,mpos,lineend)
-			endif
-		endwhile
-		while (!s:EmptystackP('b:lineTagStack'))
-			let tag=s:Pop('b:lineTagStack')
-			if match(tag, '^/') == 0		"found end tag
-				call s:Push(tag,'b:TagStack')
-			elseif s:EmptystackP('b:TagStack') && !s:Instack(tag, a:unaryTagsStack)	"found unclosed tag
-				return tag
-			else
-				let endtag=s:Peekstack('b:TagStack')
-				if endtag == '/'.tag || endtag == '/'
-					call s:Pop('b:TagStack')	"found a open/close tag pair
-				elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
-					return ''
-				endif
-			endif
-		endwhile
-		let linenum=linenum-1 | let first=0
-	endwhile
-return ''
-endfunction
-
-function! s:InComment()
-	return synIDattr(synID(line('.'), col('.'), 0), 'name') =~ 'Comment'
-endfunction
-
-function! s:InCommentAt(line, col)
-	return synIDattr(synID(a:line, a:col, 0), 'name') =~ 'Comment'
-endfunction
-
-function! s:SetKeywords()
-	let g:IsKeywordBak=&iskeyword
-	let &iskeyword='33-255'
-endfunction
-
-function! s:RestoreKeywords()
-	let &iskeyword=g:IsKeywordBak
-endfunction
-
-function! s:Push(el, sname)
-	if !s:EmptystackP(a:sname)
-		exe 'let '.a:sname."=a:el.' '.".a:sname
-	else
-		exe 'let '.a:sname.'=a:el'
-	endif
-endfunction
-
-function! s:EmptystackP(sname)
-	exe 'let stack='.a:sname
-	if match(stack,'^ *$') == 0
-		return 1
-	else
-		return 0
-	endif
-endfunction
-
-function! s:Instack(el, sname)
-	exe 'let stack='.a:sname
-	call s:SetKeywords()
-	let m=match(stack, '\<'.a:el.'\>')
-	call s:RestoreKeywords()
-	if m < 0
-		return 0
-	else
-		return 1
-	endif
-endfunction
-
-function! s:Peekstack(sname)
-	call s:SetKeywords()
-	exe 'let stack='.a:sname
-	let top=matchstr(stack, '\<.\{-1,}\>')
-	call s:RestoreKeywords()
-	return top
-endfunction
-
-function! s:Pop(sname)
-	if s:EmptystackP(a:sname)
-		return ''
-	endif
-	exe 'let stack='.a:sname
-	call s:SetKeywords()
-	let loc=matchend(stack,'\<.\{-1,}\>')
-	exe 'let '.a:sname.'=strpart(stack, loc+1, strlen(stack))'
-	let top=strpart(stack, match(stack, '\<'), loc)
-	call s:RestoreKeywords()
-	return top
-endfunction
-
-function! s:Clearstack(sname)
-	exe 'let '.a:sname."=''"
-endfunction
diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim
index d989dc0..5a06bb0 100644
--- a/runtime/autoload/netrw.vim
+++ b/runtime/autoload/netrw.vim
@@ -1,96 +1,36 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
 "            AUTOLOAD PORTION
-" Date:		Oct 12, 2005
-" Version:	73
+" Last Change:	Aug 31, 2005
 " 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
 "               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,
-"               netrw.vim, netrwPlugin.vim, and netrwSettings.vim are provided
-"               *as is* and 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.
+"               netrw.vim is provided *as is* and 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.
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves {{{1
 "  (James 1:22 RSV)
 " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-
-" Exception for &cp: {{{1
-if &cp || exists("g:loaded_netrw")
-  finish
-endif
-let g:loaded_netrw = "v73"
+let s:keepcpo= &cpo
+set cpo&vim
+" call Decho("doing autoload/netrw.vim")
 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
 endif
-let s:keepcpo      = &cpo
-set cpo&vim
-" call Decho("doing autoload/netrw.vim")
 
 " ---------------------------------------------------------------------
-" Default values for netrw's global protocol variables {{{1
-if !exists("g:netrw_dav_cmd")
-  let g:netrw_dav_cmd	= "cadaver"
+" Default values for global netrw variables {{{1
+if !exists("g:netrw_ftpmode")
+ let g:netrw_ftpmode= "binary"
 endif
-if !exists("g:netrw_fetch_cmd")
- if executable("fetch")
-  let g:netrw_fetch_cmd	= "fetch -o"
- else
-  let g:netrw_fetch_cmd	= ""
- endif
-endif
-if !exists("g:netrw_ftp_cmd")
-  let g:netrw_ftp_cmd	= "ftp"
-endif
-if !exists("g:netrw_http_cmd")
- if executable("wget")
-  let g:netrw_http_cmd	= "wget -q -O"
- elseif executable("fetch")
-  let g:netrw_http_cmd	= "fetch -o"
- else
-  let g:netrw_http_cmd	= ""
- endif
-endif
-if !exists("g:netrw_rcp_cmd")
-  let g:netrw_rcp_cmd	= "rcp"
-endif
-if !exists("g:netrw_rsync_cmd")
-  let g:netrw_rsync_cmd	= "rsync"
-endif
-if !exists("g:netrw_scp_cmd")
-  let g:netrw_scp_cmd	= "scp -q"
-endif
-if !exists("g:netrw_sftp_cmd")
-  let g:netrw_sftp_cmd	= "sftp"
-endif
-if !exists("g:netrw_ssh_cmd")
- let g:netrw_ssh_cmd= "ssh"
-endif
-
-if has("win32") || has("win95") || has("win64") || has("win16")
-  \ && exists("g:netrw_use_nt_rcp")
-  \ && g:netrw_use_nt_rcp
-  \ && executable( $SystemRoot .'/system32/rcp.exe')
- let s:netrw_has_nt_rcp = 1
- let s:netrw_rcpmode    = '-b'
- else
- let s:netrw_has_nt_rcp = 0
- let s:netrw_rcpmode    = ''
-endif
-
-" ---------------------------------------------------------------------
-" Default values for netrw's global variables {{{1
-" Default values - a-c ---------- {{{2
-if !exists("g:netrw_alto")
- let g:netrw_alto= 0
-endif
-if !exists("g:netrw_altv")
- let g:netrw_altv= 0
+if !exists("g:netrw_win95ftp")
+ let g:netrw_win95ftp= 1
 endif
 if !exists("g:netrw_cygwin")
  if has("win32") || has("win95") || has("win64") || has("win16")
@@ -103,15 +43,14 @@
   let g:netrw_cygwin= 0
  endif
 endif
-" Default values - d-f ---------- {{{2
-if !exists("g:NETRW_DIRHIST_CNT")
- let g:NETRW_DIRHIST_CNT= 0
-endif
-if !exists("g:netrw_dirhistmax")
- let g:netrw_dirhistmax= 10
-endif
-if !exists("g:netrw_ftp_browse_reject")
- let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
+if !exists("g:netrw_list_cmd")
+ if executable("ssh")
+  " provide a default listing command
+  let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
+ else
+"  call Decho("ssh is not executable, can't do remote directory exploring with ssh")
+  let g:netrw_list_cmd= ""
+ endif
 endif
 if !exists("g:netrw_ftp_list_cmd")
  if has("unix") || exists("g:netrw_cygwin")
@@ -120,96 +59,75 @@
   let g:netrw_ftp_list_cmd= "dir"
  endif
 endif
-if !exists("g:netrw_ftpmode")
- let g:netrw_ftpmode= "binary"
-endif
-" Default values - h-lh ---------- {{{2
-if !exists("g:netrw_hide")
- let g:netrw_hide= 1
-endif
-if !exists("g:netrw_keepdir")
- let g:netrw_keepdir= 1
-endif
-if !exists("g:netrw_list_cmd")
- if executable(g:netrw_ssh_cmd)
-  " provide a default listing command
-  let g:netrw_list_cmd= g:netrw_ssh_cmd." HOSTNAME ls -FLa"
- else
-"  call Decho(g:netrw_ssh_cmd." is not executable, can't do remote directory exploring)
-  let g:netrw_list_cmd= ""
- endif
-endif
-if !exists("g:netrw_list_hide")
- let g:netrw_list_hide= ""
-endif
-" Default values - lh-lz ---------- {{{2
-if !exists("g:netrw_local_mkdir")
- let g:netrw_local_mkdir= "mkdir"
-endif
-if !exists("g:netrw_local_rmdir")
- let g:netrw_local_rmdir= "rmdir"
-endif
-if !exists("g:netrw_longlist")
- let g:netrw_longlist= 0
-endif
-if g:netrw_longlist < 0 || g:netrw_longlist > 2
- " sanity check
- let g:netrw_longlist= 0
-endif
-if g:netrw_longlist == 1
- let g:netrw_list_cmd= g:netrw_list_cmd." -l"
-endif
-" Default values - m-r ---------- {{{2
-if !exists("g:netrw_maxfilenamelen")
- let g:netrw_maxfilenamelen= 32
-endif
-if !exists("g:netrw_mkdir_cmd")
- let g:netrw_mkdir_cmd= g:netrw_ssh_cmd." HOSTNAME mkdir"
-endif
-if !exists("g:netrw_rename_cmd")
- let g:netrw_rename_cmd= g:netrw_ssh_cmd." HOSTNAME mv"
-endif
 if !exists("g:netrw_rm_cmd")
- let g:netrw_rm_cmd    = g:netrw_ssh_cmd." HOSTNAME rm"
-endif
-if !exists("g:netrw_rmdir_cmd")
- let g:netrw_rmdir_cmd = g:netrw_ssh_cmd." HOSTNAME rmdir"
+ let g:netrw_rm_cmd    = "ssh HOSTNAME rm"
 endif
 if !exists("g:netrw_rmf_cmd")
- let g:netrw_rmf_cmd    = g:netrw_ssh_cmd." HOSTNAME rm -f"
+ let g:netrw_rmf_cmd    = "ssh HOSTNAME rm -f"
 endif
-" Default values - s ---------- {{{2
+if !exists("g:netrw_rmdir_cmd")
+ let g:netrw_rmdir_cmd = "ssh HOSTNAME rmdir"
+endif
+if !exists("g:netrw_rename_cmd")
+ let g:netrw_rename_cmd= "ssh HOSTNAME mv"
+endif
 if exists("g:netrw_silent") && g:netrw_silent != 0
  let g:netrw_silentxfer= "silent "
 else
  let g:netrw_silentxfer= ""
 endif
+if !exists("g:netrw_winsize")
+ let g:netrw_winsize= ""
+endif
+if !exists("g:netrw_list_hide")
+ let g:netrw_list_hide= ""
+endif
 if !exists("g:netrw_sort_by")
  " alternatives: date size
  let g:netrw_sort_by= "name"
 endif
+if !exists("g:netrw_sort_sequence")
+ let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$'
+endif
 if !exists("g:netrw_sort_direction")
  " alternative: reverse  (z y x ...)
  let g:netrw_sort_direction= "normal"
 endif
-if !exists("g:netrw_sort_sequence")
- let g:netrw_sort_sequence= '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$'
+if !exists("g:netrw_longlist")
+ let g:netrw_longlist= 0
+endif
+if g:netrw_longlist == 0 || g:netrw_longlist == 2
+ let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
+else
+ let g:netrw_longlist= 1
+ let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa -l"
+endif
+if !exists("g:netrw_list_cmd")
+endif
+if !exists("g:netrw_timefmt")
+ let g:netrw_timefmt= "%c"
+endif
+if !exists("g:netrw_local_rmdir")
+ let g:netrw_local_rmdir= "rmdir"
+endif
+if !exists("g:netrw_local_mkdir")
+ let g:netrw_local_mkdir= "mkdir"
+endif
+if !exists("g:netrw_mkdir_cmd")
+ let g:netrw_mkdir_cmd= "ssh HOSTNAME mkdir"
+endif
+if !exists("g:netrw_hide")
+ let g:netrw_hide= 1
+endif
+if !exists("g:netrw_ftp_browse_reject")
+ let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
 endif
 if !exists("g:netrw_ssh_browse_reject")
   let g:netrw_ssh_browse_reject='^total\s\+\d\+$'
 endif
-" Default values - t-w ---------- {{{2
-if !exists("g:netrw_timefmt")
- let g:netrw_timefmt= "%c"
+if !exists("g:netrw_keepdir")
+ let g:netrw_keepdir= 1
 endif
-if !exists("g:netrw_win95ftp")
- let g:netrw_win95ftp= 1
-endif
-if !exists("g:netrw_winsize")
- let g:netrw_winsize= ""
-endif
-" ---------------------------------------------------------------------
-" Default values for netrw's script variables: {{{1
 if !exists("s:netrw_cd_escape")
  if has("win32") || has("win95") || has("win64") || has("win16")
   let s:netrw_cd_escape="#% "
@@ -224,12 +142,75 @@
   let s:netrw_glob_escape= '[]*?`{~$'
  endif
 endif
+if !exists("g:netrw_alto")
+ let g:netrw_alto= 0
+endif
+if !exists("g:netrw_altv")
+ let g:netrw_altv= 0
+endif
+if !exists("g:netrw_maxfilenamelen")
+ let g:netrw_maxfilenamelen= 32
+endif
+if !exists("g:netrw_dirhistmax")
+ let g:netrw_dirhistmax= 10
+endif
+if !exists("g:NETRW_DIRHIST_CNT")
+ let g:NETRW_DIRHIST_CNT= 0
+endif
 
 " BufEnter event ignored by decho when following variable is true
 "  Has a side effect that doau BufReadPost doesn't work, so
 "  files read by network transfer aren't appropriately highlighted.
 "let g:decho_bufenter = 1	"Decho
 
+" ---------------------------------------------------------------------
+" Default values for global protocol variables {{{1
+if !exists("g:netrw_rcp_cmd")
+  let g:netrw_rcp_cmd	= "rcp"
+endif
+if !exists("g:netrw_ftp_cmd")
+  let g:netrw_ftp_cmd	= "ftp"
+endif
+if !exists("g:netrw_scp_cmd")
+  let g:netrw_scp_cmd	= "scp -q"
+endif
+if !exists("g:netrw_sftp_cmd")
+  let g:netrw_sftp_cmd	= "sftp"
+endif
+if !exists("g:netrw_http_cmd")
+ if executable("wget")
+  let g:netrw_http_cmd	= "wget -q -O"
+ elseif executable("fetch")
+  let g:netrw_http_cmd	= "fetch -o"
+ else
+  let g:netrw_http_cmd	= ""
+ endif
+endif
+if !exists("g:netrw_dav_cmd")
+  let g:netrw_dav_cmd	= "cadaver"
+endif
+if !exists("g:netrw_rsync_cmd")
+  let g:netrw_rsync_cmd	= "rsync"
+endif
+if !exists("g:netrw_fetch_cmd")
+ if executable("fetch")
+  let g:netrw_fetch_cmd	= "fetch -o"
+ else
+  let g:netrw_fetch_cmd	= ""
+ endif
+endif
+
+if has("win32") || has("win95") || has("win64") || has("win16")
+  \ && exists("g:netrw_use_nt_rcp")
+  \ && g:netrw_use_nt_rcp
+  \ && executable( $SystemRoot .'/system32/rcp.exe')
+ let s:netrw_has_nt_rcp = 1
+ let s:netrw_rcpmode    = '-b'
+ else
+ let s:netrw_has_nt_rcp = 0
+ let s:netrw_rcpmode    = ''
+endif
+
 " ------------------------------------------------------------------------
 " NetSavePosn: saves position of cursor on screen {{{1
 fun! netrw#NetSavePosn()
@@ -422,14 +403,12 @@
    ".........................................
    " ftp + <.netrc>:  NetRead Method #2
    elseif b:netrw_method  == 2		" read with ftp + <.netrc>
-"     call Decho("read via ftp+.netrc (method #2)")
+"    call Decho("read via ftp+.netrc (method #2)")
      let netrw_fname= b:netrw_fname
      new
      setlocal ff=unix
      exe "put ='".g:netrw_ftpmode."'"
-"     call Decho("filter input: ".getline("."))
-     exe "put ='".'get \"'.netrw_fname.'\" '.tmpfile."'"
-"     call Decho("filter input: ".getline("."))
+     exe "put ='"."get ".netrw_fname." ".tmpfile."'"
      if exists("g:netrw_port") && g:netrw_port != ""
 "      call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
       exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -446,7 +425,7 @@
       let &debug= debugkeep
      endif
      bd!
-     let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
+     let result = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
      let b:netrw_lastfile = choice
  
    ".........................................
@@ -459,33 +438,27 @@
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
-"     call Decho("filter input: ".getline("."))
     else
      put ='open '.g:netrw_machine
-"     call Decho("filter input: ".getline("."))
     endif
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-"     call Decho("filter input: ".getline("."))
-     put ='\"'.g:netrw_passwd.'\"'
-"     call Decho("filter input: ".getline("."))
+     put =g:netrw_passwd
     else
-     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
-"     call Decho("filter input: ".getline("."))
+     put ='user '.g:netrw_uid.' '.g:netrw_passwd
     endif
  
     if exists("g:netrw_ftpmode") && g:netrw_ftpmode != ""
      put =g:netrw_ftpmode
-"     call Decho("filter input: ".getline("."))
     endif
-    put ='get \"'.netrw_fname.'\" '.tmpfile
-"     call Decho("filter input: ".getline("."))
+    put ='get '.netrw_fname.' '.tmpfile
  
     " perform ftp:
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
+"    call Decho('performing ftp -i -n')
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
     exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
@@ -518,7 +491,7 @@
 "     call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile)
      exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(b:netrw_fname,' ?&')." ".tmpfile
     endif
-    let result           = s:NetGetFile(readcmd, tmpfile, b:netrw_method)
+    let result		= s:NetGetFile(readcmd, tmpfile, b:netrw_method)
     let b:netrw_lastfile = choice
  
    ".........................................
@@ -529,8 +502,7 @@
       echohl Error | echo "***netrw*** neither wget nor fetch command is available" | echohl None
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
-"     call Dret("NetRead")
-     return
+     exit
     endif
  
     if match(b:netrw_fname,"#") == -1
@@ -609,7 +581,7 @@
       echohl Error | echo "***netrw*** fetch command not available" | echohl None
       call inputsave()|call input("Press <cr> to continue")|call inputrestore()
      endif
-"     call Dret("NetRead")
+     exit
     endif
     if exists("g:netrw_option") && g:netrw_option == ":http"
      let netrw_option= "http"
@@ -666,10 +638,6 @@
 " NetGetFile: Function to read file "fname" with command "readcmd". {{{1
 fun! s:NetGetFile(readcmd, fname, method)
 "   call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)")
-
-  " record remote filename
-  let rfile= bufname("%")
-"  call Decho("rfile<".rfile.">")
  
   if exists("*NetReadFixup")
    " for the use of NetReadFixup (not otherwise used internally)
@@ -687,12 +655,15 @@
    endif
   else
    let fname= a:fname
-"   call Decho("fname=a:fname<".fname.">")
+"   call Decho("(copied) fname<".fname.">")
   endif
  
   if a:readcmd[0] == '0'
   " get file into buffer
 
+   " record remote filename
+   let rfile= bufname(".")
+"   call Decho("remotefile<".rfile.">")
 "   call Dredir("ls!","starting buffer list")
 
    " rename the current buffer to the temp file (ie. fname)
@@ -717,12 +688,8 @@
    exe a:readcmd." ".v:cmdarg." ".fname
    let line1        = curline + 1
    let line2        = line("$") - lastline + 1
-
   else
    " not readable
-"   call Dfunc("NetGetFile(readcmd<".a:readcmd.">,fname<".a:fname."> method<".a:method.">)")
-   echohl WarningMsg | echo "***netrw*** file <".fname."> not readable"| echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("NetGetFile : fname<".fname."> not readable")
    return
   endif
@@ -762,7 +729,7 @@
   if !isdirectory(substitute(tmpfile,'[^/]\+$','','e'))
    echohl Error | echo "***netrw*** your ".substitute(tmpfile,'[^/]\+$','','e')." directory is missing!"
    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"   call Dret("NetWrite")
+"   call Dret("NetRead")
    return
   endif
  
@@ -872,9 +839,9 @@
     new
     setlocal ff=unix
     exe "put ='".g:netrw_ftpmode."'"
-"    call Decho(" filter input: ".getline("."))
-    exe "put ='"."put ".tmpfile.' \"'.netrw_fname.'\"'."'"
-"    call Decho(" filter input: ".getline("."))
+"    call Decho(" NetWrite: put ='".g:netrw_ftpmode."'")
+    exe "put ='"."put ".tmpfile." ".netrw_fname."'"
+"    call Decho("put ='"."put ".tmpfile." ".netrw_fname."'")
     if exists("g:netrw_port") && g:netrw_port != ""
 "     call Decho("executing: %!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
      exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -901,22 +868,16 @@
     setlocal ff=unix
     if exists("g:netrw_port") && g:netrw_port != ""
      put ='open '.g:netrw_machine.' '.g:netrw_port
-"     call Decho("filter input: ".getline("."))
     else
      put ='open '.g:netrw_machine
-"     call Decho("filter input: ".getline("."))
     endif
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-"     call Decho("filter input: ".getline("."))
-     put ='\"'.g:netrw_passwd.'\"'
-"     call Decho("filter input: ".getline("."))
+     put =g:netrw_passwd
     else
-     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
-"     call Decho("filter input: ".getline("."))
+     put ='user '.g:netrw_uid.' '.g:netrw_passwd
     endif
-    put ='put '.tmpfile.' \"'.netrw_fname.'\"'
-"    call Decho("filter input: ".getline("."))
+    put ='put '.tmpfile.' '.netrw_fname
     " save choice/id/password for future use
     let b:netrw_lastfile = choice
  
@@ -924,6 +885,7 @@
     " -i       : turns off interactive prompting from ftp
     " -n  unix : DON'T use <.netrc>, even though it exists
     " -n  win32: quit being obnoxious about password
+"    call Decho('performing ftp -i -n')
     norm! 1Gdd
 "    call Decho("executing: %!".g:netrw_ftp_cmd." -i -n")
     exe g:netrw_silentxfer."%!".g:netrw_ftp_cmd." -i -n"
@@ -1076,7 +1038,7 @@
    endif
   elseif !exists("g:netrw_list_cmd") || g:netrw_list_cmd == ''
    if !exists("g:netrw_quiet")
-    echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ".g:netrw_list_cmd | echohl None
+    echohl Error | echo "***netrw*** this system doesn't support remote directory listing via ssh" | echohl None
     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
    endif
 
@@ -1094,7 +1056,7 @@
   " analyze a:dirname and g:netrw_list_cmd
   let dirpat  = '^\(\w\{-}\)://\(\w\+@\)\=\([^/]\+\)/\(.*\)$'
   let dirname = substitute(a:dirname,'\\','/','ge')
-"  call Decho("dirname<".dirname.">")
+"  call Decho("dirpat<".dirpat.">")
   if dirname !~ dirpat
    if !exists("g:netrw_quiet")
     echohl Error | echo "***netrw*** netrw doesn't understand your dirname<".dirname.">" | echohl None
@@ -1164,9 +1126,9 @@
 "   call Decho("new path<".path.">")
 
    " remote-read the requested file into current buffer
-   keepjumps keepalt enew!
+   enew!
    set ma
-"   call Decho("exe file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape))
+"   call Decho("exe file .method."://".user.machine."/".escape(path,s:netrw_cd_escape))
    exe "file ".method."://".user.machine."/".escape(path,s:netrw_cd_escape)
    exe "silent doau BufReadPre ".fname
    silent call netrw#NetRead(method."://".user.machine."/".path)
@@ -1174,7 +1136,7 @@
    keepjumps 1d
 
    " save certain window-oriented variables into buffer-oriented variables
-   call s:SetBufWinVars()
+   call s:BufWinVars()
    call s:NetOptionRestore()
    setlocal nomod
 
@@ -1200,7 +1162,7 @@
    endif
   else
 "   call Decho("generate a new buffer")
-   keepjumps keepalt enew!
+   enew!
   endif
 
   " rename file to reflect where its from
@@ -1238,7 +1200,7 @@
   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
   nnoremap <buffer> <silent> v		:call <SID>NetSplit(1)<cr>
   nnoremap <buffer> <silent> x		:call <SID>NetBrowseX(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()),1)<cr>
-  nnoremap <buffer> <silent> <2-leftmouse>	:call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
+  nnoremap <buffer> <silent> <2-leftmouse> :call <SID>NetBrowse(<SID>NetBrowseChgDir(expand("%"),<SID>NetGetWord()))<cr>
   exe 'nnoremap <buffer> <silent> <del>	:call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
   exe 'vnoremap <buffer> <silent> <del>	:call <SID>NetBrowseRm("'.user.machine.'","'.path.'")<cr>'
   exe 'nnoremap <buffer> <silent> d	:call <SID>NetMakeDir("'.user.machine.'")<cr>'
@@ -1298,7 +1260,6 @@
     if g:netrw_ftp_browse_reject != ""
      exe "silent! g/".g:netrw_ftp_browse_reject."/keepjumps d"
     endif
-    silent! keepjumps %s/\r$//e
 
     " if there's no ../ listed, then put ./ and ../ in
     let line1= line(".")
@@ -1313,9 +1274,9 @@
     keepjumps norm! 0
 
     " more cleanup
-    exe 'silent! keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
-    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
-    exe "silent! keepjumps ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
+    exe 'keepjumps silent! '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2/e'
+    exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*/$#/#e'
+    exe "keepjumps silent! ".w:netrw_bannercnt.',$g/ -> /s# -> .*$#/#e'
    endif
 
   else
@@ -1372,33 +1333,33 @@
     keepjumps norm! 0
     endif
 
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/ -> .*$//e'
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
-    exe 'silent keepjumps '.w:netrw_bannercnt
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$s/ -> .*$//e'
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\%(\S\+\s\+\)\{7}\S\+\)\s\+\(\S.*\)$/\2\t\1/e'
+    exe w:netrw_bannercnt
    endif
 
    if line("$") >= w:netrw_bannercnt
     if g:netrw_sort_by =~ "^n"
      call s:SetSort()
      if g:netrw_sort_direction =~ 'n'
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
      else
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
     endif
     if w:netrw_longlist == 1
      " shorten the list to keep its width <= winwidth characters
-     exe "silent keepjumps ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
+     exe "keepjumps silent ".w:netrw_bannercnt.',$s/\t[-dstrwx]\+/\t/e'
     endif
    endif
   endif
 
+  " cleanup any windows mess at end-of-line
+  keepjumps silent! %s/\r$//e
   call s:NetrwWideListing()
   if line("$") >= w:netrw_bannercnt
-   " place cursor on the top-left corner of the file listing
    exe "keepjumps ".w:netrw_bannercnt
-   norm! 0
   endif
 
   call s:NetOptionRestore()
@@ -1488,7 +1449,7 @@
     let s:netrw_skipbrowse= 1
     echo 'Pressing "a" also works'
    elseif line("$") > w:netrw_bannercnt
-    exe 'silent keepjumps '.w:netrw_bannercnt
+    exe w:netrw_bannercnt
    endif
 
   elseif w:netrw_longlist == 0
@@ -1552,9 +1513,6 @@
      let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
      call inputrestore()
      echohl NONE
-     if ok == ""
-      let ok="no"
-     endif
      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
      if ok =~ 'a\%[ll]'
       let all= 1
@@ -1581,9 +1539,6 @@
      call inputsave()
      let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
      call inputrestore()
-     if ok == ""
-      let ok="no"
-     endif
      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
      if ok =~ 'a\%[ll]'
       let all= 1
@@ -1735,12 +1690,12 @@
    " create a local copy
    let fname= tempname().".".exten
 "   call Decho("create a local copy of <".a:fname."> as <".fname.">")
-   exe "silent keepjumps bot 1new ".a:fname
+   exe "keepjumps silent bot 1new ".a:fname
    set bh=delete
    exe "w! ".fname
    q
   endif
-"  call Decho("exten<".exten."> "."netrwFileHandlers#NFH_".exten."():exists=".exists("*netrwFileHandlers#NFH_".exten))
+"  call Decho("exten<".exten."> "."NetrwFileHandler_".exten."():exists=".exists("*NetrwFileHandler_".exten))
 
   " set up redirection
   if &srr =~ "%s"
@@ -1756,22 +1711,19 @@
    exe 'silent !start rundll32 url.dll,FileProtocolHandler "'.escape(fname, '%#').'"'
    let ret= v:shell_error
 
-  elseif has("unix") && executable("gnome-open")
-"   call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir)
-   exe "silent !gnome-open '".escape(fname,'%#')."'".redir
-   let ret= v:shell_error
-
   elseif has("unix") && executable("kfmclient")
 "   call Decho("exe silent !kfmclient exec '".escape(fname,'%#')."' ".redir)
    exe "silent !kfmclient exec '".escape(fname,'%#')."' ".redir
    let ret= v:shell_error
 
-  else
-   call netrwFileHandlers#Init()
-   if exten != "" && exists("*netrwFileHandlers#NFH_".exten)
-"    call Decho("let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")')
-    exe "let ret= netrwFileHandlers#NFH_".exten.'("'.fname.'")'
-   endif
+  elseif has("unix") && executable("gnome-open")
+"   call Decho("exe silent !gnome-open '".escape(fname,'%#')."' ".redir)
+   exe "silent !gnome-open '".escape(fname,'%#')."'".redir
+   let ret= v:shell_error
+
+  elseif exten != "" && exists("*NetrwFileHandler_".exten)
+"   call Decho("let ret= NetrwFileHandler_".exten.'("'.fname.'")')
+   exe "let ret= NetrwFileHandler_".exten.'("'.fname.'")'
   endif
   redraw!
 
@@ -1813,11 +1765,11 @@
   if w:netrw_method == 2 || w:netrw_method == 5 
    " ftp + <.netrc>:  Method #2
    if a:path != ""
-    put ='cd \"'.a:path.'\"'
-"    call Decho('ftp:  '.getline("."))
+    put ='cd '.a:path
+"    call Decho("ftp:  cd ".a:path)
    endif
    exe "put ='".a:cmd."'"
-"   call Decho("ftp:  ".getline("."))
+"   call Decho("ftp:  ".a:cmd)
 "    redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
    if exists("g:netrw_port") && g:netrw_port != ""
 "    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
@@ -1839,13 +1791,13 @@
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put ='\"'.g:netrw_passwd.'\"'
+     put =g:netrw_passwd
     else
-     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
+     put ='user '.g:netrw_uid.' '.g:netrw_passwd
     endif
  
    if a:path != ""
-    put ='cd \"'.a:path.'\"'
+    put ='cd '.a:path
    endif
    exe "put ='".a:cmd."'"
  
@@ -1863,14 +1815,14 @@
 
   " cleanup for Windows
   if has("win32") || has("win95") || has("win64") || has("win16")
-   silent! keepjumps! %s/\r$//e
+   keepjumps silent!! %s/\r$//e
   endif
   if a:cmd == "dir"
    " infer directory/link based on the file permission string
-   silent! keepjumps g/d\%([-r][-w][-x]\)\{3}/s@$@/@
-   silent! keepjumps g/l\%([-r][-w][-x]\)\{3}/s/$/@/
+   keepjumps silent! g/d\%([-r][-w][-x]\)\{3}/s@$@/@
+   keepjumps silent! g/l\%([-r][-w][-x]\)\{3}/s/$/@/
    if w:netrw_longlist == 0 || w:netrw_longlist == 2
-    exe "silent! keepjumps ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
+    exe "keepjumps silent! ".curline.',$s/^\%(\S\+\s\+\)\{8}//e'
    endif
   endif
 
@@ -1908,9 +1860,9 @@
    " Prune the list by hiding any files which match
 "   call Decho("pruning <".hide."> listhide<".listhide.">")
    if g:netrw_hide == 1
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g~'.hide.'~d'
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$g~'.hide.'~d'
    elseif g:netrw_hide == 2
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$v~'.hide.'~d'
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$v~'.hide.'~d'
    endif
   endwhile
 
@@ -2044,10 +1996,10 @@
      exe "silent keepjumps norm! 0\<c-v>".newcolqty.'j$hx'.w:netrw_bannercnt.'G$p'
     endif
     exe "silent keepjumps ".newcolstart.','.newcolend.'d'
-    exe 'silent keepjumps '.w:netrw_bannercnt
+    exe w:netrw_bannercnt
    endwhile
    exe "silent keepjumps ".w:netrw_bannercnt.',$s/\s\+$//e'
-   setlocal noma nomod
+   set noma nomod
   endif
 
 "  call Dret("NetrwWideListing")
@@ -2178,12 +2130,9 @@
   if exists("w:netrw_bannercnt") && line(".") <= w:netrw_bannercnt
    " looks like a "b" was pressed while in the banner region
    if line("$") > w:netrw_bannercnt
-    exe 'silent keepjumps '.w:netrw_bannercnt
+    exe w:netrw_bannercnt
    endif
-   if &ch > 1
-    " "clear" the message
-    echo ""
-   endif
+   echo ""
 "  call Dret("NetBookmarkDir - ignoring")
    return
   endif
@@ -2280,10 +2229,12 @@
 " ---------------------------------------------------------------------
 " NetObtain: obtain file under cursor (for remote browsing support) {{{2
 fun! s:NetObtain()
+  if !exists("s:netrw_users_stl")
+   let s:netrw_users_stl= &stl
+  endif
   let fname= expand("<cWORD>")
-
-  " NetrwStatusLine support - for obtaining support
-  call s:SetupNetrwStatusLine('%f %h%m%r%=%9*Obtaining '.fname)
+  exe 'set stl=%f\ %h%m%r%=Obtaining\ '.escape(fname,' ')
+  redraw!
 
 "  call Dfunc("NetObtain() method=".w:netrw_method)
   if exists("w:netrw_method") && w:netrw_method =~ '[235]'
@@ -2326,11 +2277,11 @@
  
     if exists("g:netrw_ftp") && g:netrw_ftp == 1
      put =g:netrw_uid
-     put ='\"'.g:netrw_passwd.'\"'
+     put =g:netrw_passwd
 "     call Decho('ftp:  g:netrw_uid')
 "     call Decho('ftp:  g:netrw_passwd')
     else
-     put ='user \"'.g:netrw_uid.'\" \"'.g:netrw_passwd.'\"'
+     put ='user '.g:netrw_uid.' '.g:netrw_passwd
 "     call Decho('user '.g:netrw_uid.' '.g:netrw_passwd)
     endif
  
@@ -2355,14 +2306,12 @@
     " restore
     exe "silent! ".endline.",$d"
     exe "keepjumps ".curline
-    setlocal noma nomod
+    set noma nomod
    else
     if !exists("g:netrw_quiet")
      echohl Error | echo "***netrw*** this system doesn't support ftp" | echohl None
      call inputsave()|call input("Press <cr> to continue")|call inputrestore()
     endif
-    let &stl        = s:netrw_users_stl
-    let &laststatus = s:netrw_users_ls
 "    call Dret("NetObtain")
     return
    endif
@@ -2370,8 +2319,6 @@
   ".........................................
   else
    " scp: Method#4
-   let curdir = expand("%")
-   let path   = substitute(curdir,'scp://[^/]\+/','','e')
    if exists("g:netrw_port") && g:netrw_port != ""
     let useport= " -P ".g:netrw_port
    else
@@ -2379,17 +2326,16 @@
    endif
    if g:netrw_cygwin == 1
     let cygtmpfile=substitute(tmpfile,'^\(\a\):','/cygdrive/\1/','e')
-"    call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
-    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
+"    call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." .")
+    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ."
    else
-"    call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." .")
-    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".path.escape(fname,' ?&')." ."
+"    call Decho("executing: !".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." .")
+    exe g:netrw_silentxfer."!".g:netrw_scp_cmd.useport." ".g:netrw_machine.":".escape(fname,' ?&')." ."
    endif
   endif
 
   " restore status line
-  let &stl        = s:netrw_users_stl
-  let &laststatus = s:netrw_users_ls
+  let &stl= s:netrw_users_stl
   redraw!
 
 "  call Dret("NetObtain")
@@ -2458,7 +2404,7 @@
 
   " get cleared buffer
   if bufnum < 0 || !bufexists(bufnum)
-   keepjumps keepalt enew!
+   keepalt enew!
 "   call Decho("enew buffer")
   else
    exe "keepalt b ".bufnum
@@ -2550,7 +2496,7 @@
   nnoremap <buffer> <silent> U		:<c-u>call <SID>NetBookmarkDir(5,expand("%"))<cr>
   nnoremap <buffer> <silent> v		:call <SID>NetSplit(3)<cr>
   nnoremap <buffer> <silent> x		:call <SID>NetBrowseX(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord(),0),0)"<cr>
-  nnoremap <buffer> <silent> <2-leftmouse>	:call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))<cr>
+  nnoremap <buffer> <silent> <2-leftmouse> :exe "call <SID>LocalRefresh(<SID>LocalBrowseChgDir(b:netrw_curdir,<SID>NetGetWord()))"<cr>
   nnoremap <buffer> <silent> <s-up>	:Pexplore<cr>
   nnoremap <buffer> <silent> <s-down>	:Nexplore<cr>
   exe 'nnoremap <buffer> <silent> <del>	:call <SID>LocalBrowseRm("'.b:netrw_curdir.'")<cr>'
@@ -2628,19 +2574,19 @@
      call s:SetSort()
 
      if g:netrw_sort_direction =~ 'n'
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
      else
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
+     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{3}\///e'
 
     else
      if g:netrw_sort_direction =~ 'n'
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort'
      else
-      exe 'silent keepjumps '.w:netrw_bannercnt.',$sort!'
+      exe 'keepjumps silent '.w:netrw_bannercnt.',$sort!'
      endif
-     exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
+     exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\d\{-}\///e'
     endif
 
    endif
@@ -2648,16 +2594,14 @@
 
   call s:NetrwWideListing()
   if exists("w:netrw_bannercnt") && line("$") > w:netrw_bannercnt
-   " place cursor on the top-left corner of the file listing
-   exe 'silent '.w:netrw_bannercnt
-   norm! 0
+   exe w:netrw_bannercnt
   endif
 
   " record previous current directory
   let w:netrw_prvdir= b:netrw_curdir
 
   " save certain window-oriented variables into buffer-oriented variables
-  call s:SetBufWinVars()
+  call s:BufWinVars()
   call s:NetOptionRestore()
   setlocal noma nomod nonu bh=hide nobl
 
@@ -2757,7 +2701,7 @@
   endwhile
   
   " cleanup any windows mess at end-of-line
-  silent! keepjumps %s/\r$//e
+  keepjumps silent! %s/\r$//e
   setlocal ts=32
 
 "  call Dret("LocalBrowseList")
@@ -2848,12 +2792,7 @@
      let ok= input("Confirm deletion of file<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
      call inputrestore()
      echohl NONE
-     if ok == ""
-      let ok="no"
-     endif
-"     call Decho("response: ok<".ok.">")
      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-"     call Decho("response: ok<".ok."> (after sub)")
      if ok =~ 'a\%[ll]'
       let all= 1
      endif
@@ -2874,9 +2813,6 @@
      let ok= input("Confirm deletion of directory<".rmfile."> ","[{y(es)},n(o),a(ll),q(uit)] ")
      call inputrestore()
      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-     if ok == ""
-      let ok="no"
-     endif
      if ok =~ 'a\%[ll]'
       let all= 1
      endif
@@ -3065,7 +3001,6 @@
 "    call Decho("calling NetBrowse(newdir<".newdir.">)")
     call s:NetBrowse(newdir)
    else
-    if newdir == ""|let newdir= "."|endif
 "    call Decho("calling LocalBrowse(newdir<".newdir.">)")
     call s:LocalBrowse(newdir)
    endif
@@ -3097,8 +3032,12 @@
      endif
     endif
 
-    " NetrwStatusLine support - for exploring support
+    " NetrwStatusLine support
     let w:netrw_explore_indx= indx
+    if !exists("s:netrw_users_stl")
+     let s:netrw_users_stl= &stl
+    endif
+    set stl=%f\ %h%m%r%=%{NetrwStatusLine()}
 "    call Decho("explorelist<".join(w:netrw_explore_list,',')."> len=".w:netrw_explore_listlen)
 
     " sanity check
@@ -3111,21 +3050,15 @@
     endif
 
     exe "let dirfile= w:netrw_explore_list[".indx."]"
-"    call Decho("dirfile=w:netrw_explore_list[indx=".indx."]= <".dirfile.">")
+"    call Decho("dirfile<".dirfile."> indx=".indx)
     let newdir= substitute(dirfile,'/[^/]*$','','e')
 "    call Decho("newdir<".newdir.">")
-
 "    call Decho("calling LocalBrowse(newdir<".newdir.">)")
     call s:LocalBrowse(newdir)
-    if w:netrw_longlist == 0 || w:netrw_longlist == 1
-     call search('^'.substitute(dirfile,"^.*/","","").'\>',"W")
-    else
-     call search('\<'.substitute(dirfile,"^.*/","","").'\>',"w")
-    endif
+    call search(substitute(dirfile,"^.*/","",""),"W")
     let w:netrw_explore_mtchcnt = indx + 1
     let w:netrw_explore_bufnr   = bufnr(".")
     let w:netrw_explore_line    = line(".")
-    call s:SetupNetrwStatusLine('%f %h%m%r%=%9*%{NetrwStatusLine()}')
 "    call Decho("explore: mtchcnt=".w:netrw_explore_mtchcnt." bufnr=".w:netrw_explore_bufnr." line#".w:netrw_explore_line)
 
    else
@@ -3145,73 +3078,12 @@
 endfun
 
 " ---------------------------------------------------------------------
-" SetupNetrwStatusLine: {{{2
-fun! s:SetupNetrwStatusLine(statline)
-"  call Dfunc("SetupNetrwStatusLine(statline<".a:statline.">)")
-
-  if !exists("s:netrw_setup_statline")
-   let s:netrw_setup_statline= 1
-"   call Decho("do first-time status line setup")
-
-   if !exists("s:netrw_users_stl")
-    let s:netrw_users_stl= &stl
-   endif
-   if !exists("s:netrw_users_ls")
-    let s:netrw_users_ls= &laststatus
-   endif
-
-   " set up User9 highlighting as needed
-   let keepa= @a
-   redir @a
-   try
-    hi User9
-   catch /^Vim\%((\a\+)\)\=:E411/
-    if &bg == "dark"
-     hi User9 ctermfg=yellow ctermbg=blue guifg=yellow guibg=blue
-    else
-     hi User9 ctermbg=yellow ctermfg=blue guibg=yellow guifg=blue
-    endif
-   endtry
-   redir END
-   let @a= keepa
-  endif
-
-  " set up status line (may use User9 highlighting)
-  " insure that windows have a statusline
-  " make sure statusline is displayed
-  let &stl=a:statline
-  set laststatus=2
-"  call Decho("stl=".&stl)
-  redraw!
-
-"  call Dret("SetupNetrwStatusLine : stl=".&stl)
-endfun
-
-" ---------------------------------------------------------------------
 " NetrwStatusLine: {{{2
 fun! NetrwStatusLine()
-
-  " vvv NetrwStatusLine() debugging vvv
-"  let g:stlmsg=""
-"  if !exists("w:netrw_explore_bufnr")
-"   let g:stlmsg="!X<explore_bufnr>"
-"  elseif w:netrw_explore_bufnr != bufnr(".")
-"   let g:stlmsg="explore_bufnr!=".bufnr(".")
-"  endif
-"  if !exists("w:netrw_explore_line")
-"   let g:stlmsg=" !X<explore_line>"
-"  elseif w:netrw_explore_line != line(".")
-"   let g:stlmsg=" explore_line!={line(.)<".line(".").">"
-"  endif
-"  if !exists("w:netrw_explore_list")
-"   let g:stlmsg=" !X<explore_list>"
-"  endif
-  " ^^^ NetrwStatusLine() debugging ^^^
-
+"  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
   if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
    " restore user's status line
-   let &stl        = s:netrw_users_stl
-   let &laststatus = s:netrw_users_ls
+   let &stl= s:netrw_users_stl
    if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
    if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
    return ""
@@ -3274,7 +3146,7 @@
   let ftpurm   = '^ftp://\(\([^/@]\{-}\)@\)\=\([^/#:]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
   let rcpurm   = '^rcp://\%(\([^/@]\{-}\)@\)\=\([^/]\{-}\)/\(.*\)$'
   let rcphf    = '^\(\(\h\w*\)@\)\=\(\h\w*\):\([^@]\+\)$'
-  let scpurm   = '^scp://\([^/#:]\+\)\%([#:]\(\d\+\)\)\=/\(.*\)$'
+  let scpurm   = '^scp://\([^/]\{-}\)\([#:]\d\+\)\=/\(.*\)$'
   let httpurm  = '^http://\([^/]\{-}\)\(/.*\)\=$'
   let davurm   = '^s\=dav://\([^/]\+\)/\(.*/\)\([-_.~[:alnum:]]\+\)$'
   let rsyncurm = '^rsync://\([^/]\{-}\)/\(.*\)\=$'
@@ -3418,6 +3290,11 @@
    let b:netrw_method  = -1
   endif
 
+  " surround password with double-quotes if it contains embedded blanks
+  if g:netrw_passwd !~ '^"' && g:netrw_passwd =~ ' '
+   let g:netrw_passwd= '"'.g:netrw_passwd.'"'
+  endif
+
   " remove any leading [:#] from port number
   if g:netrw_port != ""
     let g:netrw_port = substitute(g:netrw_port,'[#:]\+','','')
@@ -3464,7 +3341,6 @@
 "  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
   let g:netrw_passwd=a:2
  endif
-
 "  call Dret("NetUserPass")
 endfun
 
@@ -3486,21 +3362,20 @@
    let w:acdkeep = &autochdir
    set noautochdir
   endif
-  let w:cinkeep   = &cin
-  let w:cinokeep  = &cino
-  let w:comkeep   = &com
-  let w:cpokeep   = &cpo
+  let w:cinkeep  = &cin
+  let w:cinokeep = &cino
+  let w:comkeep  = &com
+  let w:cpokeep  = &cpo
   if !g:netrw_keepdir
-   let w:dirkeep  = getcwd()
+   let w:dirkeep = getcwd()
   endif
-  let w:gdkeep    = &gd
-  let w:repkeep   = &report
-  let w:spellkeep = &spell
-  let w:twkeep    = &tw
+  let w:gdkeep   = &gd
+  let w:repkeep  = &report
+  let w:twkeep   = &tw
   setlocal cino =
   setlocal com  =
   setlocal cpo -=aA
-  setlocal nocin noai nospell
+  setlocal nocin noai
   setlocal tw   =0
   setlocal report=10000
   if has("win32") && !has("win95")
@@ -3522,22 +3397,22 @@
   endif
   unlet w:netoptionsave
  
-  if exists("w:aikeep")| let &ai= w:aikeep|endif
-  if (has("netbeans_intg") || has("sun_workshop")) && exists("w:acdkeep")
-   let &acd= w:acdkeep
-   unlet w:acdkeep
+  let &ai	= w:aikeep
+  if has("netbeans_intg") || has("sun_workshop")
+   let &acd     = w:acdkeep
   endif
-  if exists("w:cinkeep")  |let &cin    = w:cinkeep     |unlet w:cinkeep  |endif
-  if exists("w:cinokeep") |let &cino   = w:cinokeep    |unlet w:cinokeep |endif
-  if exists("w:comkeep")  |let &com    = w:comkeep     |unlet w:comkeep  |endif
-  if exists("w:cpokeep")  |let &cpo    = w:cpokeep     |unlet w:cpokeep  |endif
-  if exists("w:dirkeep")  |exe "lcd ".w:dirkeep        |unlet w:dirkeep  |endif
-  if exists("w:gdkeep")   |let &gd     = w:gdkeep      |unlet w:gdkeep   |endif
-  if exists("w:repkeep")  |let &report = w:repkeep     |unlet w:repkeep  |endif
-  if exists("w:spellkeep")|let &spell  = w:spellkeep   |unlet w:spellkeep|endif
-  if exists("w:twkeep")   |let &tw     = w:twkeep      |unlet w:twkeep   |endif
+  let &cin	= w:cinkeep
+  let &cino	= w:cinokeep
+  let &com	= w:comkeep
+  let &cpo	= w:cpokeep
+  if exists("w:dirkeep")
+   exe "lcd ".w:dirkeep
+  endif
+  let &gd	= w:gdkeep
+  let &report   = w:repkeep
+  let &tw	= w:twkeep
   if exists("w:swfkeep")
-   if &directory == "" && exists("w:swfkeep")
+   if &directory == ""
     " user hasn't specified a swapfile directory;
     " netrw will temporarily make the swapfile
     " directory the current local one.
@@ -3549,6 +3424,17 @@
    endif
    unlet w:swfkeep
   endif
+  unlet w:aikeep
+  unlet w:cinkeep
+  unlet w:cinokeep
+  unlet w:comkeep
+  unlet w:cpokeep
+  unlet w:gdkeep
+  unlet w:repkeep
+  unlet w:twkeep
+  if exists("w:dirkeep")
+   unlet w:dirkeep
+  endif
  
 "  call Dret("NetOptionRestore")
 endfun
@@ -3560,7 +3446,7 @@
 "               example and as a fix for a Windows 95 problem: in my
 "               experience, win95's ftp always dumped four blank lines
 "               at the end of the transfer.
-if has("win95") && exists("g:netrw_win95ftp") && g:netrw_win95ftp
+if has("win95") && g:netrw_win95ftp
  fun! NetReadFixup(method, line1, line2)
 "   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
    if method == 3   " ftp (no <.netrc>)
@@ -3661,14 +3547,14 @@
     return
    endif
    if seq == '*'
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$v/^\d\{3}\//s/^/'.spriority.'/'
    else
-    exe 'silent keepjumps '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
+    exe 'keepjumps silent '.w:netrw_bannercnt.',$g/'.eseq.'/s/^/'.spriority.'/'
    endif
    let priority = priority + 1
   endwhile
 
-  exe 'silent keepjumps '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
+  exe 'keepjumps silent '.w:netrw_bannercnt.',$s/^\(\d\{3}\/\)\%(\d\{3}\/\)\+/\1/e'
 
 "  call Dret("SetSort")
 endfun
@@ -3706,14 +3592,14 @@
 endfun
 
 " ---------------------------------------------------------------------
-" SetBufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
+" BufWinVars: (used by NetBrowse() and LocalBrowse()) {{{1
 "   To allow separate windows to have their own activities, such as
 "   Explore **/pattern, several variables have been made window-oriented.
 "   However, when the user splits a browser window (ex: ctrl-w s), these
-"   variables are not inherited by the new window.  SetBufWinVars() and
+"   variables are not inherited by the new window.  BufWinVars() and
 "   UseBufWinVars() get around that.
-fun! s:SetBufWinVars()
-"  call Dfunc("SetBufWinVars()")
+fun! s:BufWinVars()
+"  call Dfunc("BufWinVars()")
   if exists("w:netrw_longlist")       |let b:netrw_longlist        = w:netrw_longlist       |endif
   if exists("w:netrw_bannercnt")      |let b:netrw_bannercnt       = w:netrw_bannercnt      |endif
   if exists("w:netrw_method")         |let b:netrw_method          = w:netrw_method         |endif
@@ -3724,7 +3610,7 @@
   if exists("w:netrw_explore_bufnr")  |let b:netrw_explore_bufnr   = w:netrw_explore_bufnr  |endif
   if exists("w:netrw_explore_line")   |let b:netrw_explore_line    = w:netrw_explore_line   |endif
   if exists("w:netrw_explore_list")   |let b:netrw_explore_list    = w:netrw_explore_list   |endif
-"  call Dret("SetBufWinVars")
+"  call Dret("BufWinVars")
 endfun
 
 " ---------------------------------------------------------------------
diff --git a/runtime/autoload/netrwSettings.vim b/runtime/autoload/netrwSettings.vim
new file mode 100644
index 0000000..368af55
--- /dev/null
+++ b/runtime/autoload/netrwSettings.vim
@@ -0,0 +1,161 @@
+" netrwSettings.vim: makes netrw settings simpler
+" Date:		Oct 12, 2005
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Version:	4
+" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+"               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,
+"               netrwSettings.vim is provided *as is* and 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.
+"
+" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
+"                synagogues, preaching the gospel of the kingdom, and healing
+"                every disease and every sickness among the people.
+" Load Once: {{{1
+if exists("g:loaded_netrwSettings") || &cp
+  finish
+endif
+let g:loaded_netrwSettings  = "v4"
+
+" ---------------------------------------------------------------------
+" NetrwSettings: {{{1
+fun! netrwSettings#NetrwSettings()
+  " this call is here largely just to insure that netrw has been loaded
+  call netrw#NetSavePosn()
+  if !exists("g:loaded_netrw")
+   echohl WarningMsg | echomsg "***sorry*** netrw needs to be loaded prior to using NetrwSettings" | echohl None
+   return
+  endif
+
+  above wincmd s
+  enew
+  setlocal noswapfile bh=wipe
+  set ft=vim
+  file Netrw\ Settings
+
+  " these variables have the following default effects when they don't
+  " exist (ie. have not been set by the user in his/her .vimrc)
+  if !exists("g:netrw_longlist")
+   let g:netrw_longlist= 0
+   let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
+  endif
+  if !exists("g:netrw_silent")
+   let g:netrw_silent= 0
+  endif
+  if !exists("g:netrw_use_nt_rcp")
+   let g:netrw_use_nt_rcp= 0
+  endif
+  if !exists("g:netrw_ftp")
+   let g:netrw_ftp= 0
+  endif
+  if !exists("g:netrw_ignorenetrc")
+   let g:netrw_ignorenetrc= 0
+  endif
+
+  put ='+ ---------------------------------------------'
+  put ='+ NetrwSettings:  (by Charles E. Campbell, Jr.)'
+  put ='+  Press ? with cursor atop any line for help  '
+  put ='+ ---------------------------------------------'
+  let s:netrw_settings_stop= line(".")
+
+  put =''
+  put ='+ Netrw Protocol Commands'
+  put = 'let g:netrw_dav_cmd           = '.g:netrw_dav_cmd
+  put = 'let g:netrw_fetch_cmd         = '.g:netrw_fetch_cmd
+  put = 'let g:netrw_ftp_cmd           = '.g:netrw_ftp_cmd
+  put = 'let g:netrw_http_cmd          = '.g:netrw_http_cmd
+  put = 'let g:netrw_rcp_cmd           = '.g:netrw_rcp_cmd
+  put = 'let g:netrw_rsync_cmd         = '.g:netrw_rsync_cmd
+  put = 'let g:netrw_scp_cmd           = '.g:netrw_scp_cmd
+  put = 'let g:netrw_sftp_cmd          = '.g:netrw_sftp_cmd
+  put = 'let g:netrw_ssh_cmd           = '.g:netrw_ssh_cmd
+  let s:netrw_protocol_stop= line(".")
+  put = ''
+
+  put ='+Netrw Transfer Control'
+  put = 'let g:netrw_cygwin            = '.g:netrw_cygwin
+  put = 'let g:netrw_ftp               = '.g:netrw_ftp
+  put = 'let g:netrw_ftpmode           = '.g:netrw_ftpmode
+  put = 'let g:netrw_ignorenetrc       = '.g:netrw_ignorenetrc
+  put = 'let g:netrw_use_nt_rcp        = '.g:netrw_use_nt_rcp
+  put = 'let g:netrw_win95ftp          = '.g:netrw_win95ftp
+  let s:netrw_xfer_stop= line(".")
+
+  put = ''
+  put ='+ Netrw Browser Control'
+  put = 'let g:netrw_alto              = '.g:netrw_alto
+  put = 'let g:netrw_altv              = '.g:netrw_altv
+  put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
+  put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
+  put = 'let g:netrw_ftp_list_cmd      = '.g:netrw_ftp_list_cmd
+  put = 'let g:netrw_hide              = '.g:netrw_hide
+  put = 'let g:netrw_keepdir           = '.g:netrw_keepdir
+  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
+  put = 'let g:netrw_list_hide         = '.g:netrw_list_hide
+  put = 'let g:netrw_local_mkdir       = '.g:netrw_local_mkdir
+  put = 'let g:netrw_local_rmdir       = '.g:netrw_local_rmdir
+  put = 'let g:netrw_longlist          = '.g:netrw_longlist
+  put = 'let g:netrw_maxfilenamelen    = '.g:netrw_maxfilenamelen
+  put = 'let g:netrw_mkdir_cmd         = '.g:netrw_mkdir_cmd
+  put = 'let g:netrw_rename_cmd        = '.g:netrw_rename_cmd
+  put = 'let g:netrw_rm_cmd            = '.g:netrw_rm_cmd
+  put = 'let g:netrw_rmdir_cmd         = '.g:netrw_rmdir_cmd
+  put = 'let g:netrw_rmf_cmd           = '.g:netrw_rmf_cmd
+  put = 'let g:netrw_silent            = '.g:netrw_silent
+  put = 'let g:netrw_sort_by           = '.g:netrw_sort_by
+  put = 'let g:netrw_sort_direction    = '.g:netrw_sort_direction
+  put = 'let g:netrw_sort_sequence     = '.g:netrw_sort_sequence
+  put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
+  put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
+  put = 'let g:netrw_winsize           = '.g:netrw_winsize
+
+  put =''
+  put ='+ For help, place cursor on line and press ?'
+
+  1d
+  silent %s/^+/"/e
+  res 99
+  silent %s/= \([^0-9].*\)$/= '\1'/e
+  silent %s/= $/= ''/e
+  1
+
+  set nomod
+
+  map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
+  let tmpfile= tempname()
+  exe 'au BufWriteCmd	Netrw\ Settings	silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwSettingHelp: {{{2
+fun! NetrwSettingHelp()
+"  call Dfunc("NetrwSettingHelp()")
+  let curline = getline(".")
+  if curline =~ '='
+   let varhelp = substitute(curline,'^\s*let ','','e')
+   let varhelp = substitute(varhelp,'\s*=.*$','','e')
+"   call Decho("trying help ".varhelp)
+   try
+    exe "he ".varhelp
+   catch /^Vim\%((\a\+)\)\=:E149/
+   	echo "***sorry*** no help available for <".varhelp.">"
+   endtry
+  elseif line(".") < s:netrw_settings_stop
+   he netrw-settings
+  elseif line(".") < s:netrw_protocol_stop
+   he netrw-externapp
+  elseif line(".") < s:netrw_xfer_stop
+   he netrw-variables
+  else
+   he netrw-browse-var
+  endif
+"  call Dret("NetrwSettingHelp")
+endfun
+
+" ---------------------------------------------------------------------
+" Modelines: {{{1
+" vim:ts=8 fdm=marker
diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim
index 0234059..66d2eb5 100644
--- a/runtime/autoload/tar.vim
+++ b/runtime/autoload/tar.vim
@@ -1,79 +1,172 @@
+" tar.vim: Handles browsing tarfiles
+"            AUTOLOAD PORTION
+" Date:			Nov 18, 2005
+" Version:		4
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" License:		Vim License  (see vim's :help license)
 "
-" tar.vim -- a Vim plugin for browsing tarfiles
-" Copyright (c) 2002, Michael C. Toren <mct@toren.net>
-" Distributed under the GNU General Public License.
+"	Contains many ideas from Michael Toren's <tar.vim>
 "
-" Version:	2
-" Date:		Sep 14, 2005
-" Modified By:	Charles E. Campbell, Jr.
-"
-" Updates are available from <http://michael.toren.net/code/>.  If you
-" find this script useful, or have suggestions for improvements, please
-" let me know.
-" Also look there for further comments and documentation.
-"
-" This part defines the functions.  The autocommands are in plugin/tar.vim.
-if exists("g:loaded_tar") || &cp
- finish
-endif
-let g:loaded_tar= "v2"
+" Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
+"               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,
+"               tarPlugin.vim is provided *as is* and 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.
 
 " ---------------------------------------------------------------------
-"  tar#Read: {{{1
-fun! tar#Read(argument, cleanup)
-"    call Dfunc("tar#Read(argument<".a:argument."> cleanup=".a:cleanup.")")
-    let l:argument = a:argument
-    let l:argument = substitute(l:argument, '^tarfile:', '', '')
-    let l:argument = substitute(l:argument, '^\~', $HOME, '')
+" Initialization: {{{1
+let s:keepcpo= &cpo
+set cpo&vim
+if exists("g:loaded_tar")
+ finish
+endif
+let g:loaded_tar= "v4"
 
-    let l:tarfile = l:argument
-    while 1
-	if (l:tarfile == "" || l:tarfile == "/")
-	    echo "***error*** (tar#Read) Could not find a readable tarfile in path:" l:argument
-"            call Dret("tar#Read")
-	    return
-	endif
+" ---------------------------------------------------------------------
+"  Default Settings: {{{1
+if !exists("g:tar_browseoptions")
+ let g:tar_browseoptions= "Ptf"
+endif
+if !exists("g:tar_readoptions")
+ let g:tar_readoptions= "OPxf"
+endif
+if !exists("g:tar_writeoptions")
+ let g:tar_writeoptions= "uf"
+endif
 
-	if filereadable(l:tarfile) " found it!
-	    break
-	endif
+" ----------------
+"  Functions: {{{1
+" ----------------
 
-	let l:tarfile = fnamemodify(l:tarfile, ":h")
-    endwhile
+" ---------------------------------------------------------------------
+" tar#Browse: {{{2
+fun! tar#Browse(tarfile)
+"  call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
 
-    let l:toextract = strpart(l:argument, strlen(l:tarfile) + 1)
+  " sanity checks
+  if !executable("tar")
+   echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+"   call Dret("tar#Browse")
+   return
+  endif
+  if !filereadable(a:tarfile)
+   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
+    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   endif
+"   call Dret("tar#Browse : file<".a:tarfile."> not readable")
+   return
+  endif
+  if &ma != 1
+   set ma
+  endif
+  let w:tarfile= a:tarfile
 
-    if (l:toextract == "")
-"        call Dret("tar#Read")
-	return
-    endif
+  setlocal noswapfile
+  setlocal buftype=nofile
+  setlocal bufhidden=hide
+  setlocal nobuflisted
+  setlocal nowrap
+  set ft=tar
 
-    let l:cat = s:TarCatCommand(l:tarfile)
-    execute "r !" . l:cat . " < '" . l:tarfile . "'"
-	\ " | tar OPxf - '" . l:toextract . "'"
+  " give 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:cleanup)
-	0d "blank line
-	execute "doautocmd BufReadPost " . expand("%")
-	setlocal nomod
-	silent preserve
-    endif
-"    call Dret("tar#Read")
+  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."'"
+  endif
+  %g@/$@d
+
+  setlocal noma nomod ro
+  noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
+
+"  call Dret("tar#Browse : w:tarfile<".w:tarfile.">")
 endfun
 
 " ---------------------------------------------------------------------
-" tar#Write: {{{1
-fun! tar#Write(argument)
-"  call Dfunc("tar#Write(argument<".a:argument.">)")
-"
+" TarBrowseSelect: {{{2
+fun! s:TarBrowseSelect()
+"  call Dfunc("TarBrowseSelect() w:tarfile<".w:tarfile."> curfile<".expand("%").">")
+  let fname= getline(".")
+"  call Decho("fname<".fname.">")
+
+  " sanity check
+  if fname =~ '^"'
+"   call Dret("TarBrowseSelect")
+   return
+  endif
+
+  " about to make a new window, need to use w:tarfile
+  let tarfile= w:tarfile
+  let curfile= expand("%")
+
+  new
+  wincmd _
+  let s:tblfile_{winnr()}= curfile
+"  call Decho("exe e tarfile:".tarfile.':'.fname)
+  exe "e tarfile:".tarfile.':'.fname
+  filetype detect
+
+"  call Dret("TarBrowseSelect : s:tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
+endfun
+
+" ---------------------------------------------------------------------
+" tar#Read: {{{2
+fun! tar#Read(fname,mode)
+"  call Dfunc("tar#Read(fname<".a:fname.">,mode=".a:mode.")")
+  let tarfile = substitute(a:fname,'tarfile:\(.\{-}\):.*$','\1','')
+  let fname   = substitute(a:fname,'tarfile:.\{-}:\(.*\)$','\1','')
+"  call Decho("tarfile<".tarfile."> fname<".fname.">")
+
+  if tarfile =~# '\.\(gz\|tgz\)$'
+"   call Decho("exe silent r! gzip -d -c '".tarfile."'| tar -OPxf - '".fname."'")
+   exe "silent r! gzip -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'"
+  elseif a:fname =~# '\.bz2$'
+"   call Decho("exe silent r! bzip2 -d -c '".tarfile."'| tar -".g:tar_readoptions." - '".fname."'")
+   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."'"
+  endif
+  let w:tarfile= a:fname
+  exe "file tarfile:".fname
+
+  " cleanup
+  0d
+  set nomod
+
+"  call Dret("tar#Read : w:tarfile<".w:tarfile.">")
+endfun
+
+" ---------------------------------------------------------------------
+" tar#Write: {{{2
+fun! tar#Write(fname)
+"  call Dfunc("tar#Write(fname<".a:fname.">) w:tarfile<".w:tarfile."> tblfile_".winnr()."<".s:tblfile_{winnr()}.">")
+
   " sanity checks
   if !executable("tar")
-   echo "***error*** (TarWrite) sorry, your system doesn't appear to have the tar pgm"
+   echohl Error | echo '***error*** (tar#Browse) "tar" not available on your system'
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("tar#Write")
    return
   endif
   if !exists("*mkdir")
-   echo "***error*** (TarWrite) sorry, mkdir() doesn't work on your system"
+   echohl Error | echo "***error*** (tar#Write) sorry, mkdir() doesn't work on your system" | echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("tar#Write")
    return
   endif
@@ -91,44 +184,104 @@
   try
    exe "cd ".escape(tmpdir,' \')
   catch /^Vim\%((\a\+)\)\=:E344/
-   echo "***error*** (TarWrite) cannot cd to temporary directory"
+   echohl Error | echo "***error*** (tar#Write) cannot cd to temporary directory" | Echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
 "   call Dret("tar#Write")
    return
   endtry
 "  call Decho("current directory now: ".getcwd())
 
-  " place temporary files under .../_TARVIM_/
-  if isdirectory("_TARVIM_")
-   call s:Rmdir("_TARVIM_")
+  " place temporary files under .../_ZIPVIM_/
+  if isdirectory("_ZIPVIM_")
+   call s:Rmdir("_ZIPVIM_")
   endif
-  call mkdir("_TARVIM_")
-  cd _TARVIM_
+  call mkdir("_ZIPVIM_")
+  cd _ZIPVIM_
 "  call Decho("current directory now: ".getcwd())
 
-  let tarfile = curdir."/".substitute(a:argument,'tarfile:\([^/]\{-}\)/.*$','\1','')
-  let path    = substitute(a:argument,'^.\{-}/','','')
-  let dirpath = substitute(path,'/\=[^/]\+$','','')
-"  call Decho("path   <".path.">")
-"  call Decho("dirpath<".dirpath.">")
-  call mkdir(dirpath,"p")
-  exe "w! ".path
-  if executable("cygpath")
-   let path    = substitute(system("cygpath ".path),'\n','','e')
-   let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
+  let tarfile = substitute(w:tarfile,'tarfile:\(.\{-}\):.*$','\1','')
+  let fname   = substitute(w:tarfile,'tarfile:.\{-}:\(.*\)$','\1','')
+
+  " handle compressed archives
+  if tarfile =~# '\.gz'
+   call system("gzip -d ".tarfile)
+   let tarfile = substitute(tarfile,'\.gz','','e')
+   let compress= "gzip '".tarfile."'"
+  elseif tarfile =~# '\.tgz'
+   call system("gzip -d ".tarfile)
+   let tarfile = substitute(tarfile,'\.tgz','.tar','e')
+   let compress= "gzip '".tarfile."'"
+   let tgz     = 1
+  elseif tarfile =~# '\.bz2'
+   call system("bzip2 -d ".tarfile)
+   let tarfile = substitute(tarfile,'\.bz2','','e')
+   let compress= "bzip2 '".tarfile."'"
   endif
 
-"  call Decho("tar --delete -f ".tarfile." ".path)
-  call system("tar --delete -f ".tarfile." ".path)
   if v:shell_error != 0
-   echo "***error*** (TarWrite) sorry, your tar pgm doesn't support deletion of ".path
+   echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
+   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
   else
-"   call Decho("tar -rf ".tarfile." ".path)
-   call system("tar -rf ".tarfile." ".path)
+
+"   call Decho("tarfile<".tarfile."> fname<".fname.">")
+ 
+   let dirpath = substitute(fname,'/[^/]\+$','','e')
+   if tarfile !~ '/'
+    let tarfile= curdir.'/'.tarfile
+   endif
+"   call Decho("tarfile<".tarfile."> fname<".fname.">")
+ 
+   call mkdir(dirpath,"p")
+   exe "w! ".fname
+   if executable("cygpath")
+    let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
+    let tarfile = substitute(system("cygpath ".tarfile),'\n','','e')
+   endif
+ 
+   " delete old file from tarfile
+"   call Decho("tar --delete -f '".tarfile."' '".fname."'")
+   call system("tar --delete -f '".tarfile."' '".fname."'")
+   if v:shell_error != 0
+    echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
+    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   else
+ 
+    " update tarfile with new file 
+"    call Decho("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
+    call system("tar -".g:tar_writeoptions." '".tarfile."' '".fname."'")
+    if v:shell_error != 0
+     echohl Error | echo "***error*** (tar#Write) sorry, unable to update ".tarfile." with ".fname | echohl None
+     call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+    elseif exists("compress")
+"     call Decho("call system(".compress.")")
+     call system(compress)
+     if exists("tgz")
+"      call Decho("rename(".tarfile.".gz,".substitute(tarfile,'\.tar$','.tgz','e').")")
+      call rename(tarfile.".gz",substitute(tarfile,'\.tar$','.tgz','e'))
+     endif
+    endif
+   endif
+
+   " support writing tarfiles across a network
+   if s:tblfile_{winnr()} =~ '^\a\+://'
+"    call Decho("handle writing <".tarfile."> across network to <".s:tblfile_{winnr()}.">")
+    let tblfile= s:tblfile_{winnr()}
+    1split|enew
+    let binkeep= &binary
+    let eikeep = &ei
+    set binary ei=all
+    exe "e! ".tarfile
+    call netrw#NetWrite(tblfile)
+    let &ei     = eikeep
+    let &binary = binkeep
+    q!
+    unlet s:tblfile_{winnr()}
+   endif
   endif
   
   " cleanup and restore current directory
   cd ..
-  call s:Rmdir("_TARVIM_")
+  call s:Rmdir("_ZIPVIM_")
   exe "cd ".escape(curdir,' \')
   setlocal nomod
 
@@ -136,91 +289,7 @@
 endfun
 
 " ---------------------------------------------------------------------
-"  tar#Browse: {{{1
-fun! tar#Browse(tarfile)
-"    call Dfunc("tar#Browse(tarfile<".a:tarfile.">)")
-    setlocal noswapfile
-    setlocal buftype=nofile
-    setlocal bufhidden=hide
-    setlocal filetype=
-    setlocal nobuflisted
-    setlocal buftype=nofile
-    setlocal wrap
-    setlocal syntax=tar
-
-    let l:tarfile = a:tarfile
-    let b:tarfile = l:tarfile
-    let l:cat = s:TarCatCommand(l:tarfile)
-
-    if ! filereadable(l:tarfile)
-	let l:tarfile = substitute(l:tarfile, '^tarfile:', '', '')
-    endif
-
-    if ! filereadable(l:tarfile)
-	echo "***error*** (tar#Browse) File not readable:" l:tarfile
-"        call Dret("tar#Browse")
-	return
-    endif
-
-    call s:Say("\" tar.vim version " . g:loaded_tar)
-    call s:Say("\" Browsing tarfile " . l:tarfile)
-    call s:Say("\" Hit ENTER to view a file in a new window")
-    call s:Say("")
-
-    silent execute "r!" . l:cat . "<'" . l:tarfile . "'| tar Ptf - "
-    0d "blank line
-    /^$/1
-
-    setlocal noma nomod ro
-
-    noremap <silent> <buffer> <cr> :call <SID>TarBrowseSelect()<cr>
-"    call Dret("tar#Browse")
-endfun
-
-" ---------------------------------------------------------------------
-"  TarBrowseSelect: {{{1
-fun! s:TarBrowseSelect()
-    let l:line = getline(".")
-
-    if (l:line =~ '^" ')
-	return
-    endif
-
-    if (l:line =~ '/$')
-	echo "Please specify a file, not a directory"
-	return
-    endif
-
-    let l:selection = "tarfile:" .  b:tarfile . "/" . l:line
-    new
-    wincmd _
-    execute "e " . l:selection
-endfun
-
-" ---------------------------------------------------------------------
-" TarCatCommand: kludge to deal with compressed archives {{{1
-fun! s:TarCatCommand(tarfile)
-"    call Dfunc("s:TarCatCommand(tarfile<".a:tarfile.">)")
-    if a:tarfile =~# '\.\(gz\|tgz\|Z\)$'
-	let l:cat = "gzip -d -c"
-    elseif a:tarfile =~# '\.bz2$'
-	let l:cat = "bzip2 -d -c"
-    else
-	let l:cat = "cat"
-    endif
-"    call Dret("s:TarCatCommand ".l:cat)
-    return l:cat
-endfun
-
-" ---------------------------------------------------------------------
-"  Say: {{{1
-fun! s:Say(string)
-    let @" = a:string
-    $ put
-endfun
-
-" ---------------------------------------------------------------------
-" Rmdir: {{{1
+" Rmdir: {{{2
 fun! s:Rmdir(fname)
 "  call Dfunc("Rmdir(fname<".a:fname.">)")
   if has("unix")
@@ -235,6 +304,8 @@
 "  call Dret("Rmdir")
 endfun
 
-" ---------------------------------------------------------------------
-"  Modelines: {{{1
-" vim:set ts=8 sts=4 sw=4 fdm=marker:
+" ------------------------------------------------------------------------
+" Modelines And Restoration: {{{1
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" vim:ts=8 fdm=marker
diff --git a/runtime/autoload/xmlcomplete.vim b/runtime/autoload/xmlcomplete.vim
new file mode 100644
index 0000000..3cd4c71
--- /dev/null
+++ b/runtime/autoload/xmlcomplete.vim
@@ -0,0 +1,428 @@
+" Vim completion script
+" Language:	XHTML 1.0 Strict
+" Maintainer:	Mikolaj Machowski ( mikmach AT wp DOT pl )
+" Last Change:	2005 Nov 22
+
+" 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 ...
+" Currently supported canonicals are:
+" xhtml10s - XHTML 1.0 Strict
+" xsl      - XSL
+function! xmlcomplete#CreateConnection(canonical, ...)
+
+	" When only one argument provided treat name as default namespace (without
+	" 'prefix:').
+	if exists("a:1")
+		let users = a:1
+	else
+		let users = 'DEFAULT'
+	endif
+
+	" Source data file. Due to suspected errors in autoload do it with
+	" :runtime. 
+	" TODO: make it properly (using autoload, that is) later
+	exe "runtime autoload/xml/".a:canonical.".vim"
+
+	" Remove all traces of unexisting files to return [] when trying
+	" omnicomplete something
+	" TODO: give warning about non-existing canonicals - should it be?
+	if !exists("g:xmldata_".a:canonical)
+		unlet! g:xmldata_connection
+		return 0
+	endif
+
+	" We need to initialize Dictionary to add key-value pair
+	if !exists("g:xmldata_connection")
+		let g:xmldata_connection = {}
+	endif
+
+	let g:xmldata_connection[users] = a:canonical
+
+endfunction
+
+function! xmlcomplete#CreateEntConnection(...)
+	if a:0 > 0
+		let g:xmldata_entconnect = a:1
+	else
+		let g:xmldata_entconnect = 'DEFAULT'
+	endif
+endfunction
+
+function! xmlcomplete#CompleteTags(findstart, base)
+  if a:findstart
+    " locate the start of the word
+    let line = getline('.')
+    let start = col('.') - 1
+	let compl_begin = col('.') - 2
+
+    while start >= 0 && line[start - 1] =~ '\(\k\|[:.-]\)'
+		let start -= 1
+    endwhile
+
+	if start >= 0 && line[start - 1] =~ '&'
+		let b:entitiescompl = 1
+		let b:compl_context = ''
+		return start
+	endif
+
+	let b:compl_context = getline('.')[0:(compl_begin)]
+	let b:compl_context = matchstr(b:compl_context, '.*<\zs.*')
+
+	" Make sure we will have only current namespace
+	unlet! b:xml_namespace
+	let b:xml_namespace = matchstr(b:compl_context, '^\k*\ze:')
+	if b:xml_namespace == ''
+		let b:xml_namespace = 'DEFAULT'
+	endif
+
+    return start
+
+  else
+	" There is no connction of namespace and data file. Abandon action
+	if !exists("g:xmldata_connection") || g:xmldata_connection == {}
+		return []
+	endif
+	" Initialize base return lists
+    let res = []
+    let res2 = []
+	" a:base is very short - we need context
+	let context = b:compl_context
+	unlet! b:compl_context
+
+	" Make entities completion
+	if exists("b:entitiescompl")
+		unlet! b:entitiescompl
+
+		if !exists("g:xmldata_entconnect") || g:xmldata_entconnect == 'DEFAULT'
+			let values =  g:xmldata{'_'.g:xmldata_connection['DEFAULT']}['vimxmlentities']
+		else
+			let values =  g:xmldata{'_'.g:xmldata_entconnect}['vimxmlentities']
+		endif
+
+		" Get only lines with entity declarations but throw out
+		" parameter-entities - they may be completed in future
+		let entdecl = filter(getline(1, "$"), 'v:val =~ "<!ENTITY\\s\\+[^%]"')
+
+		if len(entdecl) > 0
+			let intent = map(copy(entdecl), 'matchstr(v:val, "<!ENTITY\\s\\+\\zs\\(\\k\\|[.-:]\\)\\+\\ze")')
+			let values = intent + values
+		endif
+
+		for m in values
+			if m =~ '^'.a:base
+				call add(res, m.';')
+			endif
+		endfor
+
+		return res
+
+	endif
+	if context =~ '>'
+		" Generally if context contains > it means we are outside of tag and
+		" should abandon action
+		return []
+	endif
+
+    " find tags matching with "a:base"
+	" If a:base contains white space it is attribute. 
+	" It could be also value of attribute...
+	" We have to get first word to offer
+	" proper completions
+	if context == ''
+		let tag = ''
+	else
+		let tag = split(context)[0]
+	endif
+	" Get rid of namespace
+	let tag = substitute(tag, '^'.b:xml_namespace.':', '', '')
+
+
+	" Get last word, it should be attr name
+	let attr = matchstr(context, '.*\s\zs.*')
+	" Possible situations where any prediction would be difficult:
+	" 1. Events attributes
+	if context =~ '\s'
+
+		" If attr contains =\s*[\"'] we catched value of attribute
+		if attr =~ "=\s*[\"']"
+			" Let do attribute specific completion
+			let attrname = matchstr(attr, '.*\ze\s*=')
+			let entered_value = matchstr(attr, ".*=\\s*[\"']\\zs.*")
+
+			if tag =~ '^[?!]'
+				" Return nothing if we are inside of ! or ? tag
+				return []
+			else
+				let values = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][attrname]
+			endif
+
+			if len(values) == 0
+				return []
+			endif
+
+			" We need special version of sbase
+			let attrbase = matchstr(context, ".*[\"']")
+			let attrquote = matchstr(attrbase, '.$')
+
+			for m in values
+				" This if is needed to not offer all completions as-is
+				" alphabetically but sort them. Those beginning with entered
+				" part will be as first choices
+				if m =~ '^'.entered_value
+					call add(res, m . attrquote.' ')
+				elseif m =~ entered_value
+					call add(res2, m . attrquote.' ')
+				endif
+			endfor
+
+			return res + res2
+
+		endif
+
+		if tag =~ '?xml'
+			" Two possible arguments for <?xml> plus variation
+			let attrs = ['encoding', 'version="1.0"', 'version']
+		elseif tag =~ '^!'
+			" Don't make completion at all
+			return []
+		else
+			let attrs = keys(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1])
+		endif
+
+		for m in sort(attrs)
+			if m =~ '^'.attr
+				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
+					call add(res, m)
+				elseif m =~ '='
+					call add(res, m)
+				else
+					call add(res, m.'="')
+				endif
+			elseif m =~ attr
+				if tag !~ '^[?!]' && len(g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m]) > 0 && g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[tag][1][m][0] =~ '^BOOL$'
+					call add(res, m)
+				elseif m =~ '='
+					call add(res, m)
+				else
+					call add(res2, m.'="')
+				endif
+			endif
+		endfor
+
+		return res + res2
+
+	endif
+	" Close tag
+	let b:unaryTagsStack = "base meta link hr br param img area input col"
+	if context =~ '^\/'
+		let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+		return [opentag.">"]
+	endif
+
+	" Complete elements of XML structure
+	" TODO: #REQUIRED, #IMPLIED, #FIXED, #PCDATA - but these should be detected like
+	" entities - in first run
+	" keywords: CDATA, ID, IDREF, IDREFS, ENTITY, ENTITIES, NMTOKEN, NMTOKENS
+	" are hardly recognizable but keep it in reserve
+	" also: EMPTY ANY SYSTEM PUBLIC DATA
+	if context =~ '^!'
+		let tags = ['!ELEMENT', '!DOCTYPE', '!ATTLIST', '!ENTITY', '!NOTATION', '![CDATA[', '![INCLUDE[', '![IGNORE[']
+
+		for m in tags
+			if m =~ '^'.context
+				let m = substitute(m, '^!\[\?', '', '')
+				call add(res, m)
+			elseif m =~ context
+				let m = substitute(m, '^!\[\?', '', '')
+				call add(res2, m)
+			endif
+		endfor
+
+		return res + res2
+
+	endif
+
+	" Complete text declaration
+	let g:co = context
+	if context =~ '^?'
+		let tags = ['?xml']
+
+		for m in tags
+			if m =~ '^'.context
+				call add(res, substitute(m, '^?', '', ''))
+			elseif m =~ context
+				call add(res, substitute(m, '^?', '', ''))
+			endif
+		endfor
+
+		return res + res2
+
+	endif
+
+	" Deal with tag completion.
+	let opentag = xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+	let opentag = substitute(opentag, '^\k*:', '', '')
+
+	let tags = g:xmldata{'_'.g:xmldata_connection[b:xml_namespace]}[opentag][0]
+	let context = substitute(context, '^\k*:', '', '')
+
+	if b:xml_namespace == 'DEFAULT'
+		let b:xml_namespace = ''
+	else
+		let b:xml_namespace .= ':'
+	endif
+
+	for m in tags
+		if m =~ '^'.context
+			call add(res, b:xml_namespace.m)
+		elseif m =~ context
+			call add(res2, b:xml_namespace.m)
+		endif
+	endfor
+
+	return res + res2
+
+  endif
+endfunction
+
+" MM: This is greatly reduced closetag.vim used with kind permission of Steven
+"     Mueller
+"     Changes: strip all comments; delete error messages; add checking for
+"     namespace
+" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
+" Last Modified: Tue May 24 13:29:48 PDT 2005 
+" Version: 0.9.1
+
+function! xmlcomplete#GetLastOpenTag(unaryTagsStack)
+	let linenum=line('.')
+	let lineend=col('.') - 1 " start: cursor position
+	let first=1              " flag for first line searched
+	let b:TagStack=''        " main stack of tags
+	let startInComment=s:InComment()
+
+	if exists("b:xml_namespace")
+		if b:xml_namespace == 'DEFAULT'
+			let tagpat='</\=\(\k\|[.-]\)\+\|/>'
+		else
+			let tagpat='</\='.b:xml_namespace.':\(\k\|[.-]\)\+\|/>'
+		endif
+	else
+		let tagpat='</\=\(\k\|[.-:]\)\+\|/>'
+	endif
+	while (linenum>0)
+		let line=getline(linenum)
+		if first
+			let line=strpart(line,0,lineend)
+		else
+			let lineend=strlen(line)
+		endif
+		let b:lineTagStack=''
+		let mpos=0
+		let b:TagCol=0
+		while (mpos > -1)
+			let mpos=matchend(line,tagpat)
+			if mpos > -1
+				let b:TagCol=b:TagCol+mpos
+				let tag=matchstr(line,tagpat)
+
+				if exists('b:closetag_disable_synID') || startInComment==s:InCommentAt(linenum, b:TagCol)
+					let b:TagLine=linenum
+					call s:Push(matchstr(tag,'[^<>]\+'),'b:lineTagStack')
+				endif
+				let lineend=lineend-mpos
+				let line=strpart(line,mpos,lineend)
+			endif
+		endwhile
+		while (!s:EmptystackP('b:lineTagStack'))
+			let tag=s:Pop('b:lineTagStack')
+			if match(tag, '^/') == 0		"found end tag
+				call s:Push(tag,'b:TagStack')
+			elseif s:EmptystackP('b:TagStack') && !s:Instack(tag, a:unaryTagsStack)	"found unclosed tag
+				return tag
+			else
+				let endtag=s:Peekstack('b:TagStack')
+				if endtag == '/'.tag || endtag == '/'
+					call s:Pop('b:TagStack')	"found a open/close tag pair
+				elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
+					return ''
+				endif
+			endif
+		endwhile
+		let linenum=linenum-1 | let first=0
+	endwhile
+return ''
+endfunction
+
+function! s:InComment()
+	return synIDattr(synID(line('.'), col('.'), 0), 'name') =~ 'Comment'
+endfunction
+
+function! s:InCommentAt(line, col)
+	return synIDattr(synID(a:line, a:col, 0), 'name') =~ 'Comment'
+endfunction
+
+function! s:SetKeywords()
+	let g:IsKeywordBak=&iskeyword
+	let &iskeyword='33-255'
+endfunction
+
+function! s:RestoreKeywords()
+	let &iskeyword=g:IsKeywordBak
+endfunction
+
+function! s:Push(el, sname)
+	if !s:EmptystackP(a:sname)
+		exe 'let '.a:sname."=a:el.' '.".a:sname
+	else
+		exe 'let '.a:sname.'=a:el'
+	endif
+endfunction
+
+function! s:EmptystackP(sname)
+	exe 'let stack='.a:sname
+	if match(stack,'^ *$') == 0
+		return 1
+	else
+		return 0
+	endif
+endfunction
+
+function! s:Instack(el, sname)
+	exe 'let stack='.a:sname
+	call s:SetKeywords()
+	let m=match(stack, '\<'.a:el.'\>')
+	call s:RestoreKeywords()
+	if m < 0
+		return 0
+	else
+		return 1
+	endif
+endfunction
+
+function! s:Peekstack(sname)
+	call s:SetKeywords()
+	exe 'let stack='.a:sname
+	let top=matchstr(stack, '\<.\{-1,}\>')
+	call s:RestoreKeywords()
+	return top
+endfunction
+
+function! s:Pop(sname)
+	if s:EmptystackP(a:sname)
+		return ''
+	endif
+	exe 'let stack='.a:sname
+	call s:SetKeywords()
+	let loc=matchend(stack,'\<.\{-1,}\>')
+	exe 'let '.a:sname.'=strpart(stack, loc+1, strlen(stack))'
+	let top=strpart(stack, match(stack, '\<'), loc)
+	call s:RestoreKeywords()
+	return top
+endfunction
+
+function! s:Clearstack(sname)
+	exe 'let '.a:sname."=''"
+endfunction
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index 751b1a1..50a6002 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
 " zip.vim: Handles browsing zipfiles
 "            AUTOLOAD PORTION
-" Date:			Sep 16, 2005
-" Version:		2
+" Date:			Nov 14, 2005
+" Version:		4
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " License:		Vim License  (see vim's :help license)
 " Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,7 @@
  finish
 endif
 
-let g:loaded_zip= "v2"
+let g:loaded_zip= "v4"
 
 " ----------------
 "  Functions: {{{1
@@ -41,9 +41,12 @@
    return
   endif
   if !filereadable(a:zipfile)
-   echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
-   call inputsave()|call input("Press <cr> to continue")|call inputrestore()
-"   call Dret("zip#Browse")
+   if a:zipfile !~# '^\a\+://'
+    " if its an url, don't complain, let url-handlers such as vim do its thing
+    echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
+    call inputsave()|call input("Press <cr> to continue")|call inputrestore()
+   endif
+"   call Dret("zip#Browse : file<".a:zipfile."> not readable")
    return
   endif
   if &ma != 1
@@ -80,7 +83,7 @@
 " ---------------------------------------------------------------------
 " ZipBrowseSelect: {{{2
 fun! s:ZipBrowseSelect()
-"  call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile.">")
+"  call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile."> curfile<".expand("%").">")
   let fname= getline(".")
 
   " sanity check
@@ -99,13 +102,15 @@
 
   " get zipfile to the new-window
   let zipfile= substitute(w:zipfile,'.zip$','','e')
+  let curfile= expand("%")
 
   new
   wincmd _
+  let s:zipfile_{winnr()}= curfile
   exe "e zipfile:".zipfile.':'.fname
   filetype detect
 
-"  call Dret("ZipBrowseSelect")
+"  call Dret("ZipBrowseSelect : s:zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
 endfun
 
 " ---------------------------------------------------------------------
@@ -128,7 +133,7 @@
 " ---------------------------------------------------------------------
 " zip#Write: {{{2
 fun! zip#Write(fname)
-"  call Dfunc("zip#Write(fname<".a:fname.")")
+"  call Dfunc("zip#Write(fname<".a:fname.") zipfile_".winnr()."<".s:zipfile_{winnr()}.">")
 
   " sanity checks
   if !executable("zip")
@@ -192,6 +197,21 @@
   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()
+
+  elseif s:zipfile_{winnr()} =~ '^\a\+://'
+   " support writing zipfiles across a network
+   let netzipfile= s:zipfile_{winnr()}
+"   call Decho("handle writing <".zipfile.".zip> across network as <".netzipfile.">")
+   1split|enew
+   let binkeep= &binary
+   let eikeep = &ei
+   set binary ei=all
+   exe "e! ".zipfile.".zip"
+   call netrw#NetWrite(netzipfile)
+   let &ei     = eikeep
+   let &binary = binkeep
+   q!
+   unlet s:zipfile_{winnr()}
   endif
   
   " cleanup and restore current directory
diff --git a/runtime/compiler/eruby.vim b/runtime/compiler/eruby.vim
index 77292bc..474dafe 100644
--- a/runtime/compiler/eruby.vim
+++ b/runtime/compiler/eruby.vim
@@ -2,14 +2,8 @@
 " Language:	eRuby
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 
 if exists("current_compiler")
diff --git a/runtime/compiler/fpc.vim b/runtime/compiler/fpc.vim
new file mode 100644
index 0000000..fb4f424
--- /dev/null
+++ b/runtime/compiler/fpc.vim
@@ -0,0 +1,17 @@
+" Vim compiler file
+" Compiler:     FPC 2.1
+" Maintainer:   Jaroslaw Blasiok <jaro3000@o2.pl>
+" Last Change:  2005 October 07
+
+if exists("current_compiler")
+  finish
+endif
+let current_compiler = "fpc"
+
+if exists(":CompilerSet") != 2		" older Vim always used :setlocal
+  command -nargs=* CompilerSet setlocal <args>
+endif
+
+" NOTE: compiler must be runned with -vb to write whole source path, not only file
+" name.
+CompilerSet errorformat=%f(%l\\,%c)\ %m
diff --git a/runtime/compiler/hp_acc.vim b/runtime/compiler/hp_acc.vim
index eaf61b2..685bd5b 100644
--- a/runtime/compiler/hp_acc.vim
+++ b/runtime/compiler/hp_acc.vim
@@ -1,8 +1,8 @@
 " Vim compiler file
 " Compiler:	HP aCC
 " Maintainer:	Matthias Ulrich <matthias-ulrich@web.de>
-" URL:		http://www.subhome.de/vim/hp_acc.vim
-" Last Change:	2004 Mar 27
+" URL:          http://www.subhome.de/vim/hp_acc.vim
+" Last Change:	2005 Nov 19
 "
 "  aCC --version says: "HP ANSI C++ B3910B A.03.13"
 "  This compiler has been tested on:
@@ -10,6 +10,10 @@
 "
 "  Tim Brown's aCC is: "HP ANSI C++ B3910B A.03.33"
 "  and it also works fine...
+"  
+"  Now suggestions by aCC are supported (compile flag aCC +w).
+"  Thanks to Tim Brown again!!
+"  
 
 if exists("current_compiler")
   finish
@@ -21,6 +25,7 @@
 endif
 
 CompilerSet errorformat=%A%trror\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m,
+         \%A%tarning\ (suggestion)\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
          \%A%tarning\ %n\:\ \"%f\"\\,\ line\ %l\ \#\ %m\ %#,
          \%Z\ \ \ \ %p^%.%#,
          \%-C%.%#
diff --git a/runtime/compiler/ruby.vim b/runtime/compiler/ruby.vim
index 88b683f..d34b37e 100644
--- a/runtime/compiler/ruby.vim
+++ b/runtime/compiler/ruby.vim
@@ -5,12 +5,6 @@
 " Info:		$Id$
 " URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 "
 " Changelog:
diff --git a/runtime/compiler/rubyunit.vim b/runtime/compiler/rubyunit.vim
index ba5ddf4..9111178 100644
--- a/runtime/compiler/rubyunit.vim
+++ b/runtime/compiler/rubyunit.vim
@@ -2,14 +2,8 @@
 " Language:	Test::Unit - Ruby Unit Testing Framework
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 
 if exists("current_compiler")
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index e2ca67a..390afad 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 10
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2005 Nov 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -812,6 +812,10 @@
 			autocommands for that group.  Note: if you use an
 			undefined group name, Vim gives you an error message.
 
+			After applying the autocommands the modelines are
+			processed, so that their overrule the settings from
+			autocommands, like what happens when editing a file.
+
 						*:doautoa* *:doautoall*
 :doautoa[ll] [group] {event} [fname]
 			Like ":doautocmd", but apply the autocommands to each
diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt
index 1ea512e..ec354ec 100644
--- a/runtime/doc/cmdline.txt
+++ b/runtime/doc/cmdline.txt
@@ -1,4 +1,4 @@
-*cmdline.txt*   For Vim version 7.0aa.  Last change: 2005 Sep 17
+*cmdline.txt*   For Vim version 7.0aa.  Last change: 2005 Nov 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -562,7 +562,7 @@
 			"name"
 
 ==============================================================================
-4. Ex command-line ranges	*cmdline-ranges* *[range]* *E16* *E493*
+4. Ex command-line ranges	*cmdline-ranges* *[range]* *E16*
 
 Some Ex commands accept a line range in front of them.  This is noted as
 [range].  It consists of one or more line specifiers, separated with ',' or
@@ -648,11 +648,15 @@
 closed fold.  See |fold-behavior|.
 
 
-Reverse Range
+Reverse Range						*E493*
 
 A range should have the lower line number first.  If this is not the case, Vim
-will ask you if it should swap the line numbers.  This is not done within the
-global command ":g".
+will ask you if it should swap the line numbers. 
+	Backwards range given, OK to swap ~
+This is not done within the global command ":g".
+
+You can use ":silent" before a command to avoid the question, the range will
+always be swapped then.
 
 
 Count and Range						*N:*
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index cb7ed6e..adcf451 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Oct 12
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Nov 20
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -5050,6 +5050,9 @@
 
 	:let l = foo#bar#lvar
 
+However, when the autoload script was already loaded it won't be loaded again
+for an unknown variable.
+
 When assigning a value to such a variable nothing special happens.  This can
 be used to pass settings to the autoload script before it's loaded: >
 
diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt
index ef0763d..6e0a3e4 100644
--- a/runtime/doc/if_perl.txt
+++ b/runtime/doc/if_perl.txt
@@ -1,4 +1,4 @@
-*if_perl.txt*   For Vim version 7.0aa.  Last change: 2005 Mar 29
+*if_perl.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Sven Verdoolaege
@@ -9,6 +9,7 @@
 1. Editing Perl files			|perl-editing|
 2. Compiling VIM with Perl interface	|perl-compiling|
 3. Using the Perl interface		|perl-using|
+4. Dynamic loading			|perl-dynamic|
 
 {Vi does not have any of these commands}
 
@@ -259,4 +260,22 @@
     endif
 Note that "EOF" must be at the start of the line.
 
+==============================================================================
+4. Dynamic loading					*perl-dynamic*
+
+On MS-Windows the Perl library can be loaded dynamically.  The |:version|
+output then includes |+perl/dyn|.
+
+This means that Vim will search for the Perl DLL file only when needed.  When
+you don't use the Perl interface you don't need it, thus you can use Vim
+without this DLL file.
+
+To use the Perl interface the Perl DLL must be in your search path.  In a
+console window type "path" to see what directories are used.
+
+The name of the DLL must match the Perl version Vim was compiled with.
+Currently the name is "perl58.dll".  That is for Perl 5.8.  To know for
+sure edit "gvim.exe" and search for "perl\d*.dll\c".
+
+==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt
index 1a2a33d..3ceeff8 100644
--- a/runtime/doc/if_pyth.txt
+++ b/runtime/doc/if_pyth.txt
@@ -1,4 +1,4 @@
-*if_pyth.txt*   For Vim version 7.0aa.  Last change: 2005 Mar 29
+*if_pyth.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Paul Moore
@@ -11,6 +11,7 @@
 3. Buffer objects		|python-buffer|
 4. Range objects		|python-range|
 5. Window objects		|python-window|
+6. Dynamic loading		|python-dynamic|
 
 {Vi does not have any of these commands}
 
@@ -300,4 +301,21 @@
 The width attribute is writable only if the screen is split vertically.
 
 ==============================================================================
+6. Dynamic loading					*python-dynamic*
+
+On MS-Windows the Python library can be loaded dynamically.  The |:version|
+output then includes |+python/dyn|.
+
+This means that Vim will search for the Python DLL file only when needed.
+When you don't use the Python interface you don't need it, thus you can use
+Vim without this DLL file.
+
+To use the Python interface the Python DLL must be in your search path.  In a
+console window type "path" to see what directories are used.
+
+The name of the DLL must match the Python version Vim was compiled with.
+Currently the name is "python24.dll".  That is for Python 2.4.  To know for
+sure edit "gvim.exe" and search for "python\d*.dll\c".
+
+==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index 1efb6ce..a70d32a 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -1,4 +1,4 @@
-*if_ruby.txt*   For Vim version 7.0aa.  Last change: 2005 Aug 31
+*if_ruby.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Shugo Maeda
@@ -11,6 +11,7 @@
 3. VIM::Buffer objects		|ruby-buffer|
 4. VIM::Window objects		|ruby-window|
 5. Global variables		|ruby-globals|
+6. Dynamic loading		|ruby-dynamic|
 
 {Vi does not have any of these commands}
 			*E266* *E267* *E268* *E269* *E270* *E271* *E272* *E273*
@@ -166,7 +167,7 @@
 		Sets the cursor position to {row} and {col}.
 
 ==============================================================================
-4. Global variables					*ruby-globals*
+5. Global variables					*ruby-globals*
 
 There are two global variables.
 
@@ -174,4 +175,21 @@
 $curbuf		The current buffer object.
 
 ==============================================================================
+6. Dynamic loading					*ruby-dynamic*
+
+On MS-Windows the Ruby library can be loaded dynamically.  The |:version|
+output then includes |+ruby/dyn|.
+
+This means that Vim will search for the Ruby DLL file only when needed.  When
+you don't use the Ruby interface you don't need it, thus you can use Vim
+without this DLL file.
+
+To use the Ruby interface the Ruby DLL must be in your search path.  In a
+console window type "path" to see what directories are used.
+
+The name of the DLL must match the Ruby version Vim was compiled with.
+Currently the name is "ruby18.dll".  That is for Ruby 1.8.  To know for sure
+edit "gvim.exe" and search for "ruby\d*.dll\c".
+
+==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt
index 1195ed5..79c43f5 100644
--- a/runtime/doc/if_tcl.txt
+++ b/runtime/doc/if_tcl.txt
@@ -1,4 +1,4 @@
-*if_tcl.txt*    For Vim version 7.0aa.  Last change: 2005 Mar 29
+*if_tcl.txt*    For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Ingo Wilken
@@ -14,6 +14,7 @@
 6. Miscellaneous; Output from Tcl	|tcl-misc| |tcl-output|
 7. Known bugs & problems		|tcl-bugs|
 8. Examples				|tcl-examples|
+9. Dynamic loading			|tcl-dynamic|
 
 {Vi does not have any of these commands} *E280* *E281*
 
@@ -509,4 +510,21 @@
 	endif
 
 ==============================================================================
+9. Dynamic loading					*tcl-dynamic*
+
+On MS-Windows the Tcl library can be loaded dynamically.  The |:version|
+output then includes |+tcl/dyn|.
+
+This means that Vim will search for the Tcl DLL file only when needed.  When
+you don't use the Tcl interface you don't need it, thus you can use Vim
+without this DLL file.
+
+To use the Tcl interface the Tcl DLL must be in your search path.  In a
+console window type "path" to see what directories are used.
+
+The name of the DLL must match the Tcl version Vim was compiled with.
+Currently the name is "tcl83.dll".  That is for Tcl 8.3.  To know for sure
+edit "gvim.exe" and search for "tcl\d*.dll\c".
+
+==============================================================================
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt
index 4b6d0eb..9d8e4e6 100644
--- a/runtime/doc/insert.txt
+++ b/runtime/doc/insert.txt
@@ -1,4 +1,4 @@
-*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Oct 02
+*insert.txt*    For Vim version 7.0aa.  Last change: 2005 Nov 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -975,6 +975,7 @@
 
 Filetype-specific remarks for omni completion	    *compl-omni-filetypes*
 
+
 C							*ft-c-omni*
 
 Completion of C code requires a tags file.  You should use Exuberant ctags,
@@ -1007,7 +1008,14 @@
 are included.
 
 
+CSS                                                     *ft-css-omni*
+
+Complete properties and their appropriate values according to CSS 2.1
+specification. 
+
+
 (X)HTML                          			*ft-html-omni*
+                                 			*ft-xhtml-omni*
 
 CTRL-X CTRL-O provides completion of various elements of (X)HTML files.
 It is designed to support writing of XHTML 1.0 Strict files but will
@@ -1019,23 +1027,124 @@
   a tag)
 - when attribute has limited number of possible values help to complete
   them
+- complete names of entities
 - complete values of "class" and "id" attributes with data obtained from
   style tag and included CSS files
 - when completing "style" attribute or working inside of "style" tag
   switch to |ft-css-omni| completion
 - when used after "</" CTRL-X CTRL-O will close the last opened tag
 
-File htmlcomplete.vim provides through |autoload| mechanism
+Note: When used first time completion menu will be shown with little delay
+- this is time needed for loading of data file.
+
+
+XML                                                     *ft-xml-omni*
+
+Vim 7 provides mechanism to context aware completion of XML files. It depends
+on special |xml-data-file| and two commands: |:XMLns| and |:XMLent|. Features
+are:
+
+- after "<" complete tag name depending on context (no div suggest
+  inside of an a tag)
+- inside of tag complete proper attributes (no width attribute for an
+  a tag)
+- when attribute has limited number of possible values help to complete
+  them
+- complete names of entities (defined in |xml-data-file| and in current file
+  with "<!ENTITY" declarations
+- when used after "</" CTRL-X CTRL-O will close the last opened tag
+
+Format of XML data file                                 *xml-omni-datafile*
+
+Vim distribution provides two data files as examples (xhtml10s.vim, xsl.vim)
+
+XML data files are stored in "autoload/xml" directory in 'runtimepath'. They
+have meaningful name which will be used in commands. It should be unique name
+which will not create conflicts in future. For example name xhtml10s.vim means
+it is data file for XHTML 1.0 Strict.
+
+File contains one variable with fixed name: g:xmldata_xhtml10s . It is
+compound from two parts: 
+
+1. "g:xmldata_"  general prefix 
+2. "xhtml10s"    name of file and name of described XML dialect
+
+Part two must be exactly the same as name of file.
+
+Variable is data structure in form of |Dictionary|. Keys are tag names and
+values are two element |List|. First element of List is also List with
+names of possible children, second element is |Dictionary| with names of
+attributes as keys and possible values of attributes as values. Example: >
+
+    let g:xmldata_crippledhtml = {
+    \ "html": 
+    \ [ ["body", "head"], {"id": [], "xmlns": ["http://www.w3.org/1999/xhtml"], 
+    \ "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}], 
+    \ "script": 
+    \ [ [], {"id": [], "charset": [], "type": ["text/javascript"], "src": [], 
+    \ "defer": ["BOOL"], "xml:space": ["preserve"]}],
+    \ "meta": 
+    \ [ [], {"id": [], "http-equiv": [], "name": [], "content": [], "scheme": 
+    \ [], "lang": [], "xml:lang": [], "dir": ["ltr", "rtl"]}]
+    \ "vimxmlentities": ["amp", "lt", "gt", "apos", "quot"]}
+
+This example should be put in "autoload/xml/crippledhtml.vim" file.
+
+In example are visible two special elements:
+
+1. "vimxmlentities" - special key with List containing entities of this XML
+   dialect.
+2. "BOOL" - value of attribute key showing if attribute should be inserted
+   bare ("defer" vs. 'defer="'). It can be the only element of List of
+   attribute values.
+
+Note: Tag names in data file MUST not contain namespace description. Check
+xsl.vim for example.
+
+Commands
+
+:XMLns {name} [{namespace}]                                  *:XMLns*
+
+Vim has to know which data file should be used and with which namespace. For
+loading of data file and connecting data with prope namespace use |:XMLns|
+command. First (obligatory) argument is name of data (xhtml10s, xsl). Second
+argument is code of namespace (h, xsl). When used without second argument
+dialect will be used as default - without namespace declaration. For example
+to use XML completion in .xsl files: >
+
+	:XMLns xhtml10s
+	:XMLns xsl xsl
+
+
+:XMLent {name}                                               *:XMLent*
+
+By default entities will be completed from data file of default
+namespace. XMLent command should be used in case when there is no
+default namespace: >
+
+        :XMLent xhtml10s
+
+Usage
+
+While used in situation (after declarations from previous part, | is
+cursor position): >
+
+        <|
+
+Will complete to appropriate XHTML tag, and in this situation: >
+
+        <xsl:|
+
+Will complete to appropriate XSL tag.
+
+File xmlcomplete.vim provides through |autoload| mechanism
 GetLastOpenTag function which can be used in XML files to get name of
 last open tag with (b:unaryTagsStack has to be defined): >
 
-        :echo htmlcomplete#GetLastOpenTag("b:unaryTagsStack")
+        :echo xmlcomplete#GetLastOpenTag("b:unaryTagsStack")
 
 
-CSS                                                     *ft-css-omni*
 
-Complete properties and their appropriate values according to CSS 2.1
-specification. 
 
 
 ==============================================================================
diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt
index 618c767..a5f6d0c 100644
--- a/runtime/doc/map.txt
+++ b/runtime/doc/map.txt
@@ -1,4 +1,4 @@
-*map.txt*       For Vim version 7.0aa.  Last change: 2005 Sep 22
+*map.txt*       For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -966,8 +966,10 @@
 	-complete=custom,{func} custom completion, defined via {func}
 	-complete=customlist,{func} custom completion, defined via {func}
 
-Custom completion			    *:command-completion-custom*
-							*E467* *E468*
+
+Custom completion			*:command-completion-custom*
+					*:command-completion-customlist*
+					*E467* *E468*
 It is possible to define customized completion schemes via the "custom,{func}"
 or the "customlist,{func}" completion argument.  The {func} part should be a
 function with the following prototype >
@@ -981,13 +983,13 @@
 candidates one per line in a newline separated string.
 
 For the "customlist" argument, the function should return the completion
-candidates as a Vim List. Non-string items in the list are ignored.
+candidates as a Vim List.  Non-string items in the list are ignored.
 
 The function arguments are:
 	ArgLead		the leading portion of the argument currently being
 			completed on
 	CmdLine		the entire command line
-	CursorPos	the cursor position in it
+	CursorPos	the cursor position in it (byte index)
 The function may use these for determining context.  For the "custom"
 argument, it is not necessary to filter candidates against the (implicit
 pattern in) ArgLead.  Vim will do filter the candidates with its regexp engine
@@ -1009,6 +1011,7 @@
     :    return split(globpath(&path, a:ArgLead), "\n")
     :endfun
 <
+
 Range handling						*E177* *E178*
 
 By default, user-defined commands do not accept a line number range.  However,
diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt
index 7f6a972..ead91ab 100644
--- a/runtime/doc/mbyte.txt
+++ b/runtime/doc/mbyte.txt
@@ -1,4 +1,4 @@
-*mbyte.txt*     For Vim version 7.0aa.  Last change: 2005 Jul 09
+*mbyte.txt*     For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar et al.
@@ -484,6 +484,12 @@
 	request a very large buffer, more than Vim is willing to provide).
 	Try getting another iconv() implementation.
 
+							*iconv-dynamic*
+On MS-Windows Vim can be compiled with the |+iconv/dyn| feature.  This means
+Vim will search for the "iconv.dll" and "libiconv.dll" libraries.  When
+neither of them can be found Vim will still work but some conversions won't be
+possible.
+
 ==============================================================================
 4. Using a terminal					*mbyte-terminal*
 
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index fcbd445..0631d45 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Oct 05
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Nov 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -76,10 +76,8 @@
 			comma separated list, a comma is added, unless the
 			value was empty.
 			If the option is a list of flags, superfluous flags
-			are removed.  Otherwise there is no check for doubled
-			values.  You can avoid this by removing a value first.
-			Example: >
-				:set guioptions-=T guioptions+=T
+			are removed.  When adding a flag that was already
+			present the option value doesn't change.
 <			Also see |:set-args| above.
 			{not in Vi}
 
@@ -988,6 +986,9 @@
 	Watch out for special characters, see |option-backslash|.
 	When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
 	default value.  "/tmp/*" is only used for Unix.
+	Note that the default also makes sure that "crontab -e" works (when a
+	backup would be made by renaming the original file crontab won't see
+	the newly created file).  Also see 'backupcopy' and |crontab|.
 
 						*'balloondelay'* *'bdlay'*
 'balloondelay' 'bdlay'	number	(default: 600)
@@ -2927,10 +2928,11 @@
 	The name of an external program that will be used to format the lines
 	selected with the "gq" command.  The program must take the input on
 	stdin and produce the output on stdout.  The Unix program "fmt" is
-	such a program.  If this option is an empty string, the internal
-	format function will be used |C-indenting|.  Environment variables are
-	expanded |:set_env|.  See |option-backslash| about including spaces
-	and backslashes.
+	such a program.
+	If this option is an empty string, the internal format function will
+	be used |C-indenting|.
+	Environment variables are expanded |:set_env|.  See |option-backslash|
+	about including spaces and backslashes.
 	This option cannot be set from a |modeline| or in the |sandbox|, for
 	security reasons.
 
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 5bce52c..850dccb 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -1,8 +1,8 @@
-*pi_netrw.txt*  For Vim version 7.0.  Last change: Oct 03, 2005
+*pi_netrw.txt*  For Vim version 7.0.  Last change: Aug 31, 2005
+
 
 		VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
 
-
 *dav*           *http*          *network*       *rcp*           *scp*
 *fetch*         *netrw*         *Nread*         *rsync*         *sftp*
 *ftp*           *netrw.vim*     *Nwrite*        *netrw-file*
@@ -25,7 +25,7 @@
 4.  Transparent File Transfer............................|netrw-transparent|
 5.  Ex Commands..........................................|netrw-ex|
 6.  Variables and Options................................|netrw-var|
-7.  Directory Browsing...................................|netrw-browse| {{{1
+7.  Directory Browser....................................|netrw-browse| {{{1
       Maps...............................................|netrw-maps|
       Exploring..........................................|netrw-explore-cmds|
       Quick Reference Commands Table.....................|netrw-browse-cmds|
@@ -194,8 +194,8 @@
 2. Network-Oriented File Transfer				*netrw-xfer*
 
 Network-oriented file transfer under Vim is implemented by a VimL-based script
-(<netrw.vim>) using plugin techniques.  It currently supports both reading and
-writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
+(<netrw.vim>) using plugin techniques.  It currently supports both reading
+and writing across networks using rcp, scp, ftp or ftp+<.netrc>, scp, fetch,
 dav/cadaver, rsync, or sftp.
 
 http is currently supported read-only via use of wget or fetch.
@@ -206,23 +206,24 @@
 
 	ex. vim ftp://hostname/path/to/file
 <
-The characters preceding the colon specify the protocol to use; in the
-example, its ftp.  The <netrw.vim> script then formulates a command or a
-series of commands (typically ftp) which it issues to an external program
-(ftp, scp, etc) which does the actual file transfer/protocol.  Files are read
-from/written to a temporary file (under Unix/Linux, /tmp/...) which the
-<netrw.vim> script will clean up.
+The characters preceding the colon specify the protocol to use;
+in the example, its ftp.  The <netrw.vim> script then formulates
+a command or a series of commands (typically ftp) which it issues
+to an external program (ftp, scp, etc) which does the actual file
+transfer/protocol.  Files are read from/written to a temporary file
+(under Unix/Linux, /tmp/...) which the <netrw.vim> script will
+clean up.
 
-One may modify any protocol's implementing external application by setting a
-variable (ex. scp uses the variable g:netrw_scp_cmd, which is defaulted to
-"scp -q").
+One may modify any protocol's implementing external application
+by setting a variable (ex. scp uses the variable g:netrw_scp_cmd,
+which is defaulted to "scp -q").
 
 Ftp, an old protocol, seems to be blessed by numerous implementations.
-Unfortunately, some implementations are noisy (ie., add junk to the end of the
-file).  Thus, concerned users may decide to write a NetReadFixup() function
-that will clean up after reading with their ftp.  Some Unix systems (ie.,
-FreeBSD) provide a utility called "fetch" which uses the ftp protocol but is
-not noisy and more convenient, actually, for <netrw.vim> to use.
+Unfortunately, some implementations are noisy (ie., add junk to the end
+of the file).  Thus, concerned users may decide to write a NetReadFixup()
+function that will clean up after reading with their ftp.  Some Unix systems
+(ie., FreeBSD) provide a utility called "fetch" which uses the ftp protocol
+but is not noisy and more convenient, actually, for <netrw.vim> to use.
 Consequently, if "fetch" is executable, it will be used to do reads for
 ftp://... (and http://...) .  See |netrw-var| for more about this.
 
@@ -331,9 +332,8 @@
 a built-in Vim function.  See |netrw-uidpass| for how to change the password
 after one has set it.
 
-Unfortunately there doesn't appear to be a way for netrw to feed a password to
-scp.  Thus every transfer via scp will require re-entry of the password.
-However, |netrw-listhack| can help with this problem.
+Unfortunately there doesn't appear to be a way for netrw to feed a password
+to scp.  Thus every transfer via scp will require re-entry of the password.
 
 
 ==============================================================================
@@ -341,28 +341,21 @@
 
 Network-oriented file transfers are available by default whenever
 |'nocompatible'| mode is enabled.  The <netrw.vim> file resides in your
-system's vim-plugin directory and is sourced automatically whenever you bring
-up vim.  I suggest that, at a minimum, you have at least the following in your
-<.vimrc> customization file: >
-	set nocp
-	if version >= 600
-	  filetype plugin indent on
-	endif
-<
+system's vim-plugin directory and is sourced automatically whenever you
+bring up vim.
+
 
 ==============================================================================
 4. Transparent File Transfer				*netrw-transparent*
 
 Transparent file transfers occur whenever a regular file read or write
 (invoked via an |:autocmd| for |BufReadCmd| or |BufWriteCmd| events) is made.
-Thus one may use files across networks just as simply as if they were local. >
+Thus one may use files across networks as if they were local. >
 
 	vim ftp://[user@]machine/path
 	...
 	:wq
 
-See |netrw-activate| for more on how to encourage your vim to use plugins
-such as netrw.
 
 ==============================================================================
 5. Ex Commands						*netrw-ex*
@@ -376,7 +369,8 @@
 :[range]Nw {netfile} [{netfile}]...
 		Write the specified lines to the {netfile}.
 
-:Nread		Read the specified lines into the current
+:Nread
+		Read the specified lines into the current
 		buffer from the file specified in
 		b:netrw_lastfile.
 
@@ -407,11 +401,10 @@
 
 The script <netrw.vim> uses several variables which can affect <netrw.vim>'s
 behavior.  These variables typically may be set in the user's <.vimrc> file:
-(also see |netrw-settings|) >
-
-                        -------------
-                        Netrw Options
-                        -------------
+>
+                                -------------
+                           	Netrw Options
+                                -------------
 	Option			Meaning
 	--------------		-----------------------------------------------
 <
@@ -488,12 +481,12 @@
     -------------------------------------------------------------------------
 <
 								*netrw-ftp*
-The first two options both help with certain ftp's that give trouble
-otherwise.  In order to best understand how to use these options if ftp is
-giving you troubles, a bit of discussion follows on how netrw does ftp reads.
+The first two options both help with certain ftp's that give trouble otherwise.
+In order to best understand how to use these options if ftp is giving you
+troubles, a bit of discussion follows on how netrw does ftp reads.
 
-The g:netrw_..._cmd variables specify the external program to use handle the
-associated protocol (rcp, ftp, etc), plus any options.
+The g:netrw_..._cmd variables specify the external program to use handle
+the associated protocol (rcp, ftp, etc), plus any options.
 
 The g:netrw_list_cmd's HOSTNAME entry will be changed via substitution with
 whatever the current request is for a hostname.
@@ -526,8 +519,8 @@
 The temporary file is then read into the main editing session window that
 requested it and the temporary file deleted.
 
-If your ftp doesn't accept the "user" command and immediately just demands a
-userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
+If your ftp doesn't accept the "user" command and immediately just demands
+a userid, then try putting "let netrw_ftp=1" in your <.vimrc>.
 
 								*netrw-cadaver*
 To handle the SSL certificate dialog for untrusted servers, one may pull
@@ -554,12 +547,12 @@
       endif
     endfunction
 >
-The NetReadFixup() function will be called if it exists and thus allows you to
-customize your reading process.  As a further example, <netrw.vim> contains
-just such a function to handle Windows 95 ftp.  For whatever reason, Windows
-95's ftp dumps four blank lines at the end of a transfer, and so it is
-desirable to automate their removal.  Here's some code taken from <netrw.vim>
-itself:
+The NetReadFixup() function will be called if it exists and thus allows
+you to customize your reading process.  As a further example, <netrw.vim>
+contains just such a function to handle Windows 95 ftp.  For whatever
+reason, Windows 95's ftp dumps four blank lines at the end of a transfer,
+and so it is desirable to automate their removal.  Here's some code taken
+from <netrw.vim> itself:
 >
     if has("win95") && g:netrw_win95ftp
      fun! NetReadFixup(method, line1, line2)
@@ -572,7 +565,7 @@
 >
 
 ==============================================================================
-7. Directory Browsing	*netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
+7. Directory Browser	*netrw-browse* *netrw-dir* *netrw-list* *netrw-help*
 
 MAPS   								*netrw-maps*
      ?................Help.......................................|netrw-help|
@@ -663,13 +656,12 @@
 				 : connect to address [0-9a-fA-F:]*
 				 : No route to host$'
 
-  *g:netrw_ftp_list_cmd*	options for passing along to ftp for directory
-				listing.  Defaults:
-				 unix or g:netrw_cygwin set: : "ls -lF"
-				 otherwise                     "dir"
-
-  *g:netrw_hide*			if true, the hiding list is used
-				 default: =0
+  *g:netrw_ssh_browse_reject*	ssh can sometimes produce unwanted lines,
+				messages, banners, and whatnot that one doesn't
+				want masquerading as "directories" and "files".
+				Use this pattern to remove such embedded
+				messages.  By default its value is:
+ 					 '^total\s\+\d\+$'
 
   *g:netrw_keepdir*		=1 (default) keep current directory immune from
 				   the browsing directory.
@@ -684,11 +676,16 @@
 
   *g:netrw_longlist*		if =1, then long listing will be default
 
+  *g:netrw_ftp_list_cmd*	options for passing along to ftp for directory
+				listing.  Defaults:
+				 unix or g:netrw_cygwin set: : "ls -lF"
+				 otherwise                     "dir"
+
   *g:netrw_list_hide*		comma separated pattern list for hiding files
 				 default: ""
 
   *g:netrw_local_mkdir*		command for making a local directory
-				 default: "mkdir"
+				 default: "ssh HOSTNAME mkdir"
 
   *g:netrw_local_rmdir*		remove directory command (rmdir)
 				 default: "rmdir"
@@ -712,6 +709,9 @@
   *g:netrw_rmf_cmd*		 command for removing softlinks
 				 default: "ssh HOSTNAME rm -f"
 
+  *g:netrw_hide*			if true, the hiding list is used
+				 default: =0
+
   *g:netrw_sort_by*		sort by "name", "time", or "size"
 				 default: "name"
 
@@ -723,18 +723,6 @@
 				 default: '[\/]$,*,\.bak$,\.o$,\.h$,
 				           \.info$,\.swp$,\.obj$'
 
-  *g:netrw_ssh_cmd*		One may specify an executable command
-  				to use instead of ssh for remote actions
-				such as listing, file removal, etc.
-				 default: ssh
-
-  *g:netrw_ssh_browse_reject*	ssh can sometimes produce unwanted lines,
-				messages, banners, and whatnot that one doesn't
-				want masquerading as "directories" and "files".
-				Use this pattern to remove such embedded
-				messages.  By default its value is:
- 					 '^total\s\+\d\+$'
-
   *g:netrw_timefmt*		specify format string to strftime() (%c)
 				 default: "%c"
 
@@ -744,7 +732,7 @@
 INTRODUCTION TO DIRECTORY BROWSING			*netrw-browse-intro*
 
 Netrw supports the browsing of directories on the local system and on remote
-hosts, including listing files and directories, entering directories, editing
+hosts, including generating listing directories, entering directories, editing
 files therein, deleting files/directories, making new directories, and moving
 (renaming) files and directories.  The Netrw browser generally implements the
 previous explorer maps and commands for remote directories, although details
@@ -755,15 +743,13 @@
 in its remote browsing.  Any other protocol will be used for file transfers,
 but otherwise the ssh protocol will be used to do remote directory browsing.
 
-To use Netrw's remote directory browser, simply attempt to read a "file" with a
+To enter the netrw directory browser, simply attempt to read a "file" with a
 trailing slash and it will be interpreted as a request to list a directory:
 
 	vim [protocol]://[user@]hostname/path/
 
-For local directories, the trailing slash is not required.
-
-If you'd like to avoid entering the password in for remote directory listings
-with ssh or scp, see |netrw-listhack|.
+If you'd like to avoid entering the password in for directory listings, scp,
+ssh interaction, etc, see |netrw-listhack|.
 
 				*netrw-explore*  *netrw-pexplore*
 				*netrw-hexplore* *netrw-sexplore*
@@ -797,8 +783,7 @@
 may explicitly provide a directory (path) to use.
 
 (Following needs v7.0 or later)			*netrw-starstar*
-When Explore, Sexplore, Hexplore, or Vexplore are used with a **,
-such as:
+When Explore, Sexplore, Hexplore, or Vexplore are used like
 >
 	:Explore **/filename_pattern
 <
@@ -812,8 +797,7 @@
 matching file.  One may then proceed to the next (or previous) matching files'
 directories by using Nexplore or Pexplore, respectively.  If your console or
 gui produces recognizable shift-up or shift-down sequences, then you'll likely
-find using shift-downarrow and shift-uparrow convenient.  They're mapped by
-netrw:
+find the following mappings convenient:
 
 	<s-down>  == Nexplore, and
 	<s-up>    == Pexplore.
@@ -838,12 +822,11 @@
 
 GOING UP						*netrw--*
 
-To go up a directory, press "-" or press the <cr> when atop the ../ directory
+To go up a directory, press - or his the <cr> when atop the ../ directory
 entry in the listing.
 
-Netrw will use the command in |g:netrw_list_cmd| to perform the directory
-listing operation after changing HOSTNAME to the host specified by the
-user-provided url.  By default netrw provides the command as:
+Netrw will modify the command in |g:netrw_list_cmd| to perform the directory
+listing operation.  By default the command is:
 
 	ssh HOSTNAME ls -FLa
 
@@ -858,13 +841,7 @@
 Browsing is simple: move the cursor onto a file or directory of interest.
 Hitting the <cr> (the return key) will select the file or directory.
 Directories will themselves be listed, and files will be opened using the
-protocol given in the original read request.  
-
-  CAVEAT: There are three forms of listing (see |netrw-i|).  Netrw assumes
-  that two or more spaces delimit filenames and directory names for the long
-  and wide listing formats.  Thus, if your filename or directory name has two
-  or more spaces embedded in it, or any trailing spaces, then you'll need to
-  use the "thin" format to select it.
+protocol given in the original read request.
 
 
 OBTAINING A FILE						*netrw-O*
@@ -872,21 +849,7 @@
 When browsing a remote directory, one may obtain a file under the cursor (ie.
 get a copy on your local machine, but not edit it) by pressing the O key.
 Only ftp and scp are supported for this operation (but since these two are
-available for browsing, that shouldn't be a problem).  The status bar
-will then show, on its right hand side, a message like "Obtaining filename".
-The statusline will be restored after the transfer is complete.
-
-Netrw can also "obtain" a file using the local browser.  Netrw's display
-of a directory is not necessarily the same as Vim's "current directory",
-unless |g:netrw_keepdir| is set to 0 in the user's <.vimrc>.  One may select
-a file using the local browser (by putting the cursor on it) and pressing
-"O" will then "obtain" the file; ie. copy it to Vim's current directory.
-
-Related topics:
- * To see what the current directory is, use |:pwd|
- * To make the currently browsed directory the current directory, see |netrw-c|
- * To automatically make the currently browsed directory the current
-   directory, see |g:netrw_keepdir|.
+available for browsing, that shouldn't be a problem).
 
 
 THIN, LONG, AND WIDE LISTINGS					*netrw-i*
@@ -896,27 +859,21 @@
 The short listing format gives just the files' and directories' names.
 
 The long listing is either based on the "ls" command via ssh for remote
-directories or displays the filename, file size (in bytes), and the time and
-date of last modification for local directories.  With the long listing
-format, netrw is not able to recognize filenames which have trailing spaces.
-Use the thin listing format for such files.
+directories or displays the filename, file size (in bytes), and the
+time and date of last modification for local directories.
 
-The wide listing format has a multi-column display of the various files in the
-netrw current directory, rather like the Unix "ls" presents.  In this mode the
-"b" and "B" maps are not available; instead, use Nb (|netrw-Nb|) and NB
-(|netrw-NB|).  The wide listing format uses two or more contiguous spaces to
-delineate filenames; when using that format, netrw won't be able to recognize
-or use filenames which have two or more contiguous spaces embedded in the name
-or any trailing spaces.  The thin listing format will, however, work with such
-files.
+The wide listing format has a multi-column display of the various
+files in the netrw current directory, rather like the Unix "ls" presents.
+In this mode the "b" and "B" maps are not available; instead, use
+Nb (|netrw-Nb|) and NB (|netrw-NB|).
 
 
 MAKING A NEW DIRECTORY						*netrw-d*
 
-With the "d" map one may make a new directory either remotely (which depends
-on the global variable g:netrw_mkdir_cmd) or locally (which depends on the
-global variable g:netrw_local_mkdir).  Netrw will issue a request for the new
-directory's name.  A bare <CR> at that point will abort the making of the
+With the "d" map one may make a new directory either remotely (which
+depends on the global variable g:netrw_mkdir_cmd) or locally (which depends on
+the global variable g:netrw_local_mkdir).  Netrw will issue a request for the
+new directory's name.  A bare <CR> at that point will abort the making of the
 directory.  Attempts to make a local directory that already exists (as either
 a file or a directory) will be detected, reported on, and ignored.
 
@@ -924,12 +881,12 @@
 DELETING FILES OR DIRECTORIES			*netrw-delete* *netrw-D*
 
 Deleting/removing files and directories involves moving the cursor to the
-file/directory to be deleted and pressing "D".  Directories must be empty
-first before they can be successfully removed.  If the directory is a softlink
-to a directory, then netrw will make two requests to remove the directory
-before succeeding.  Netrw will ask for confirmation before doing the
-removal(s).  You may select a range of lines with the "V" command (visual
-selection), and then pressing "D".
+file/directory to be deleted and pressing "D".  Directories must be empty first
+before they can be successfully removed.  If the directory is a softlink to a
+directory, then netrw will make two requests to remove the directory before
+succeeding.  Netrw will ask for confirmation before doing the removal(s).
+You may select a range of lines with the "V" command (visual selection),
+and then pressing "D".
 
 The g:netrw_rm_cmd, g:netrw_rmf_cmd, and g:netrw_rmdir_cmd variables are used
 to control the attempts to remove files and directories.  The g:netrw_rm_cmd
@@ -966,17 +923,17 @@
 
 HIDING FILES OR DIRECTORIES				*netrw-a*
 
-Netrw's browsing facility allows one to use the hiding list in one of three
-ways: ignore it, hide files which match, and show only those files which
-match.  The "a" map allows the user to cycle about these three ways.
+Netrw's browsing facility allows one to use the hiding list in one of
+three ways: ignore it, hide files which match, and show only those files
+which match.  The "a" map allows the user to cycle about these three ways.
 
-The g:netrw_list_hide variable holds a comma delimited list of patterns (ex.
-\.obj) which specify the hiding list. (also see |netrw-h|)  To set the hiding
-list, use the <c-h> map.  As an example, to hide files which begin with a ".",
-one may use the <c-h> map to set the hiding list to '^\..*' (or one may put
-let g:netrw_list_hide= '^\..*' in one's <.vimrc>).  One may then use the "a"
-key to show all files, hide matching files, or to show only the matching
-files.
+The g:netrw_list_hide variable holds a comma delimited list of patterns
+(ex. \.obj) which specify the hiding list. (also see |netrw-h|)  To
+set the hiding list, use the <c-h> map.  As an example, to hide files
+which begin with a ".", one may use the <c-h> map to set the hiding
+list to '^\..*' (or one may put  let g:netrw_list_hide= '^\..*' in
+one's <.vimrc>).  One may then use the "a" key to show all files,
+hide matching files, or to show only the matching files.
 
 
 EDIT FILE OR DIRECTORY HIDING LIST		*netrw-h* *netrw-edithide*
@@ -984,8 +941,7 @@
 The "<ctrl-h>" map brings up a requestor allowing the user to change the
 file/directory hiding list.  The hiding list consists of one or more patterns
 delimited by commas.  Files and/or directories satisfying these patterns will
-either be hidden (ie. not shown) or be the only ones displayed (see
-|netrw-a|).
+either be hidden (ie. not shown) or be the only ones displayed (see |netrw-a|).
 
 
 BROWSING WITH A HORIZONTALLY SPLIT WINDOW		*netrw-o* *netrw-horiz*
@@ -994,9 +950,9 @@
 allows one to open a new window to hold the new directory listing or file.  A
 horizontal split is used.  (for vertical splitting, see |netrw-v|)
 
-Normally, the o key splits the window horizontally with the new window and
-cursor at the top.  To change to splitting the window horizontally with the
-new window and cursor at the bottom, have
+Normally, the o key splits the window horizontally with the new window
+and cursor at the top.  To change to splitting the window horizontally
+with the new window and cursor at the bottom, have
 
 	let g:netrw_alto = 1
 
@@ -1005,30 +961,30 @@
 
 PREVIEW WINDOW					*netrw-p* *netrw-preview*
 
-One may use a preview window (currently only for local browsing) by using the
-"p" key when the cursor is atop the desired filename to be previewed.
+One may use a preview window (currently only for local browsing) by using
+the "p" key when the cursor is atop the desired filename to be previewed.
 
 
 SELECTING SORTING STYLE				*netrw-s* *netrw-sort*
 
-One may select the sorting style by name, time, or (file) size.  The "s" map
-allows one to circulate amongst the three choices; the directory listing will
-automatically be refreshed to reflect the selected style.
+One may select the sorting style by name, time, or (file) size.  The
+"s" map allows one to circulate amongst the three choices; the directory
+listing will automatically be refreshed to reflect the selected style.
 
 
 EDITING THE SORTING SEQUENCE		*netrw-S* *netrw-sortsequence*
 
-When "Sorted by" is name, one may specify priority via the sorting sequence
-(g:netrw_sort_sequence).  The sorting sequence typically prioritizes the
-name-listing by suffix, although any pattern will do.  Patterns are delimited
-by commas.  The default sorting sequence is:
+When "Sorted by" is name, one may specify priority via the sorting
+sequence (g:netrw_sort_sequence).  The sorting sequence typically
+prioritizes the name-listing by suffix, although any pattern will do.
+Patterns are delimited by commas.  The default sorting sequence is:
 >
 	[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$
 <
-The lone * is where all filenames not covered by one of the other patterns
-will end up.  One may change the sorting sequence by modifying the
-g:netrw_sort_sequence variable (either manually or in your <.vimrc>) or by
-using the "S" map.
+The lone * is where all filenames not covered by one of the other
+patterns will end up.  One may change the sorting sequence by modifying
+the g:netrw_sort_sequence variable (either manually or in your <.vimrc>)
+or by using the "S" map.
 
 
 REVERSING SORTING ORDER			*netrw-r* *netrw-reverse*
@@ -1055,13 +1011,13 @@
 
 BROWSING WITH A VERTICALLY SPLIT WINDOW				*netrw-v*
 
-Normally one enters a file or directory using the <cr>.  However, the "v" map
-allows one to open a new window to hold the new directory listing or file.  A
-vertical split is used.  (for horizontal splitting, see |netrw-o|)
+Normally one enters a file or directory using the <cr>.  However, the "v"
+map allows one to open a new window to hold the new directory listing or
+file.  A vertical split is used.  (for horizontal splitting, see |netrw-o|)
 
-Normally, the v key splits the window vertically with the new window and
-cursor at the left.  To change to splitting the window vertically with the new
-window and cursor at the right, have
+Normally, the v key splits the window vertically with the new window
+and cursor at the left.  To change to splitting the window vertically
+with the new window and cursor at the right, have
 
 	let g:netrw_altv = 1
 
@@ -1077,24 +1033,24 @@
   * for Windows 32 or 64, the url and FileProtocolHandler dlls are used.  
   * for KDE (with kfmclient): kfmclient is used.
   * for Gnome (with gnome-open): gnome-open is used.
-  * otherwise the netrwFileHandler plugin is used.
+  * otherwise the NetrwFileHandler plugin is used.
 
 The file's suffix is used by these various approaches to determine an
-appropriate application to use to "handle" these files.  Such things as
-OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript (*.ps,
-*.eps) can be handled.
+appropriate application to use to "handle" these files.  Such things
+as OpenOffice (*.sfx), visualization (*.jpg, *.gif, etc), and PostScript
+(*.ps, *.eps) can be handled.
 
-The netrwFileHandler applies a user-defined function to a file, based on its
+The NetrwFileHandler applies a user-defined function to a file, based on its
 extension.  Of course, the handler function must exist for it to be called!
 >
  Ex. mypgm.html   x ->
-                  netrwFileHandler_html("scp://user@host/some/path/mypgm.html")
+                  NetrwFileHandler_html("scp://user@host/some/path/mypgm.html")
 <
-See the <plugin/netrwFileHandlers.vim> for an example of how to handle an html
+See the <plugin/NetrwFileHandlers.vim> for an example of how to handle an html
 file with mozilla.
 
-One may write custom netrwFileHandlers; please look at the
-plugin/netrwFileHandlers.vim script for examples.  If its likely to be
+One may write custom NetrwFileHandlers; please look at the
+plugin/NetrwFileHandlers.vim script for examples.  If its likely to be
 generally useful, please feel free to forward a copy to me for future
 inclusion in the distribution.
 
@@ -1107,8 +1063,8 @@
 currently browsed directory be the current directory.
 
 With the default setting for g:netrw_keepdir, in order to make the two
-directories the same, use the "c" map (just type c).  That map will set the
-current directory to the current browsing directory.
+directories the same, use the "c" map (just type c).  That map will set
+the current directory to the current browsing directory.
 
 
 BOOKMARKING A DIRECTORY		*netrw-b* *netrw-bookmark* *netrw-bookmarks*
@@ -1131,8 +1087,8 @@
 
 	{cnt}B
 
-Any count may be used to reference any of the bookmarks.  See |netrw-b| on
-how to bookmark a directory and |netrw-q| on how to list bookmarks.
+Any count may be used to reference any of the bookmarks.  See |netrw-b|
+for how to bookmark a directory and |netrw-q| for how to list them.
 
 When wide listing is in use (see |netrw-i|), then the B map is not available;
 instead, use {cnt}NB.
@@ -1162,9 +1118,9 @@
 With the NetrwSettings.vim plugin, >
 	:NetrwSettings
 will bring up a window with the many variables that netrw uses for its
-settings.  You may change any of their values; when you save the file, the
-settings therein will be used.  One may also press "?" on any of the lines for
-help on what each of the variables do.
+settings.  You may change any of their values; when you save the file,
+the settings therein will be used.  One may also press "?" on any of
+the lines for help on what each of the variables do.
 
 
 ==============================================================================
@@ -1284,33 +1240,6 @@
 ==============================================================================
 10. History						*netrw-history*
 
-	v73: * bugfix -- scp://host/path/file was getting named incorrectly
-	     * netrw detects use of earlier-than-7.0 version of vim and issues
-	       a pertinent error message.
-	     * netrwSettings.vim is now uses autoloading.  Only
-	       <netrwPlugin.vim> is needed as a pure plugin
-	       (ie. always loaded).
-	v72: * bugfix -- formerly, one could prevent the loading of netrw
-	       by "let g:loaded_netrw=1"; when autoloading became supported,
-	       this feature was lost.  It is now restored.
-	v71: * bugfix -- made some "set nomodifiable"s into setlocal variants
-	       (allows :e somenewfile  to be modifiable as usual)
-	     * NetrwSettings calls a netrw function, thereby assuring that
-	       netrw has loaded.  However, if netrw does not load for whatever
-	       reason, then NetrwSettings will now issue a warning message.
-	     * For what reason I don't recall, when wget and fetch are both
-	       not present, and an attempt to read a http://... url is made,
-	       netrw exited.  It now only returns.
-	     * When ch=1, on the second and subsequent uses of browsing Netrw
-	       would issue a blank line to clear the echo'd messages.  This
-	       caused an annoying "Hit-Enter" prompt; now a blank line message
-	       is echo'd only if &ch>1.
-	v70: * when using |netrw-O|, the "Obtaining filename" message is now
-	       shown using |hl-User9|.  If User9 has not been defined, netrw
-	       will define it.
-	v69: * Bugfix: win95/98 machines were experiencing a
-	       "E121: Undefined variable: g:netrw_win95ftp" message
-	v68: * double-click-leftmouse selects word under mouse
 	v67: * Passwords which contain blanks will now be surrounded by
 	       double-quotes automatically (Yongwei)
 	v66: * Netrw now seems to work with a few more Windows situations
@@ -1426,7 +1355,7 @@
 	     * special file viewing with:
 	       (windows) rundll32 url.dll (gnome)   gnome-open (kde)
 	       kfmclient If none of these are on the executable path, then
-	       netrwFileHandlers.vim is used.
+	       NetrwFileHandlers.vim is used.
 	     * directory bookmarking during both local and remote browsing
 	       implemented
 	     * one may view all, use the hiding list to suppress, or use the
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 35f00c3..2fb97ba 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1062,6 +1062,7 @@
 +gettext	various.txt	/*+gettext*
 +hangul_input	various.txt	/*+hangul_input*
 +iconv	various.txt	/*+iconv*
++iconv/dyn	various.txt	/*+iconv\/dyn*
 +insert_expand	various.txt	/*+insert_expand*
 +jumplist	various.txt	/*+jumplist*
 +keymap	various.txt	/*+keymap*
@@ -1090,13 +1091,16 @@
 +osfiletype	various.txt	/*+osfiletype*
 +path_extra	various.txt	/*+path_extra*
 +perl	various.txt	/*+perl*
++perl/dyn	various.txt	/*+perl\/dyn*
 +postscript	various.txt	/*+postscript*
 +printer	various.txt	/*+printer*
 +profile	various.txt	/*+profile*
 +python	various.txt	/*+python*
++python/dyn	various.txt	/*+python\/dyn*
 +quickfix	various.txt	/*+quickfix*
 +rightleft	various.txt	/*+rightleft*
 +ruby	various.txt	/*+ruby*
++ruby/dyn	various.txt	/*+ruby\/dyn*
 +scrollbind	various.txt	/*+scrollbind*
 +signs	various.txt	/*+signs*
 +smartindent	various.txt	/*+smartindent*
@@ -1109,6 +1113,7 @@
 +tag_binary	various.txt	/*+tag_binary*
 +tag_old_static	various.txt	/*+tag_old_static*
 +tcl	various.txt	/*+tcl*
++tcl/dyn	various.txt	/*+tcl\/dyn*
 +terminfo	various.txt	/*+terminfo*
 +termresponse	various.txt	/*+termresponse*
 +textobjects	various.txt	/*+textobjects*
@@ -1663,6 +1668,8 @@
 :TOhtml	syntax.txt	/*:TOhtml*
 :Vexplore	pi_netrw.txt	/*:Vexplore*
 :X	editing.txt	/*:X*
+:XMLent	insert.txt	/*:XMLent*
+:XMLns	insert.txt	/*:XMLns*
 :\bar	cmdline.txt	/*:\\bar*
 :_!	cmdline.txt	/*:_!*
 :_#	cmdline.txt	/*:_#*
@@ -1839,6 +1846,7 @@
 :command	map.txt	/*:command*
 :command-completion	map.txt	/*:command-completion*
 :command-completion-custom	map.txt	/*:command-completion-custom*
+:command-completion-customlist	map.txt	/*:command-completion-customlist*
 :command-verbose	map.txt	/*:command-verbose*
 :comment	eval.txt	/*:comment*
 :comp	quickfix.txt	/*:comp*
@@ -5007,6 +5015,7 @@
 ft-ksh-syntax	syntax.txt	/*ft-ksh-syntax*
 ft-lace-syntax	syntax.txt	/*ft-lace-syntax*
 ft-lex-syntax	syntax.txt	/*ft-lex-syntax*
+ft-lisp-syntax	syntax.txt	/*ft-lisp-syntax*
 ft-lite-syntax	syntax.txt	/*ft-lite-syntax*
 ft-lpc-syntax	syntax.txt	/*ft-lpc-syntax*
 ft-lua-syntax	syntax.txt	/*ft-lua-syntax*
@@ -5059,6 +5068,8 @@
 ft-vim-indent	indent.txt	/*ft-vim-indent*
 ft-vim-syntax	syntax.txt	/*ft-vim-syntax*
 ft-xf86conf-syntax	syntax.txt	/*ft-xf86conf-syntax*
+ft-xhtml-omni	insert.txt	/*ft-xhtml-omni*
+ft-xml-omni	insert.txt	/*ft-xml-omni*
 ft-xml-syntax	syntax.txt	/*ft-xml-syntax*
 ft-xpm-syntax	syntax.txt	/*ft-xpm-syntax*
 ftdetect	filetype.txt	/*ftdetect*
@@ -5302,6 +5313,7 @@
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
@@ -5513,6 +5525,7 @@
 iconise	starting.txt	/*iconise*
 iconize	starting.txt	/*iconize*
 iconv()	eval.txt	/*iconv()*
+iconv-dynamic	mbyte.txt	/*iconv-dynamic*
 ident-search	tips.txt	/*ident-search*
 if_cscop.txt	if_cscop.txt	/*if_cscop.txt*
 if_mzsch.txt	if_mzsch.txt	/*if_mzsch.txt*
@@ -5658,6 +5671,7 @@
 linewise	motion.txt	/*linewise*
 linewise-register	change.txt	/*linewise-register*
 linewise-visual	visual.txt	/*linewise-visual*
+lisp.vim	syntax.txt	/*lisp.vim*
 lispindent()	eval.txt	/*lispindent()*
 list-identity	eval.txt	/*list-identity*
 list-index	eval.txt	/*list-index*
@@ -6111,6 +6125,7 @@
 perl-SetOption	if_perl.txt	/*perl-SetOption*
 perl-Windows	if_perl.txt	/*perl-Windows*
 perl-compiling	if_perl.txt	/*perl-compiling*
+perl-dynamic	if_perl.txt	/*perl-dynamic*
 perl-editing	if_perl.txt	/*perl-editing*
 perl-overview	if_perl.txt	/*perl-overview*
 perl-patterns	pattern.txt	/*perl-patterns*
@@ -6174,6 +6189,7 @@
 python-command	if_pyth.txt	/*python-command*
 python-commands	if_pyth.txt	/*python-commands*
 python-current	if_pyth.txt	/*python-current*
+python-dynamic	if_pyth.txt	/*python-dynamic*
 python-error	if_pyth.txt	/*python-error*
 python-eval	if_pyth.txt	/*python-eval*
 python-examples	if_pyth.txt	/*python-examples*
@@ -6310,6 +6326,7 @@
 ruby-buffer	if_ruby.txt	/*ruby-buffer*
 ruby-command	if_ruby.txt	/*ruby-command*
 ruby-commands	if_ruby.txt	/*ruby-commands*
+ruby-dynamic	if_ruby.txt	/*ruby-dynamic*
 ruby-evaluate	if_ruby.txt	/*ruby-evaluate*
 ruby-globals	if_ruby.txt	/*ruby-globals*
 ruby-message	if_ruby.txt	/*ruby-message*
@@ -6774,6 +6791,7 @@
 tcl-bugs	if_tcl.txt	/*tcl-bugs*
 tcl-command	if_tcl.txt	/*tcl-command*
 tcl-commands	if_tcl.txt	/*tcl-commands*
+tcl-dynamic	if_tcl.txt	/*tcl-dynamic*
 tcl-ex-commands	if_tcl.txt	/*tcl-ex-commands*
 tcl-examples	if_tcl.txt	/*tcl-examples*
 tcl-expr	if_tcl.txt	/*tcl-expr*
@@ -7266,6 +7284,7 @@
 xim-input-style	mbyte.txt	/*xim-input-style*
 xiterm	syntax.txt	/*xiterm*
 xml-folding	syntax.txt	/*xml-folding*
+xml-omni-datafile	insert.txt	/*xml-omni-datafile*
 xml.vim	syntax.txt	/*xml.vim*
 xpm.vim	syntax.txt	/*xpm.vim*
 xterm-8-bit	term.txt	/*xterm-8-bit*
@@ -7337,13 +7356,6 @@
 zg	spell.txt	/*zg*
 zh	scroll.txt	/*zh*
 zi	fold.txt	/*zi*
-zip	zip.txt	/*zip*
-zip-contents	zip.txt	/*zip-contents*
-zip-copyright	zip.txt	/*zip-copyright*
-zip-history	zip.txt	/*zip-history*
-zip-manual	zip.txt	/*zip-manual*
-zip-usage	zip.txt	/*zip-usage*
-zip.txt	zip.txt	/*zip.txt*
 zj	fold.txt	/*zj*
 zk	fold.txt	/*zk*
 zl	scroll.txt	/*zl*
diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt
index fbecaa2..522eb2a 100644
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 7.0aa.  Last change: 2005 Jul 12
+*tagsrch.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -440,7 +440,7 @@
 will be searched for the tag.
 
 This can be switched off by including the 'd' flag in 'cpoptions', to make
-it Vi compatible.  "./tags" will than be the tags file in the current
+it Vi compatible.  "./tags" will then be the tags file in the current
 directory, instead of the tags file in the directory where the current file
 is.
 
diff --git a/runtime/doc/tar.txt b/runtime/doc/tar.txt
new file mode 100644
index 0000000..f43140d
--- /dev/null
+++ b/runtime/doc/tar.txt
@@ -0,0 +1,37 @@
+*tar.txt*	Tar File Interface				Nov 03, 2005
+
+Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
+	  (remove NOSPAM from Campbell's email first)
+Copyright: The GPL (gnu public license) applies to	*tar-copyright*
+	   tarPlugin.vim, and tar.txt.
+	   No warranty, express or implied.  Use At-Your-Own-Risk.
+
+==============================================================================
+1. Contents					*tar* *tar-contents*
+   1. Contents..................................................|tar-contents|
+   2. Usage.....................................................|tar-usage|
+   3. History...................................................|tar-history|
+
+==============================================================================
+2. Usage					*tar-usage* *tar-manual*
+
+   When one edits a *.tar file, this plugin will handle displaying a
+   contents page.  Select a file to edit by moving the cursor atop
+   the desired file, then hit the <return> key.  After editing, one may
+   also write to the file.  Currently, one may not make a new file in
+   tar archives via the plugin.
+
+==============================================================================
+3. History						*tar-history*
+   v3 Sep 16, 2005       * handles writing files in an archive back to the
+                           archive
+      Oct 18, 2005       * <amatch> used instead of <afile> in autocmds
+      Oct 18, 2005       * handles writing to compressed archives
+      Nov 03, 2005       * handles writing tarfiles across a network using
+                           netrw#NetWrite()
+   v2                    * converted to use Vim7's new autoload feature by
+                           Bram Moolenaar
+   v1 (original release) * Michael Toren (see http://michael.toren.net/code/)
+
+==============================================================================
+vim:tw=78:ts=8:ft=help
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index e856a56..14097a9 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Oct 12
+*todo.txt*      For Vim version 7.0aa.  Last change: 2005 Nov 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,18 +30,66 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Using chown() is unsafe. (Jinpeng Wei)
+    ex_cmds.c: viminfo tempfile: use mch_open(O_EXCL) and fdopen()
+    fileio.c: use fchown() instead of chown()
+    vim.h: define O_NOFOLLOW if needed.  Not in Vim 6.4?
+
+Go over all changes between 6.3 and 6.4 and make sure they are included in 7.
+
+'statusline' is drawn over the Omni menu.
+
+Cygwin and Mac OS/X may preserve case for file names but ignore case
+differences.  Use Amiga code?
+
+"make unixall": remove split in floppy-size archives.
+
+To support mapping <F4> to be used as <F4>{motion}: Add operator that
+executes a user defined function. '[ and '] marks are at start and end of
+text.  ":map <F4> :set opfunc=MyOp<CR>gy".
+
+Patch from Yasuhiro Matsumoto: ":e ++enc=xxx" keeps encoding for conversion
+errors and illegal bytes.  How about replacing bytes with '?' or not?
+
 ccomplete:
 - When an option is set: In completion mode and the user types (identifier)
   characters, advance to the first match instead of removing the popup menu.
   If there is no match remove the selection. (Yegappan Lakshmanan)
+- Complete the longest common match instead of the first match?
+- !_TAG_FILE_FORMAT and it's ilk are listed in the global completions
 - When completing something that is a structure, add the "." or "->".
 - When a typedef or struct is local to a file only use it in that file?
+- Window resize when poup is displayed
+- page-up / page-down
 
 spelling:
 - When a recognized word ends in a . don't have 'spellcapcheck" match it.
-- Use KEEPCASE instead of "KEP".  applies to affixes too.
+- Use KEEPCASE instead of "KEP".  It applies to the word including affixes
+  Hunspell also uses it.
+- Hunspell has NOSUGGEST flag (use for obscene words?)
+- Check out Hunspell 1.1.2.
 - Look into hungarian dictionary:
   http://magyarispell.sourceforge.net/rc3-beta2.zip
+- Support breakpoint character · 0xb7 and ignore it?
+- Dutch word list should be available here: http://www.woordenlijst.org/
+8   Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
+    obtain).  But new Myspell wordlist will come (Hagen)
+- Finding suggestions with sound folding is slow.  Somehow store the
+  sound-folded words and link to the words it comes from?
+
+When editing a file "a" that is a symbolic link to "b", while another Vim is
+editing "b", there is no warning.  Follow symlink to make swap file name?
+Patch from Stefano Zacchiroli.
+
+In diff mode deleting lines is very slow.  E.g., when diffing two .po files
+and then sourcing po/cleaup.vim.
+
+7   Add plugins for formatting.  Should be able to make a choice depending on
+    the language of a file (English/Korean/Japanese/etc.).
+    Setting the 'langformat' option to "chinese" would load the
+    "format/chinese.vim" plugin.
+Edward L. Fox explains how it should be done for most Asian languages. (2005
+Nov 24)
 
 Mac unicode patch (Da Woon Jung):
 - selecting proportional font breaks display
@@ -52,10 +100,15 @@
 - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
   (Alan Schmitt)
 
+Patch to add a few flags to search(). (Benji Fisher, Nov 22)
+
 Win32: Use the free downloadable compiler 7.1.  Figure out how to do debugging
 (with Agide?) and describe it. (George Reilly)
 Try out using the free MS compiler and debugger, using Make_mvc.mak.
 
+Win32: Check that installer puts menu items in "all users" dir when possible,
+not administrator dir.
+
 Autoload:
 - Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
   script names and a help file and produces a script that can be sourced to
@@ -67,7 +120,8 @@
     helpfile doc/myscript.txt
   For the "helpfile" item ":helptags" is run.
 
-Add ":smap", Select mode mapping?
+Add ":smap", Select mode mapping?  Otherwise: ":sunmap", so that Visual mode
+mappings for normal keys can be removed from Select mode.
 
 Awaiting response:
 -   Win32: tearoff menu window should have a scrollbar when it's taller than
@@ -88,6 +142,10 @@
     make it work for all completion methods.
 
     UI:
+    - Complete longest common string first, like 'wildmode' "longest:full".
+    - Add an "auto" mode: after typing a character (or string) completion is
+      done for the longest common string.  plugin defines the possible
+      characters/strings. (Martin Stubenschrott)
     - GUI implementation of the popup menu.
     - When using tags, show match in preview window (function prototype,
       struct member, etc.).
@@ -191,9 +249,9 @@
     For GTK Neil Bird has a patch to use Vim like a widget.
 -   Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd".  Block
     can be selected with CTRL-V.  Allow '$' (end of line) for col2.
--   Add DEBUGGER INTERFACE.  Implementation for gdb by Xavier de Gaye,
-    assisted by Mikolaj Machowski.  Should work like an IDE.  Try to keep it
-    generic.  Also found here: http://skawina.eu.org/mikolaj/vimgdb
+-   Add DEBUGGER INTERFACE.  Implementation for gdb by Xavier de Gaye.
+    Should work like an IDE.  Try to keep it generic.  Now found here:
+    http://clewn.sf.net.
     And the idevim plugin/script.
     To be able to start the debugger from inside Vim: For GUI run a program
     with a netbeans connection; for console: start a program that splits the
@@ -207,6 +265,7 @@
     implement part in Java and then connect to Vim.  Some hints from Alexandru
     Roman, 2004 Dec 15.  Should then also work with Oracle Jdeveloper, see JSR
     198 standard http://www.jcp.org/en/jsr/detail?id=198.
+    Eclim does it: http://eclim.sourceforge.net/  (Eric Van Dewoestine)
 -   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
     Especially when using the scrollbar.  Typing a cursor-movement command
     scrolls back to where the cursor is.
@@ -353,7 +412,9 @@
 	How does this work?  Missing comments.
 	gettext()	Translate a message.  (Patch from Yasuhiro Matsumoto)
 			Update 2004 Sep 10
-			More docs.  Search in 'runtimepath'?
+			Another patch from Edward L. Fox (2005 Nov 24)
+			Search in 'runtimepath'?
+			More docs about how to use this.
 			How to get the messages into the .po files?
     --- did not respond (yet) --
     -	Patch for 'breakindent' option: repeat indent for wrapped line. (Vaclav
@@ -395,7 +456,7 @@
     7   When 'rightleft' is set, the search pattern should be displayed right
 	to left as well?  See patch of Dec 26. (Nadim Shaikli)
     8   Lock all used memory so that it doesn't get swapped to disk (uncrypted).
-	Patch by Jason Holt, 2003 May 23.
+	Patch by Jason Holt, 2003 May 23.  Uses mlock.
     7   Support a stronger encryption.  Jason Holt implemented AES (May 6 2003).
     7   Add ! register, for shell commands. (patch from Grenie)
     8   In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc.  Like it's
@@ -791,7 +852,16 @@
 8   OS/2: Add Extended Attributes support and define HAVE_ACL.
 8   OS/2: When editing a file name "foo.txt" that is actually called FOO.txt,
     writing uses "foo.txt".  Should obtain the real file name.
-8   Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH?
+8   Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH?  No, but it's
+    a good fallback, thus use:
+	    $HOME
+	    $HOMEDRIVE$HOMEPATH
+	    SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE);
+	    $USERPROFILE
+	    SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE);
+	    $ALLUSERSPROFILE
+	    $SYSTEMDRIVE\
+	    C:\
 8   Win32 console: <M-Up> and <M-Down> don't work. (Geddes)  We don't have
     special keys for these.  Should use modifier + key.
 8   Win32 console: caps-lock makes non-alpha keys work like with shift.
@@ -1382,22 +1452,19 @@
 8   Make "en-rare" spell file?  Ask Charles Campbell.
 8   The English dictionaries for different regions are not consistent in their
     use of words with a dash.
-8   Alternate Dutch word list at www.nederlandsewoorden.nl (use script to
-    obtain).  But new Myspell wordlist will come (Hagen)
 7   Insert mode completion mechanism that uses the spell word lists.
 8   Add hl groups to 'spelllang'?
 	:set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath
     More complicated: Regions with different languages?  E.g., comments
     in English, strings in German (po file).
-8   Implement compound words when it works for Myspell.  Current idea has the
-    problem that "foo/X" always allows "foofoo", there is no way to specify a
-    word can only be at the start or end, or that only certain words combine.
 
 
 Diff mode:
 8   Use diff mode to show the changes made in a buffer (compared to the file).
     Use an unnamed buffer, like doing:
 	new | set bt=nofile | r # | 0d_ | diffthis | wincmd p | diffthis
+    Also show difference with the file when editing started?  Should show what
+    can be undone. (Tom Popovich)
 7   Add cursor-binding: when moving the cursor in one diff'ed buffer, also
     move it in other diff'ed buffers, so that CTRL-W commands go to the same
     location.
@@ -1575,6 +1642,11 @@
     re-insert the [] if possible.
 8   Make it possible to use color of text for Visual highlight group (like for
     the Cursor).
+8   It would be useful to make the highlight group name an expression.  Then
+    when there is a match, the expression would be evaluated to find out what
+    highlight group to use.  Could be used to check if the shell used in a
+    password file appears in /etc/shells. (Nikolai Weibull)
+	syn match =s:checkShell(v:match) contained 'pattern'
 8   Make it possible to only highlight a sub-expression of a match.  Like
     using "\1" in a ":s" command.
 8   Support for deleting syntax items:
@@ -3020,8 +3092,6 @@
 7   There is 'titleold', why is there no 'iconold'? (Chazelas)
 7   Make 'scrolloff' a global-local option, so that it can be different in the
     quickfix window, for example. (Gary Holloway)
-7   Add plugins for formatting.  Should be able to make a choice depending on
-    the language of a file (English/Korean/Japanese/etc.).
 
 
 External commands:
@@ -3349,7 +3419,8 @@
 7   Add a way to define an item list with a pattern in 'formatoptions'.  The
     'n' flag doesn't work for "6.3" or "6a.".
 8   Add 'formatexpr' option: Used for formatting operator "gq" instead of the
-    builtin formatting or 'formatprg'.
+    builtin formatting or 'formatprg'.  Or use a string that starts with "="
+    in 'formatprg': "=MyFormat()".
 8   Allow using a trailing space to signal a paragraph that continues on the
     next line (MIME text/plain; format=flowed, RFC 2646).  Can be used for
     continuous formatting.  Could use 'autoformat' option, which specifies a
diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt
index 751c0b4..d126f8b 100644
--- a/runtime/doc/uganda.txt
+++ b/runtime/doc/uganda.txt
@@ -1,4 +1,4 @@
-*uganda.txt*    For Vim version 7.0aa.  Last change: 2005 Aug 12
+*uganda.txt*    For Vim version 7.0aa.  Last change: 2005 Oct 15
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -211,9 +211,26 @@
 Check the ICCF web site for the latest information!  See |iccf| for the URL.
 
 
-USA and Canada: Contact Kibaale Children's Fund (KCF) in Surrey, Canada.  They
+USA:		The methods mentioned below can be used.  Alternatively, you
+		can send a check to the Nehemiah Group Outreach Society
+		(NGOS).  This will reduce banking costs and you can get an IRS
+		tax receipt.  The NGOS forwards the funds directly to the
+		Kibaale project in Uganda.  Checks must be made payable to
+		NGOS but please note on the check "donation Kibaale".  Mail
+		checks to:
+			NGOS
+			P.O. Box 50862
+			Indianapolis, IN 45250
+		Questions regarding the Nehemiah Group Outreach Society (NGOS)
+		should be directed to: Ross deMerchant, Executive Director -
+		r.demerchant AT sbcglobal DOT net.
+		For sponsoring a child contact KCF in Canada (see below) and
+		send the check to NGOS in Indianapolis.
+
+Canada:		Contact Kibaale Children's Fund (KCF) in Surrey, Canada.  They
 		take care of the Canadian sponsors for the children in
-		Kibaale.  You can send them a one time donation directly.
+		Kibaale.  KCF forwards 100% of the money to the project in
+		Uganda.  You can send them a one time donation directly.
 		Please send me a note so that I know what has been donated
 		because of Vim.  Ask KCF for information about sponsorship.
 			Kibaale Children's Fund c/o Pacific Academy
@@ -223,12 +240,10 @@
 			Phone: 604-581-5353
 		If you make a donation to Kibaale Children's Fund (KCF) you
 		will receive a tax receipt which can be submitted with your
-		tax return (under the Free Trade Agreement tax receipts issued
-		by an organization registered in Canada are fully accepted by
-		the IRS in the USA, with a few conditions).
+		tax return.
 
 Holland:	Transfer to the account of "Stichting ICCF Holland" in Venlo.
-		This will allow for tax deduction (if you live in Holland)!
+		This will allow for tax deduction if you live in Holland.
 			Postbank, nr. 4548774
 
 Germany:	It is possible to make donations that allow for a tax return.
@@ -252,7 +267,7 @@
 		    https://www.paypal.com/affil/pal=Bram%40iccf-holland.org
 		The e-mail address for sending the money to is:
 		    Bram@iccf-holland.org
-		For amounts above 400 Euro ($500) sending a cheque is
+		For amounts above 400 Euro ($500) sending a check is
 		preferred.
 
 Others:		Transfer to one of these accounts if possible:
@@ -264,11 +279,11 @@
 		    Rabobank Venlo, account 3765.05.117
 				Swift code: RABO NL 2U
 			under the name "Bram Moolenaar", Venlo
-		Otherwise, send a cheque in euro or US dollars to the address
+		Otherwise, send a check in euro or US dollars to the address
 		below.  Minimal amount: $70 (my bank does not accept smaller
-		amounts for foreign cheques, sorry)
+		amounts for foreign check, sorry)
 
-Address to send cheques to:
+Address to send checks to:
 			stichting ICCF Holland
 			Bram Moolenaar
 			Clematisstraat 30
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 3f075d8..b4172cc 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0aa.  Last change: 2005 Aug 27
+*various.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -295,7 +295,8 @@
    *+GUI_Motif*		Unix only: Motif |GUI|
    *+GUI_Photon*	QNX only:  Photon |GUI|
 m  *+hangul_input*	Hangul input support |hangul|
-   *+iconv*		Compiled with the |iconv()| function, may have |/dyn|
+   *+iconv*		Compiled with the |iconv()| function
+   *+iconv/dyn*		Likewise |iconv-dynamic| |/dyn|
 N  *+insert_expand*	|insert_expand| Insert mode completion
 N  *+jumplist*		|jumplist|
 B  *+keymap*		|'keymap'|
@@ -325,14 +326,17 @@
    *+osfiletype*	Support for the 'osfiletype' option and filetype
 			checking in automatic commands.  |autocmd-osfiletypes|
 N  *+path_extra*	Up/downwards search in 'path' and 'tags'
-m  *+perl*		Perl interface |perl|, may have |/dyn|
+m  *+perl*		Perl interface |perl|
+m  *+perl/dyn*		Perl interface |perl-dynamic| |/dyn|
    *+postscript*	|:hardcopy| writes a PostScript file
 N  *+printer*		|:hardcopy| command
 H  *+profile*		|:profile| command
-m  *+python*		Python interface |python|, may have |/dyn|
+m  *+python*		Python interface |python|
+m  *+python/dyn*	Python interface |python-dynamic| |/dyn|
 N  *+quickfix*		|:make| and |quickfix| commands
 B  *+rightleft*		Right to left typing |'rightleft'|
-m  *+ruby*		Ruby interface |ruby|, may have |/dyn|
+m  *+ruby*		Ruby interface |ruby|
+m  *+ruby/dyn*		Ruby interface |ruby-dynamic| |/dyn|
 N  *+scrollbind*	|'scrollbind'|
 B  *+signs*		|:sign|
 N  *+smartindent*	|'smartindent'|
@@ -345,7 +349,8 @@
 N  *+tag_binary*	binary searching in tags file |tag-binary-search|
 N  *+tag_old_static*	old method for static tags |tag-old-static|
 m  *+tag_any_white*	any white space allowed in tags file |tag-any-white|
-m  *+tcl*		Tcl interface |tcl|, may have |/dyn|
+m  *+tcl*		Tcl interface |tcl|
+m  *+tcl/dyn*		Tcl interface |tcl-dynamic| |/dyn|
    *+terminfo*		uses |terminfo| instead of termcap
 N  *+termresponse*	support for |t_RV| and |v:termresponse|
 N  *+textobjects*	|text-objects| selection
diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt
index 3f17ebb..7490a45 100644
--- a/runtime/doc/version6.txt
+++ b/runtime/doc/version6.txt
@@ -1,4 +1,4 @@
-*version6.txt*  For Vim version 7.0aa.  Last change: 2005 Oct 09
+*version6.txt*  For Vim version 7.0aa.  Last change: 2005 Oct 17
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -13863,16 +13863,36 @@
 Changed							*changed-6.4*
 -------
 
-Nothing relevant.
+Removed runtime/tools/tcltags, Exuberant ctags does it better.
 
 
 Added							*added-6.4*
 -----
 
-Netrc syntax file. (Nikolai Weibull)
-Sudoers syntax file. (Nikolai Weibull)
-SMTPrc syntax file. (Kornel Kielczewski)
-Esterel syntax file. (Maurizio Tranchero)
+Alsaconf syntax file (Nikolai Weibull)
+Eruby syntax, indent, compiler and ftplugin file (Doug Kearns)
+Esterel syntax file (Maurizio Tranchero)
+Mathematica indent file (Steve Layland)
+Netrc syntax file (Nikolai Weibull)
+PHP compiler file (Doug Kearns)
+Pascal indent file (Neil Carter)
+Prescribe syntax file (Klaus Muth)
+Rubyunit compiler file (Doug Kearns)
+SMTPrc syntax file (Kornel Kielczewski)
+Sudoers syntax file (Nikolai Weibull)
+TPP syntax file (Gerfried Fuchs)
+VHDL ftplugin file (R. Shankar)
+Verilog-AMS syntax file (S. Myles Prather)
+
+Bulgarian keymap (Alberto Mardegan)
+Canadian keymap (Eric Joanis)
+
+Hungarian menu translations in UTF-8 (Kantra Gergely)
+Ukrainian menu translations (Bohdan Vlasyuk)
+
+Irish message translations (Kevin Patrick Scannell)
+
+Configure also checks for tclsh8.4.
 
 
 Fixed							*fixed-6.4*
@@ -13888,6 +13908,10 @@
 Gcc would warn "dereferencing type-punned pointer will break strict -aliasing
 rules".  Avoid using typecasts for variable pointers.
 
+Gcc 3.x interprets the -MM argument differently.  Change "-I /path" to
+"-isystem /path" for "make depend".
+
+
 Patch 6.3.001
 Problem:    ":browse split" gives the file selection dialog twice. (Gordon
 	    Bazeley)  Same problem for ":browse diffpatch".
@@ -14056,7 +14080,7 @@
 
 Patch 6.3.026
 Problem:    When ~/.vim/after/syntax/syncolor.vim contains a command that
-	    reloads the colors an enless loop and/or a crash may occur.
+	    reloads the colors an endless loop and/or a crash may occur.
 Solution:   Only free the old value of an option when it was originally
 	    allocated.  Limit recursiveness of init_highlight() to 5 levels.
 Files:	    src/option.c, src/syntax.c
@@ -14471,5 +14495,36 @@
 Solution:   Limit the values to 10000 and 1000.
 Files:	    src/option.c
 
+Patch 6.4a.001
+Problem:    The Unix Makefile contained too many dependencies and a few
+	    uncommented lines.
+Solution:   Run "make depend" with manual changes to avoid a gcc
+	    incompatibility.  Comment a few lines.
+Files:	    src/Makefile
+
+Patch 6.4b.001
+Problem:    Vim reports "Vim 6.4a" in the ":version" output.
+Solution:   Change "a" to "b". (Tony Mechelynck)
+Files:	    src/version.h
+
+Patch 6.4b.002
+Problem:    In Insert mode, pasting a multi-byte character after the end of
+	    the line leaves the cursor just before that character.
+Solution:   Make sure "gP" leaves the cursor in the right place when
+	    'virtualedit' is set.
+Files:	    src/ops.c
+
+Patch 6.4b.003 (after 6.4b.002)
+Problem:    The problem still exists when 'encoding' is set to "cp936".
+Solution:   Fix the problem in getvvcol(), compute the coladd field correctly.
+Files:	    src/charset.c, src/ops.c
+
+Patch 6.4b.004
+Problem:    Selecting a {} block with "viB" includes the '}' when there is an
+	    empty line before it.
+Solution:   Don't advance the cursor to include a line break when it's already
+	    at the line break.
+Files:	    src/search.c
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index a7f1201..65ecbc8 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Oct 11
+*version7.txt*  For Vim version 7.0aa.  Last change: 2005 Nov 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -429,7 +429,7 @@
 			Lakshmanan).
 
 
-New functions: ~
+New and extended functions: ~
 
 |add()|			append an item to a List
 |append()|		append List of lines to the buffer
@@ -570,7 +570,7 @@
 Also fixes the problem that setting 'clipboard' to "unnamed" breaks using
 "yyp".
 
-Mac: GUI font selector. (Peter "Rain Dog" Cucka)
+Mac: GUI font selector. (Peter Cucka)
 
 Mac: support for multi-byte characters. (Da Woon Jung)
 
@@ -619,6 +619,9 @@
 
 Move the help for printing to a separate help file.  It's quite a lot now.
 
+When ":silent" is used and a backwards range is given for an Ex command the
+range is swapped automatically instead of asking if that is OK.
+
 The pattern matching code was changed from a recursive function to an
 iterative mechanism.  This avoids out-of-stack errors.  State is stored in
 allocated memory, running out of memory can always be detected.  Allows
@@ -636,7 +639,7 @@
 Added "nbsp" in 'listchars'. (David Blanchet)
 
 Added the "acwrite" value for the 'buftype' option.  This is for a buffer that
-doesn not have a name that refers to a file and is written with BufWriteCmd
+does not have a name that refers to a file and is written with BufWriteCmd
 autocommands.
 
 For lisp indenting and matching parenthesis: (Sergey Khorev)
@@ -816,7 +819,7 @@
 sorted: user commands, variables, syntax names, etc.
 
 When no locale is set, thus using the "C" locale, Vim will work with latin1
-characters, using it's own isupper()/toupper()/etc. functions.
+characters, using its own isupper()/toupper()/etc. functions.
 
 When using an rxvt terminal emulator guess the value of 'background' using the
 COLORFGBG environment variable. (Ciaran McCreesh)
@@ -1395,4 +1398,13 @@
 Columns.  Fixed bad effects when running out of memory (command line would be
 reversed, ":qa!" resulted in ":!aq").
 
+Motif: "gvim -iconic" opened the window anyway.  (David Harrison)
+
+There is a tiny chance that a symlink gets created between checking for an
+existing file and creating a file.  Use the O_NOFOLLOW for open() if it's
+available.
+
+In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of
+sticking to the first column.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/zip.txt b/runtime/doc/zip.txt
index aa95460..3ca3683 100644
--- a/runtime/doc/zip.txt
+++ b/runtime/doc/zip.txt
@@ -1,4 +1,4 @@
-*zip.txt*	Zip File Interface				Sep 16, 2005
+*zip.txt*	Zip File Interface				Nov 03, 2005
 
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
 	  (remove NOSPAM from Campbell's email first)
@@ -20,12 +20,21 @@
 ==============================================================================
 2. Usage					*zip-usage* *zip-manual*
 
+   When one edits a *.zip file, this plugin will handle displaying a
+   contents page.  Select a file to edit by moving the cursor atop
+   the desired file, then hit the <return> key.  After editing, one may
+   also write to the file.  Currently, one may not make a new file in
+   zip archives via the plugin.
+
 ==============================================================================
 3. History					*zip-history*
+   v3 Oct 18, 2005 * <amatch> used instead of <afile> in autocmds
    v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt)
                    * began testing under Windows; works thus far
 		   * filetype detection fixed
-   v1 Sep 15, 2005 * Initial release, had browsin, reading, and writing
+      Nov 03, 2005 * handles writing zipfiles across a network using
+                     netrw#NetWrite()
+   v1 Sep 15, 2005 * Initial release, had browsing, reading, and writing
 
 ==============================================================================
 vim:tw=78:ts=8:ft=help
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index edbe718..e2b1d10 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:	2005 Oct 12
+" Last Change:	2005 Nov 23
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1349,6 +1349,9 @@
 " Ruby
 au BufNewFile,BufRead *.rb,*.rbw,*.gem,*.gemspec	setf ruby
 
+" Rantfile is like Ruby
+au BufNewFile,BufRead [rR]antfile,*.rant	setf ruby
+
 " S-lang (or shader language!)
 au BufNewFile,BufRead *.sl			setf slang
 
@@ -1612,9 +1615,19 @@
 " Sudoers
 au BufNewFile,BufRead /etc/sudoers,sudoers.tmp	setf sudoers
 
-" Tads (or Nroff)
+" If the first line starts with '#' and contains 'perl' it's probably a Perl
+" file.
+fun! s:FTperl()
+  if getline(1)[0] == '#' && getline(1) =~ 'perl'
+    setf perl
+    return 1
+  endif
+  return 0
+endfun
+
+" Tads (or Nroff or Perl test file)
 au BufNewFile,BufRead *.t
-	\ if !s:FTnroff() | setf tads | endif
+	\ if !s:FTnroff() && !s:FTperl() | setf tads | endif
 
 " Tags
 au BufNewFile,BufRead tags			setf tags
@@ -1622,8 +1635,8 @@
 " TAK
 au BufNewFile,BufRead *.tak			setf tak
 
-" Tcl
-au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk	setf tcl
+" Tcl (JACL too)
+au BufNewFile,BufRead *.tcl,*.tk,*.itcl,*.itk,*.jacl	setf tcl
 
 " TealInfo
 au BufNewFile,BufRead *.tli			setf tli
diff --git a/runtime/ftplugin/eruby.vim b/runtime/ftplugin/eruby.vim
index ed010d0..d256831 100644
--- a/runtime/ftplugin/eruby.vim
+++ b/runtime/ftplugin/eruby.vim
@@ -2,14 +2,8 @@
 " Language:	eRuby
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 
 " Only do this when not done yet for this buffer
diff --git a/runtime/ftplugin/ocaml.vim b/runtime/ftplugin/ocaml.vim
index c2bc20e..322be55 100644
--- a/runtime/ftplugin/ocaml.vim
+++ b/runtime/ftplugin/ocaml.vim
@@ -1,38 +1,36 @@
-" Vim settings file
-" Language:     OCaml
-" Maintainers:  Mike Leary          <leary@nwlink.com>
-"               Markus Mottl        <markus@oefai.at>
-"               Stefano Zacchiroli  <zack@bononia.it>
-" URL:          http://www.oefai.at/~markus/vim/ftplugin/ocaml.vim
-" Last Change:  2004 Apr 12 - better .ml/.mli-switching without Python (SZ)
-"               2003 Nov 21 - match_words-patterns and .ml/.mli-switching (MM)
-"               2003 Oct 16 - re-entered variable 'did_ocaml_dtypes' (MM)
-"               2003 Oct 15 - added Stefano Zacchirolis (SZ) Python-code for
-"                             displaying type annotations (MM)
+" Language:    OCaml
+" Maintainer:  David Baelde        <firstname.name@ens-lyon.org>
+"              Mike Leary          <leary@nwlink.com>
+"              Markus Mottl        <markus.mottl@gmail.com>
+"              Stefano Zacchiroli  <zack@bononia.it>
+" URL:         http://www.ocaml.info/vim/ftplugin/ocaml.vim
+" Last Change: 2005 Oct 13 - removed GPL; better matchit support (MM, SZ)
+"
+" if exists("b:did_ftplugin")
+"   finish
+" endif
+let b:did_ftplugin=1
 
-" Only do these settings when not done yet for this buffer
-if exists("b:did_ftplugin")
-  finish
-endif
-
-" Don't do other file type settings for this buffer
-let b:did_ftplugin = 1
-
+" Error handling -- helps moving where the compiler wants you to go
+let s:cposet=&cpoptions
 set cpo-=C
-
-" Error formats
 setlocal efm=
-  \%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
-  \%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
-  \%+EReference\ to\ unbound\ regexp\ name\ %m,
-  \%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m,
-  \%Wocamlyacc:\ w\ -\ %m,
-  \%-Zmake%.%#,
-  \%C%m
+      \%EFile\ \"%f\"\\,\ line\ %l\\,\ characters\ %c-%*\\d:,
+      \%EFile\ \"%f\"\\,\ line\ %l\\,\ character\ %c:%m,
+      \%+EReference\ to\ unbound\ regexp\ name\ %m,
+      \%Eocamlyacc:\ e\ -\ line\ %l\ of\ \"%f\"\\,\ %m,
+      \%Wocamlyacc:\ w\ -\ %m,
+      \%-Zmake%.%#,
+      \%C%m,
+      \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
+      \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
+      \%D%*\\a:\ Entering\ directory\ `%f',
+      \%X%*\\a:\ Leaving\ directory\ `%f',
+      \%DMaking\ %*\\a\ in\ %f
 
 " Add mappings, unless the user didn't want this.
 if !exists("no_plugin_maps") && !exists("no_ocaml_maps")
-  " Uncommenting
+  " (un)commenting
   if !hasmapto('<Plug>Comment')
     nmap <buffer> <LocalLeader>c <Plug>LUncomOn
     vmap <buffer> <LocalLeader>c <Plug>BUncomOn
@@ -41,46 +39,141 @@
   endif
 
   nnoremap <buffer> <Plug>LUncomOn mz0i(* <ESC>$A *)<ESC>`z
-  nnoremap <buffer> <Plug>LUncomOff <ESC>:s/^(\* \(.*\) \*)/\1/<CR>
+  nnoremap <buffer> <Plug>LUncomOff :s/^(\* \(.*\) \*)/\1/<CR>:noh<CR>
   vnoremap <buffer> <Plug>BUncomOn <ESC>:'<,'><CR>`<O<ESC>0i(*<ESC>`>o<ESC>0i*)<ESC>`<
   vnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`<
 
   if !hasmapto('<Plug>Abbrev')
-    iabbrev <buffer> ASS (assert false)
+    iabbrev <buffer> ASS (assert false (* XXX *))
   endif
 endif
 
 " Let % jump between structure elements (due to Issac Trotts)
-let b:mw='\<let\>:\<and\>:\(\<in\>\|;;\),'
-let b:mw=b:mw . '\<if\>:\<then\>:\<else\>,\<do\>:\<done\>,'
-let b:mw=b:mw . '\<\(object\|sig\|struct\|begin\)\>:\<end\>'
-let b:match_words=b:mw
+let b:mw = ''
+let b:mw = b:mw . ',\<let\>:\<and\>:\(\<in\>\|;;\)'
+let b:mw = b:mw . ',\<if\>:\<then\>:\<else\>'
+let b:mw = b:mw . ',\<\(for\|while\)\>:\<do\>:\<done\>,'
+let b:mw = b:mw . ',\<\(object\|sig\|struct\|begin\)\>:\<end\>'
+let b:mw = b:mw . ',\<\(match\|try\)\>:\<with\>'
+let b:match_words = b:mw
+
+let b:match_ignorecase=0
 
 " switching between interfaces (.mli) and implementations (.ml)
 if !exists("g:did_ocaml_switch")
   let g:did_ocaml_switch = 1
-  map ,s :call OCaml_switch(0)<CR>
-  map ,S :call OCaml_switch(1)<CR>
+  map <LocalLeader>s :call OCaml_switch(0)<CR>
+  map <LocalLeader>S :call OCaml_switch(1)<CR>
   fun OCaml_switch(newwin)
     if (match(bufname(""), "\\.mli$") >= 0)
       let fname = substitute(bufname(""), "\\.mli$", ".ml", "")
       if (a:newwin == 1)
-	exec "new " . fname
+        exec "new " . fname
       else
-	exec "arge " . fname
+        exec "arge " . fname
       endif
     elseif (match(bufname(""), "\\.ml$") >= 0)
       let fname = bufname("") . "i"
       if (a:newwin == 1)
-	exec "new " . fname
+        exec "new " . fname
       else
-	exec "arge " . fname
+        exec "arge " . fname
       endif
     endif
   endfun
 endif
 
-" Vim support for OCaml 3.07 .annot files (requires Vim with python support)
+" Folding support
+
+" Get the modeline because folding depends on indentation
+let s:s = line2byte(line('.'))+col('.')-1
+if search('^\s*(\*:o\?caml:')
+  let s:modeline = getline(".")
+else
+  let s:modeline = ""
+endif
+if s:s > 0
+  exe 'goto' s:s
+endif
+
+" Get the indentation params
+let s:m = matchstr(s:modeline,'default\s*=\s*\d\+')
+if s:m != ""
+  let s:idef = matchstr(s:m,'\d\+')
+elseif exists("g:omlet_indent")
+  let s:idef = g:omlet_indent
+else
+  let s:idef = 2
+endif
+let s:m = matchstr(s:modeline,'struct\s*=\s*\d\+')
+if s:m != ""
+  let s:i = matchstr(s:m,'\d\+')
+elseif exists("g:omlet_indent_struct")
+  let s:i = g:omlet_indent_struct
+else
+  let s:i = s:idef
+endif
+
+" Set the folding method
+if exists("g:ocaml_folding")
+  setlocal foldmethod=expr
+  setlocal foldexpr=OMLetFoldLevel(v:lnum)
+endif
+
+" - Only definitions below, executed once -------------------------------------
+
+if exists("*OMLetFoldLevel")
+  finish
+endif
+
+function s:topindent(lnum)
+  let l = a:lnum
+  while l > 0
+    if getline(l) =~ '\s*\%(\<struct\>\|\<sig\>\|\<object\>\)'
+      return indent(l)
+    endif
+    let l = l-1
+  endwhile
+  return -s:i
+endfunction
+
+function OMLetFoldLevel(l)
+
+  " This is for not merging blank lines around folds to them
+  if getline(a:l) !~ '\S'
+    return -1
+  endif
+
+  " We start folds for modules, classes, and every toplevel definition
+  if getline(a:l) =~ '^\s*\%(\<val\>\|\<module\>\|\<class\>\|\<type\>\|\<method\>\|\<initializer\>\|\<inherit\>\|\<exception\>\|\<external\>\)'
+    exe 'return ">' (indent(a:l)/s:i)+1 '"'
+  endif
+
+  " Toplevel let are detected thanks to the indentation
+  if getline(a:l) =~ '^\s*let\>' && indent(a:l) == s:i+s:topindent(a:l)
+    exe 'return ">' (indent(a:l)/s:i)+1 '"'
+  endif
+
+  " We close fold on end which are associated to struct, sig or object.
+  " We use syntax information to do that.
+  if getline(a:l) =~ '^\s*end\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), "name") != "ocamlKeyword"
+    return (indent(a:l)/s:i)+1
+  endif
+
+  " Folds end on ;;
+  if getline(a:l) =~ '^\s*;;'
+    exe 'return "<' (indent(a:l)/s:i)+1 '"'
+  endif
+
+  " Comments around folds aren't merged to them.
+  if synIDattr(synID(a:l, indent(a:l)+1, 0), "name") == "ocamlComment"
+    return -1
+  endif
+
+  return '='
+endfunction
+
+" Vim support for OCaml .annot files (requires Vim with python support)
 "
 " Executing OCamlPrintType(<mode>) function will display in the Vim bottom
 " line(s) the type of an ocaml value getting it from the corresponding .annot
@@ -92,37 +185,15 @@
 " .annot files are parsed lazily the first time OCamlPrintType is invoked; is
 " also possible to force the parsing using the OCamlParseAnnot() function.
 "
-" Hitting the <F3> key will cause OCamlPrintType function to be invoked with
+" Typing ',3' will cause OCamlPrintType function to be invoked with
 " the right argument depending on the current mode (visual or not).
 "
-" Copyright (C) <2003> Stefano Zacchiroli <zack@bononia.it>
+" Copyright (C) <2003-2004> Stefano Zacchiroli <zack@bononia.it>
 "
 " Created:        Wed, 01 Oct 2003 18:16:22 +0200 zack
-" LastModified:   Mon, 06 Oct 2003 11:05:39 +0200 zack
-"
-" This program is free software; you can redistribute it and/or modify
-" it under the terms of the GNU General Public License as published by
-" the Free Software Foundation; either version 2 of the License, or
-" (at your option) any later version.
-"
-" This program is distributed in the hope that it will be useful,
-" but WITHOUT ANY WARRANTY; without even the implied warranty of
-" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-" GNU General Public License for more details.
-"
-" You should have received a copy of the GNU General Public License
-" along with this program; if not, write to the Free Software
-" Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-"
+" LastModified:   Wed, 25 Aug 2004 18:28:39 +0200 zack
 
 if !has("python")
-  echo "Python support not found: OCaml .annot support disabled"
-  finish
-endif
-
-if !exists("g:did_ocaml_dtypes")
-  let g:did_ocaml_dtypes = 1
-else
   finish
 endif
 
@@ -166,7 +237,7 @@
            at least two space characters.
 
       - in each block, the two positions are respectively the start and the
-      - end of the range described by the block.
+        end of the range described by the block.
       - in a position, the filename is the name of the file, the first num
         is the line number, the second num is the offset of the beginning
         of the line, the third num is the offset of the position itself.
@@ -182,7 +253,7 @@
         self.__timestamp = None # last parse action timestamp
         self.__annot = {}
         self.__re = re.compile(
-          '^"[^"]+"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]+"\s+(\d+)\s+(\d+)\s+(\d+)$')
+          '^"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)\s+"[^"]*"\s+(\d+)\s+(\d+)\s+(\d+)$')
 
     def __parse(self, fname):
         try:
@@ -210,7 +281,9 @@
                     lineno += 1
                     if (line == ""): raise malformed_annotations(lineno)
                 type = string.join(type, "\n")
-                self.__annot[(line1, col1), (line2, col2)] = type
+                key = ((line1, col1), (line2, col2))
+                if not self.__annot.has_key(key):
+                    self.__annot[key] = type
                 line = f.readline() # position line
             f.close()
             self.__filename = fname
@@ -285,7 +358,7 @@
 
 EOF
 
-fun OCamlPrintType(current_mode)
+fun! OCamlPrintType(current_mode)
   if (a:current_mode == "visual")
     python printOCamlType("visual")
   else
@@ -293,9 +366,15 @@
   endif
 endfun
 
-fun OCamlParseAnnot()
+fun! OCamlParseAnnot()
   python parseOCamlAnnot()
 endfun
 
-map <F3> :call OCamlPrintType("normal")<RETURN>
-vmap <F3> :call OCamlPrintType("visual")<RETURN>
+map <LocalLeader>t :call OCamlPrintType("normal")<RETURN>
+vmap <LocalLeader>t :call OCamlPrintType("visual")<RETURN>
+
+let &cpoptions=s:cposet
+unlet s:cposet
+
+" vim:sw=2
+
diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim
index 6f06561..4c8db85 100644
--- a/runtime/ftplugin/ruby.vim
+++ b/runtime/ftplugin/ruby.vim
@@ -2,14 +2,8 @@
 " Language:	Ruby
 " Maintainer:	Gavin Sinclair <gsinclair at soyabean.com.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 "
 " Original matchit support thanks to Ned Konz.	See his ftplugin/ruby.vim at
diff --git a/runtime/ftplugin/xml.vim b/runtime/ftplugin/xml.vim
index 7bde8e7..8cff537 100644
--- a/runtime/ftplugin/xml.vim
+++ b/runtime/ftplugin/xml.vim
@@ -32,6 +32,15 @@
      \  '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>'
 endif
 
+"
+" For Omni completion, by Mikolaj Machowski.
+if exists('&ofu')
+  setlocal ofu=xmlcomplete#CompleteTags
+endif
+command! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>)
+command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>)
+
+
 " Change the :browse e filter to primarily show xml-related files.
 if has("gui_win32")
     let  b:browsefilter="XML Files (*.xml)\t*.xml\n" .
diff --git a/runtime/indent/d.vim b/runtime/indent/d.vim
new file mode 100644
index 0000000..b5dd5e8
--- /dev/null
+++ b/runtime/indent/d.vim
@@ -0,0 +1,22 @@
+" Vim indent file for the D programming language (version 0.137).
+"
+" Language:	D
+" Maintainer:	Jason Mills<jmills@cs.mun.ca>
+" Last Change:	2005 Nov 22
+" Version:	0.1
+"
+" Please email me with bugs, comments, and suggestion. Put vim in the subject
+" to ensure the email will not be marked has spam.
+"
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+
+let b:did_indent = 1
+
+" D indenting is a lot like the built-in C indenting.
+setlocal cindent
+
+" vim: ts=8 noet
diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim
index 81f7c1a..b62a024 100644
--- a/runtime/indent/eruby.vim
+++ b/runtime/indent/eruby.vim
@@ -2,14 +2,8 @@
 " Language:	Ruby
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.rubyforge.org/
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 
 " Only load this indent file when no other was loaded.
diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim
index 22210ce..8d05b03 100644
--- a/runtime/indent/php.vim
+++ b/runtime/indent/php.vim
@@ -2,17 +2,19 @@
 " Language:	PHP
 " Author:	John Wellesz <John.wellesz (AT) teaser (DOT) fr>
 " URL:		http://www.2072productions.com/vim/indent/php.vim
-" Last Change: 2005 September 22th
-" Version: 1.181
+" Last Change: 2005 Nobember 21st
+" Version: 1.20
 "
-" The change log and all the comments have been removed from this file.
+"  The change log and all the comments have been removed from this file.
 "
-" For a complete change log and fully commented code, download the script on
-" 2072productions.com at the URI provided above.
-"
-"
+"  For a complete change log and fully commented code, download the script on
+"  2072productions.com at the URI provided above.
+" 
 "  If you find a bug, please e-mail me at John.wellesz (AT) teaser (DOT) fr
-"  with an example of code that breaks the algorithm.
+"  with an example of code that break the algorithm.
+"
+"
+"	Thanks a lot for using this script.
 "
 "
 " NOTE: This script must be used with PHP syntax ON and with the php syntax
@@ -23,6 +25,7 @@
 "	tags not at col 1 you'll have to indent your file 2 times (This script 
 "	will automatically put HereDoc end tags at col 1).
 " 
+"
 " NOTE: If you are editing file in Unix file format and that (by accident)
 " there are '\r' before new lines, this script won't be able to proceed
 " correctly and will make many mistakes because it won't be able to match
@@ -34,31 +37,36 @@
 " or simply 'let' the option PHP_removeCRwhenUnix to 1 and the script will
 " silently remove them when VIM load this script (at each bufread).
 
+
+" Options: PHP_autoformatcomment = 0 to not enable autoformating of comment by
+"		    default, if set to 0, this script will let the 'formatoptions' setting intact.
+" 
 " Options: PHP_default_indenting = # of sw (default is 0), # of sw will be
-"	   added to the indent of each line of PHP code.
+"		   added to the indent of each line of PHP code.
 "
 " Options: PHP_removeCRwhenUnix = 1 to make the script automatically remove CR
-"	   at end of lines (by default this option is unset), NOTE that you
-"	   MUST remove CR when the fileformat is UNIX else the indentation
-"	   won't be correct...
+"		   at end of lines (by default this option is unset), NOTE that you
+"		   MUST remove CR when the fileformat is UNIX else the indentation
+"		   won't be correct...
 "
 " Options: PHP_BracesAtCodeLevel = 1 to indent the '{' and '}' at the same
-"	   level than the code they contain.
-"	   Exemple:
-"		Instead of:
-"			if ($foo)
-"			{
-"				foo();
-"			}
-"
-"		You will write:
-"			if ($foo)
+"		   level than the code they contain.
+"		   Exemple:
+"			Instead of:
+"				if ($foo)
 "				{
-"				foo();
+"					foo();
 "				}
 "
-"		NOTE: The script will be a bit slower if you use this option because
-"		some optimizations won't be available.
+"			You will write:
+"				if ($foo)
+"					{
+"					foo();
+"					}
+"
+"			NOTE: The script will be a bit slower if you use this option because
+"			some optimizations won't be available.
+
 
 
 if exists("b:did_indent")
@@ -82,6 +90,11 @@
     let b:PHP_BracesAtCodeLevel = 0
 endif
 
+if exists("PHP_autoformatcomment")
+    let b:PHP_autoformatcomment = PHP_autoformatcomment
+else
+    let b:PHP_autoformatcomment = 1
+endif
 
 let b:PHP_lastindented = 0
 let b:PHP_indentbeforelast = 0
@@ -114,12 +127,12 @@
 endif
 
 if exists("*GetPhpIndent")
-    finish " XXX
+   finish " XXX
 endif
 
 let s:endline= '\s*\%(//.*\|#.*\|/\*.*\*/\s*\)\=$'
 let s:PHP_startindenttag = '<?\%(.*?>\)\@!\|<script[^>]*>\%(.*<\/script>\)\@!'
-"setlocal debug=msg " XXX
+" setlocal debug=msg " XXX
 
 
 function! GetLastRealCodeLNum(startline) " {{{
@@ -141,7 +154,7 @@
 	    if lastline !~ '^\*/'
 		call search('\*/', 'W')
 	    endif
-	    let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
+	    let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')
 
 	    let lastline = getline(lnum)
 	    if lastline =~ '^\s*/\*'
@@ -184,6 +197,17 @@
     return lnum
 endfunction " }}}
 
+function! Skippmatch2()
+
+    let line = getline(".")
+
+   if line =~ '\%(".*\)\@<=/\*\%(.*"\)\@=' || line =~ '\%(//.*\)\@<=/\*'
+       return 1
+   else
+       return 0
+   endif
+endfun
+
 function! Skippmatch()  " {{{
     let synname = synIDattr(synID(line("."), col("."), 0), "name")
     if synname == "Delimiter" || synname == "phpParent" || synname == "javaScriptBraces" || synname == "phpComment" && b:UserIsTypingComment
@@ -245,7 +269,7 @@
     let cline = getline(a:lnum)
 
     if a:tofind==""
-	let tofind = "^\\s*[\"']*\s*\\zs\\S"
+	let tofind = "^\\s*[\"']*\\s*\\zs\\S"
     else
 	let tofind = a:tofind
     endif
@@ -264,17 +288,28 @@
 endfunction " }}}
 
 let s:notPhpHereDoc = '\%(break\|return\|continue\|exit\);'
-let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|[|&]\)'
+let s:blockstart = '\%(\%(\%(}\s*\)\=else\%(\s\+\)\=\)\=if\>\|else\>\|while\>\|switch\>\|for\%(each\)\=\>\|declare\>\|class\>\|interface\>\|abstract\>\|[|&]\)'
 
 let s:autorestoptions = 0
 if ! s:autorestoptions
-    au BufWinEnter,Syntax *.php,*.php3,*.php4,*.php5 call ResetOptions()
+    au BufWinEnter,Syntax	*.php,*.php3,*.php4,*.php5	call ResetOptions()
     let s:autorestoptions = 1
 endif
 
 function! ResetOptions()
     if ! b:optionsset
-	setlocal formatoptions=qroc
+	if b:PHP_autoformatcomment
+
+	    setlocal comments=s1:/*,mb:*,ex:*/,://,:#
+	    
+	    setlocal formatoptions-=t
+	    setlocal formatoptions+=q
+	    setlocal formatoptions+=r
+	    setlocal formatoptions+=o
+	    setlocal formatoptions+=w
+	    setlocal formatoptions+=c
+	    setlocal formatoptions+=b
+	endif
 	let b:optionsset = 1
     endif
 endfunc
@@ -376,7 +411,7 @@
 		if cline !~ '^\*/'
 		    call search('\*/', 'W')
 		endif
-		let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
+		let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')
 
 		let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
 
@@ -493,7 +528,7 @@
 	if cline !~ '^\*/'
 	    call search('\*/', 'W')
 	endif
-	let lnum = searchpair('/\*', '', '\*/', s:searchpairflags)
+	let lnum = searchpair('/\*', '', '\*/', s:searchpairflags, 'Skippmatch2()')
 
 	let b:PHP_CurrentIndentLevel = b:PHP_default_indenting
 
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim
index e5946eb..5d48a79 100644
--- a/runtime/indent/ruby.vim
+++ b/runtime/indent/ruby.vim
@@ -1,16 +1,10 @@
 " Vim indent file
-" Language:     Ruby
-" Maintainer:   Gavin Sinclair <gsinclair at soyabean.com.au>
-" Developer:    Nikolai Weibull <source at pcppopper.org>
-" Info:         $Id$
-" URL:          http://vim-ruby.rubyforge.org/
-" Anon CVS:     See above site
-" Licence:      GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
+" Language:	Ruby
+" Maintainer:	Gavin Sinclair <gsinclair at soyabean.com.au>
+" Developer:	Nikolai Weibull <source at pcppopper.org>
+" Info:		$Id$
+" URL:		http://vim-ruby.rubyforge.org
+" Anon CVS:	See above site
 " ----------------------------------------------------------------------------
 
 " 0. Initialization {{{1
@@ -42,17 +36,13 @@
 let s:syng_strcom = '\<ruby\%(String\|StringDelimiter\|ASCIICode' .
       \ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>'
 
-" Regex of syntax group names that are strings or comments.
-let s:syng_strcom2 = '\<ruby\%(String' .
-      \ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>'
-
 " Regex of syntax group names that are strings.
 let s:syng_string =
-      \ '\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\)\>'
+      \ '\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\)\>'
 
 " Regex of syntax group names that are strings or documentation.
 let s:syng_stringdoc =
-  \'\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>'
+  \'\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>'
 
 " Expression used to check whether we should skip a match with searchpair().
 let s:skip_expr =
@@ -109,11 +99,6 @@
   return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom
 endfunction
 
-" Check if the character at lnum:col is inside a string or comment.
-function s:IsInStringOrComment2(lnum, col)
-  return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom2
-endfunction
-
 " Check if the character at lnum:col is inside a string.
 function s:IsInString(lnum, col)
   return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_string
@@ -134,14 +119,14 @@
     let line = getline(lnum)
     if line =~ '^=begin$'
       if in_block
-        let in_block = 0
+	let in_block = 0
       else
-        break
+	break
       endif
     elseif !in_block && line =~ '^=end$'
       let in_block = 1
     elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1)
-          \ && s:IsInStringOrComment(lnum, strlen(line)))
+	  \ && s:IsInStringOrComment(lnum, strlen(line)))
       break
     endif
     let lnum = prevnonblank(lnum - 1)
@@ -160,7 +145,7 @@
     let line = getline(lnum)
     let col = match(line, s:continuation_regex2) + 1
     if (col > 0 && !s:IsInStringOrComment(lnum, col))
-          \ || s:IsInString(lnum, strlen(line))
+	  \ || s:IsInString(lnum, strlen(line))
       let msl = lnum
     else
       break
@@ -181,9 +166,9 @@
     if !s:IsInStringOrComment(a:lnum, pos + 1)
       let idx = stridx('(){}[]', line[pos])
       if idx % 2 == 0
-        let open_{idx} = open_{idx} + 1
+	let open_{idx} = open_{idx} + 1
       else
-        let open_{idx - 1} = open_{idx - 1} - 1
+	let open_{idx - 1} = open_{idx - 1} - 1
       endif
     endif
     let pos = match(line, '[][(){}]', pos + 1)
@@ -246,13 +231,13 @@
   if s:Match(v:lnum, s:ruby_deindent_keywords)
     call cursor(v:lnum, 1)
     if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
-            \ s:end_skip_expr) > 0
+	    \ s:end_skip_expr) > 0
       let line = getline('.')
       if strpart(line, 0, col('.') - 1) =~ '=\s*$' &&
        \ strpart(line, col('.') - 1, 2) !~ 'do'
-        let ind = virtcol('.') - 1
+	let ind = virtcol('.') - 1
       else
-        let ind = indent('.')
+	let ind = indent('.')
       endif
     endif
     return ind
@@ -302,12 +287,12 @@
   if col > 0
     call cursor(lnum, col)
     if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW',
-                \ s:end_skip_expr) > 0
+		\ s:end_skip_expr) > 0
       let n = line('.')
       let ind = indent('.')
       let msl = s:GetMSL(n)
       if msl != n
-        let ind = indent(msl)
+	let ind = indent(msl)
       end
       return ind
     endif
diff --git a/runtime/plugin/NetrwPlugin.vim b/runtime/plugin/NetrwPlugin.vim
new file mode 100644
index 0000000..f28c2eb
--- /dev/null
+++ b/runtime/plugin/NetrwPlugin.vim
@@ -0,0 +1,156 @@
+" netrw.vim: Handles file transfer and remote directory listing across a network
+"            PLUGIN PORTION
+" Last Change:	Aug 31, 2005
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Version:	67
+" License:	Vim License  (see vim's :help license)
+" GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
+" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+"               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,
+"               netrw.vim is provided *as is* and 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.
+"
+"  But be doers of the Word, and not only hearers, deluding your own selves {{{1
+"  (James 1:22 RSV)
+" =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+" ---------------------------------------------------------------------
+" Load Once: {{{1
+if exists("g:loaded_netrw") || &cp
+  finish
+endif
+if v:version < 600
+ echoerr "***netrw*** doesn't support Vim version ".v:version
+ finish
+endif
+let g:loaded_netrw  = "v67"
+if v:version < 700
+ let loaded_explorer = 1
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+" ---------------------------------------------------------------------
+" Public Interface: {{{1
+
+" Local Browsing: {{{2
+augroup FileExplorer
+ au!
+ au BufEnter * call s:LocalBrowse(expand("<amatch>"))
+augroup END
+
+" Network Browsing Reading Writing: {{{2
+augroup Network
+ au!
+ if has("win32") || has("win95") || has("win64") || has("win16")
+  au BufReadCmd  file://*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+ else
+  au BufReadCmd  file:///*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+ endif
+ au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
+ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread "   .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
+ au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
+ au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*    	exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
+augroup END
+
+" Commands: :Nread, :Nwrite, :NetUserPass {{{2
+com! -nargs=*		Nread		call netrw#NetSavePosn()<bar>call netrw#NetRead(<f-args>)<bar>call netrw#NetRestorePosn()
+com! -range=% -nargs=*	Nwrite		call netrw#NetSavePosn()<bar><line1>,<line2>call netrw#NetWrite(<f-args>)<bar>call netrw#NetRestorePosn()
+com! -nargs=*		NetUserPass	call NetUserPass(<f-args>)
+
+" Commands: :Explore, :Sexplore, Hexplore, Vexplore {{{2
+com! -nargs=? -bar -bang -count=0  	Explore		call netrw#Explore(<count>,0,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Sexplore	call netrw#Explore(<count>,1,0+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Hexplore	call netrw#Explore(<count>,1,2+<bang>0,<q-args>)
+com! -nargs=? -bar -bang -count=0  	Vexplore	call netrw#Explore(<count>,1,4+<bang>0,<q-args>)
+com! -nargs=? -bar -bang   		Nexplore	call netrw#Explore(-1,0,0,<q-args>)
+com! -nargs=? -bar -bang   		Pexplore	call netrw#Explore(-2,0,0,<q-args>)
+
+" Commands: NetrwSettings {{{2
+com! -nargs=0 NetrwSettings :call NetrwSettings#NetrwSettings()
+
+" ---------------------------------------------------------------------
+" LocalBrowse: {{{2
+fun! s:LocalBrowse(dirname)
+  " unfortunate interaction -- debugging calls can't be used here;
+  " the BufEnter event causes triggering when attempts to write to
+  " the DBG buffer are made.
+  if isdirectory(a:dirname)
+   call netrw#DirBrowse(a:dirname)
+  endif
+  " not a directory, ignore it
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwStatusLine: {{{1
+fun! NetrwStatusLine()
+"  let g:stlmsg= "Xbufnr=".w:netrw_explore_bufnr." bufnr=".bufnr(".")." Xline#".w:netrw_explore_line." line#".line(".")
+  if !exists("w:netrw_explore_bufnr") || w:netrw_explore_bufnr != bufnr(".") || !exists("w:netrw_explore_line") || w:netrw_explore_line != line(".") || !exists("w:netrw_explore_list")
+   let &stl= s:netrw_explore_stl
+   if exists("w:netrw_explore_bufnr")|unlet w:netrw_explore_bufnr|endif
+   if exists("w:netrw_explore_line")|unlet w:netrw_explore_line|endif
+   return ""
+  else
+   return "Match ".w:netrw_explore_mtchcnt." of ".w:netrw_explore_listlen
+  endif
+endfun
+
+" ------------------------------------------------------------------------
+" NetUserPass: set username and password for subsequent ftp transfer {{{1
+"   Usage:  :call NetUserPass()			-- will prompt for userid and password
+"	    :call NetUserPass("uid")		-- will prompt for password
+"	    :call NetUserPass("uid","password") -- sets global userid and password
+fun! NetUserPass(...)
+
+ " get/set userid
+ if a:0 == 0
+"  call Dfunc("NetUserPass(a:0<".a:0.">)")
+  if !exists("g:netrw_uid") || g:netrw_uid == ""
+   " via prompt
+   let g:netrw_uid= input('Enter username: ')
+  endif
+ else	" from command line
+"  call Dfunc("NetUserPass(a:1<".a:1.">) {")
+  let g:netrw_uid= a:1
+ endif
+
+ " get password
+ if a:0 <= 1 " via prompt
+"  call Decho("a:0=".a:0." case <=1:")
+  let g:netrw_passwd= inputsecret("Enter Password: ")
+ else " from command line
+"  call Decho("a:0=".a:0." case >1: a:2<".a:2.">")
+  let g:netrw_passwd=a:2
+ endif
+"  call Dret("NetUserPass")
+endfun
+
+" ------------------------------------------------------------------------
+" NetReadFixup: this sort of function is typically written by the user {{{1
+"               to handle extra junk that their system's ftp dumps
+"               into the transfer.  This function is provided as an
+"               example and as a fix for a Windows 95 problem: in my
+"               experience, win95's ftp always dumped four blank lines
+"               at the end of the transfer.
+if has("win95") && g:netrw_win95ftp
+ fun! NetReadFixup(method, line1, line2)
+"   call Dfunc("NetReadFixup(method<".a:method."> line1=".a:line1." line2=".a:line2.")")
+   if method == 3   " ftp (no <.netrc>)
+    let fourblanklines= line2 - 3
+    silent fourblanklines.",".line2."g/^\s*/d"
+   endif
+"   call Dret("NetReadFixup")
+ endfun
+endif
+
+let &cpo= s:keepcpo
+unlet s:keepcpo
+" ------------------------------------------------------------------------
+" Modelines: {{{1
+" vim:ts=8 fdm=marker
diff --git a/runtime/plugin/NetrwSettings.vim b/runtime/plugin/NetrwSettings.vim
new file mode 100644
index 0000000..eecdcd2
--- /dev/null
+++ b/runtime/plugin/NetrwSettings.vim
@@ -0,0 +1,157 @@
+" NetrwSettings.vim: makes netrw settings simpler
+" Last Change:	Aug 16, 2005
+" Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
+" Version:		3
+" Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
+"               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,
+"               NetrwSettings.vim is provided *as is* and 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.
+"
+" Mat 4:23 (WEB) Jesus went about in all Galilee, teaching in their {{{1
+"                synagogues, preaching the gospel of the kingdom, and healing
+"                every disease and every sickness among the people.
+" Load Once: {{{1
+if exists("g:loaded_NetrwSettings") || &cp
+  finish
+endif
+let g:loaded_NetrwSettings  = "v3"
+
+" ---------------------------------------------------------------------
+" NetrwSettings: {{{1
+fun! NetrwSettings#NetrwSettings()
+  " this call is here largely just to insure that netrw has been loaded
+  call netrw#NetSavePosn()
+
+  above wincmd s
+  enew
+  setlocal noswapfile bh=wipe
+  set ft=vim
+  file Netrw\ Settings
+
+  " these variables have the following default effects when they don't
+  " exist (ie. have not been set by the user in his/her .vimrc)
+  if !exists("g:netrw_longlist")
+   let g:netrw_longlist= 0
+   let g:netrw_list_cmd= "ssh HOSTNAME ls -FLa"
+  endif
+  if !exists("g:netrw_silent")
+   let g:netrw_silent= 0
+  endif
+  if !exists("g:netrw_use_nt_rcp")
+   let g:netrw_use_nt_rcp= 0
+  endif
+  if !exists("g:netrw_ftp")
+   let g:netrw_ftp= 0
+  endif
+  if !exists("g:netrw_ignorenetrc")
+   let g:netrw_ignorenetrc= 0
+  endif
+
+  put ='+ ---------------------------------------------'
+  put ='+ NetrwSettings:  (by Charles E. Campbell, Jr.)'
+  put ='+  Press ? with cursor atop any line for help  '
+  put ='+ ---------------------------------------------'
+  let s:netrw_settings_stop= line(".")
+
+  put =''
+  put ='+ Netrw Protocol Commands'
+  put = 'let g:netrw_dav_cmd           = '.g:netrw_dav_cmd
+  put = 'let g:netrw_fetch_cmd         = '.g:netrw_fetch_cmd
+  put = 'let g:netrw_ftp_cmd           = '.g:netrw_ftp_cmd
+  put = 'let g:netrw_http_cmd          = '.g:netrw_http_cmd
+  put = 'let g:netrw_rcp_cmd           = '.g:netrw_rcp_cmd
+  put = 'let g:netrw_rsync_cmd         = '.g:netrw_rsync_cmd
+  put = 'let g:netrw_scp_cmd           = '.g:netrw_scp_cmd
+  put = 'let g:netrw_sftp_cmd          = '.g:netrw_sftp_cmd
+  let s:netrw_protocol_stop= line(".")
+  put = ''
+
+  put ='+Netrw Transfer Control'
+  put = 'let g:netrw_cygwin            = '.g:netrw_cygwin
+  put = 'let g:netrw_ftp               = '.g:netrw_ftp
+  put = 'let g:netrw_ftpmode           = '.g:netrw_ftpmode
+  put = 'let g:netrw_ignorenetrc       = '.g:netrw_ignorenetrc
+  put = 'let g:netrw_use_nt_rcp        = '.g:netrw_use_nt_rcp
+  put = 'let g:netrw_win95ftp          = '.g:netrw_win95ftp
+  let s:netrw_xfer_stop= line(".")
+
+  put = ''
+  put ='+ Netrw Browser Control'
+  put = 'let g:netrw_alto              = '.g:netrw_alto
+  put = 'let g:netrw_altv              = '.g:netrw_altv
+  put = 'let g:netrw_dirhistmax        = '.g:netrw_dirhistmax
+  put = 'let g:netrw_ftp_browse_reject = '.g:netrw_ftp_browse_reject
+  put = 'let g:netrw_ftp_list_cmd      = '.g:netrw_ftp_list_cmd
+  put = 'let g:netrw_hide              = '.g:netrw_hide
+  put = 'let g:netrw_keepdir           = '.g:netrw_keepdir
+  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
+  put = 'let g:netrw_list_cmd          = '.g:netrw_list_cmd
+  put = 'let g:netrw_list_hide         = '.g:netrw_list_hide
+  put = 'let g:netrw_local_mkdir       = '.g:netrw_local_mkdir
+  put = 'let g:netrw_local_rmdir       = '.g:netrw_local_rmdir
+  put = 'let g:netrw_longlist          = '.g:netrw_longlist
+  put = 'let g:netrw_maxfilenamelen    = '.g:netrw_maxfilenamelen
+  put = 'let g:netrw_mkdir_cmd         = '.g:netrw_mkdir_cmd
+  put = 'let g:netrw_rename_cmd        = '.g:netrw_rename_cmd
+  put = 'let g:netrw_rm_cmd            = '.g:netrw_rm_cmd
+  put = 'let g:netrw_rmdir_cmd         = '.g:netrw_rmdir_cmd
+  put = 'let g:netrw_rmf_cmd           = '.g:netrw_rmf_cmd
+  put = 'let g:netrw_silent            = '.g:netrw_silent
+  put = 'let g:netrw_sort_by           = '.g:netrw_sort_by
+  put = 'let g:netrw_sort_direction    = '.g:netrw_sort_direction
+  put = 'let g:netrw_sort_sequence     = '.g:netrw_sort_sequence
+  put = 'let g:netrw_ssh_browse_reject = '.g:netrw_ssh_browse_reject
+  put = 'let g:netrw_timefmt           = '.g:netrw_timefmt
+  put = 'let g:netrw_winsize           = '.g:netrw_winsize
+
+  put =''
+  put ='+ For help, place cursor on line and press ?'
+
+  1d
+  silent %s/^+/"/e
+  res 99
+  silent %s/= \([^0-9].*\)$/= '\1'/e
+  silent %s/= $/= ''/e
+  1
+
+  set nomod
+
+  map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
+  let tmpfile= tempname()
+  exe 'au BufWriteCmd	Netrw\ Settings	silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
+endfun
+
+" ---------------------------------------------------------------------
+" NetrwSettingHelp: {{{2
+fun! NetrwSettingHelp()
+"  call Dfunc("NetrwSettingHelp()")
+  let curline = getline(".")
+  if curline =~ '='
+   let varhelp = substitute(curline,'^\s*let ','','e')
+   let varhelp = substitute(varhelp,'\s*=.*$','','e')
+"   call Decho("trying help ".varhelp)
+   try
+    exe "he ".varhelp
+   catch /^Vim\%((\a\+)\)\=:E149/
+   	echo "***sorry*** no help available for <".varhelp.">"
+   endtry
+  elseif line(".") < s:netrw_settings_stop
+   he netrw-settings
+  elseif line(".") < s:netrw_protocol_stop
+   he netrw-externapp
+  elseif line(".") < s:netrw_xfer_stop
+   he netrw-variables
+  else
+   he netrw-browse-var
+  endif
+"  call Dret("NetrwSettingHelp")
+endfun
+
+" ---------------------------------------------------------------------
+" Modelines: {{{1
+" vim:ts=8 fdm=marker
diff --git a/runtime/plugin/netrwPlugin.vim b/runtime/plugin/netrwPlugin.vim
index bc5a85a..6e33d51 100644
--- a/runtime/plugin/netrwPlugin.vim
+++ b/runtime/plugin/netrwPlugin.vim
@@ -1,6 +1,6 @@
 " netrwPlugin.vim: Handles file transfer and remote directory listing across a network
 "            PLUGIN PORTION
-" Date:		Oct 12, 2005
+" Date:		Oct 27, 2005
 " 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
@@ -42,15 +42,15 @@
 augroup Network
  au!
  if has("win32") || has("win95") || has("win64") || has("win16")
-  au BufReadCmd  file://*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e '.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+  au BufReadCmd  file://*		exe "silent doau BufReadPre ".netrw#RFC2396(expand("<amatch>"))|exe 'e '.substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("<amatch>"))
  else
-  au BufReadCmd  file:///*		exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
-  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".expand("<amatch>")|exe 'e /'.substitute(expand("<amatch>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<amatch>")
+  au BufReadCmd  file://*		exe "silent doau BufReadPre ".netrw#RFC2396(expand("<amatch>"))|exe 'e '.substitute(netrw#RFC2396(expand("<amatch>")),'file://\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("<amatch>"))
+  au BufReadCmd  file://localhost/*	exe "silent doau BufReadPre ".netrw#RFC2396(expand("<amatch>"))|exe 'e '.substitute(netrw#RFC2396(expand("<amatch>")),'file://localhost/\(.*\)','\1',"")|exe "silent doau BufReadPost ".netrw#RFC2396(expand("<amatch>"))
  endif
  au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread 0r ".expand("<amatch>")|exe "silent doau BufReadPost ".expand("<amatch>")
- au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau BufReadPre ".expand("<amatch>")|exe "Nread "   .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
+ au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*	exe "silent doau FileReadPre ".expand("<amatch>")|exe "Nread "   .expand("<amatch>")|exe "silent doau FileReadPost ".expand("<amatch>")
  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".expand("<amatch>")|exe "Nwrite " .expand("<amatch>")|exe "silent doau BufWritePost ".expand("<amatch>")
- au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*		exe "silent doau BufWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
+ au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*		exe "silent doau FileWritePre ".expand("<amatch>")|exe "'[,']Nwrite " .expand("<amatch>")|exe "silent doau FileWritePost ".expand("<amatch>")
 augroup END
 
 " Commands: :Nread, :Nwrite, :NetUserPass {{{2
diff --git a/runtime/plugin/tar.vim b/runtime/plugin/tar.vim
deleted file mode 100644
index cc97f44..0000000
--- a/runtime/plugin/tar.vim
+++ /dev/null
@@ -1,34 +0,0 @@
-" tar.vim -- a Vim plugin for browsing tarfiles
-" Copyright (c) 2002, Michael C. Toren <mct@toren.net>
-" Distributed under the GNU General Public License.
-"
-" Version: 1.01
-" Last Change: 2005 Jul 26
-"
-" Updates are available from <http://michael.toren.net/code/>.  If you
-" find this script useful, or have suggestions for improvements, please
-" let me know.
-" Also look there for further comments and documentation.
-"
-" This part only sets the autocommands.  The functions are in autoload/tar.vim.
-
-if has("autocmd")
-  augroup tar
-    au!
-    au BufReadCmd   tarfile:*	call tar#Read(expand("<afile>"), 1)
-    au BufReadCmd   tarfile:*/*	call tar#Read(expand("<afile>"), 1)
-    au FileReadCmd  tarfile:*	call tar#Read(expand("<afile>"), 0)
-    au FileReadCmd  tarfile:*/*	call tar#Read(expand("<afile>"), 0)
-
-    au BufWriteCmd  tarfile:*	call tar#Write(expand("<afile>"))
-    au BufWriteCmd  tarfile:*/*	call tar#Write(expand("<afile>"))
-    au FileWriteCmd tarfile:*	call tar#Write(expand("<afile>"))
-    au FileWriteCmd tarfile:*/*	call tar#Write(expand("<afile>"))
-
-    au BufReadCmd   *.tar	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.gz	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.bz2	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.Z	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tgz	call tar#Browse(expand("<afile>"))
-  augroup END
-endif
diff --git a/runtime/plugin/tarPlugin.vim b/runtime/plugin/tarPlugin.vim
index b9a34aa..506b431 100644
--- a/runtime/plugin/tarPlugin.vim
+++ b/runtime/plugin/tarPlugin.vim
@@ -9,25 +9,25 @@
 "
 " This part only sets the autocommands.  The functions are in autoload/tar.vim.
 
-if has("autocmd")
-  augroup tar
-    au!
-    au BufReadCmd   tarfile:*	call tar#Read(expand("<afile>"), 1)
-    au BufReadCmd   tarfile:*/*	call tar#Read(expand("<afile>"), 1)
-    au FileReadCmd  tarfile:*	call tar#Read(expand("<afile>"), 0)
-    au FileReadCmd  tarfile:*/*	call tar#Read(expand("<afile>"), 0)
+augroup tar
+  au!
+  au BufReadCmd   tarfile:*	call tar#Read(expand("<amatch>"), 1)
+  au FileReadCmd  tarfile:*	call tar#Read(expand("<amatch>"), 0)
+  au BufWriteCmd  tarfile:*	call tar#Write(expand("<amatch>"))
+  au FileWriteCmd tarfile:*	call tar#Write(expand("<amatch>"))
 
-    au BufWriteCmd  tarfile:*	call tar#Write(expand("<afile>"))
-    au BufWriteCmd  tarfile:*/*	call tar#Write(expand("<afile>"))
-    au FileWriteCmd tarfile:*	call tar#Write(expand("<afile>"))
-    au FileWriteCmd tarfile:*/*	call tar#Write(expand("<afile>"))
+  if has("unix")
+   au BufReadCmd   tarfile:*/*	call tar#Read(expand("<amatch>"), 1)
+   au FileReadCmd  tarfile:*/*	call tar#Read(expand("<amatch>"), 0)
+   au BufWriteCmd  tarfile:*/*	call tar#Write(expand("<amatch>"))
+   au FileWriteCmd tarfile:*/*	call tar#Write(expand("<amatch>"))
+  endif
 
-    au BufReadCmd   *.tar	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.gz	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.bz2	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tar.Z	call tar#Browse(expand("<afile>"))
-    au BufReadCmd   *.tgz	call tar#Browse(expand("<afile>"))
-  augroup END
-endif
+  au BufReadCmd   *.tar		call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.gz	call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.bz2	call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tar.Z	call tar#Browse(expand("<amatch>"))
+  au BufReadCmd   *.tgz		call tar#Browse(expand("<amatch>"))
+augroup END
 
 " vim: ts=8
diff --git a/runtime/plugin/zipPlugin.vim b/runtime/plugin/zipPlugin.vim
index 608edb5..20319a3 100644
--- a/runtime/plugin/zipPlugin.vim
+++ b/runtime/plugin/zipPlugin.vim
@@ -22,19 +22,19 @@
 " Public Interface: {{{1
 augroup zip
  au!
- au BufReadCmd   zipfile:*	call zip#Read(expand("<afile>"), 1)
- au FileReadCmd  zipfile:*	call zip#Read(expand("<afile>"), 0)
- au BufWriteCmd  zipfile:*	call zip#Write(expand("<afile>"))
- au FileWriteCmd zipfile:*	call zip#Write(expand("<afile>"))
+ au BufReadCmd   zipfile:*	call zip#Read(expand("<amatch>"), 1)
+ au FileReadCmd  zipfile:*	call zip#Read(expand("<amatch>"), 0)
+ au BufWriteCmd  zipfile:*	call zip#Write(expand("<amatch>"))
+ au FileWriteCmd zipfile:*	call zip#Write(expand("<amatch>"))
 
  if has("unix")
-  au BufReadCmd   zipfile:*/*	call zip#Read(expand("<afile>"), 1)
-  au FileReadCmd  zipfile:*/*	call zip#Read(expand("<afile>"), 0)
-  au BufWriteCmd  zipfile:*/*	call zip#Write(expand("<afile>"))
-  au FileWriteCmd zipfile:*/*	call zip#Write(expand("<afile>"))
+  au BufReadCmd   zipfile:*/*	call zip#Read(expand("<amatch>"), 1)
+  au FileReadCmd  zipfile:*/*	call zip#Read(expand("<amatch>"), 0)
+  au BufWriteCmd  zipfile:*/*	call zip#Write(expand("<amatch>"))
+  au FileWriteCmd zipfile:*/*	call zip#Write(expand("<amatch>"))
  endif
 
- au BufReadCmd   *.zip		call zip#Browse(expand("<afile>"))
+ au BufReadCmd   *.zip		call zip#Browse(expand("<amatch>"))
 augroup END
 
 " ------------------------------------------------------------------------
diff --git a/runtime/spell/sv/main.aap b/runtime/spell/sv/main.aap
index fc45fcf..5634711 100644
--- a/runtime/spell/sv/main.aap
+++ b/runtime/spell/sv/main.aap
@@ -1,4 +1,6 @@
 # Aap recipe for Swedish Vim spell files.
+#
+# Maintainer: Stefan Karlsson <stefan.74@comhem.se>
 
 # Use a freshly compiled Vim if it exists.
 @if os.path.exists('../../../src/vim'):
diff --git a/runtime/spell/sv/sv_SE.diff b/runtime/spell/sv/sv_SE.diff
index 3dfc515..5a0b383 100644
--- a/runtime/spell/sv/sv_SE.diff
+++ b/runtime/spell/sv/sv_SE.diff
@@ -139,3 +139,547 @@
 + SAL Ä	E
 + SAL ÖG(IE)-6	ÖK	# vokal+g(ie) ger ej j-ljud
 + SAL Ö	Ö
+*** sv_SE.orig.dic	2003-08-14 13:02:06.000000000 +0200
+--- sv_SE.dic	2005-10-15 18:15:52.171875000 +0200
+***************
+*** 108,113 ****
+--- 108,114 ----
+  adoption/ADHS
+  adoptivbarn/BDS
+  adoptivson/ADS
++ adr.
+  adrenalin/BS
+  adress/DHS
+  adressat/ADHS
+***************
+*** 608,613 ****
+--- 609,615 ----
+  anlöps/S
+  anlöpta/JRS
+  anm
++ anm.
+  anmaning/ADGS
+  anmoda/ABCDEFMNPS
+  anmodande/ACEFS
+***************
+*** 973,978 ****
+--- 975,981 ----
+  arrogant/OS
+  arsenal/DHS
+  arsenik/DS
++ art.
+  art/ADHOS
+  arta/CHJMNPS
+  artefakt/DHS
+***************
+*** 1094,1099 ****
+--- 1097,1103 ----
+  audiens/DHS
+  auditorie/CIS
+  auditorium/JS
++ aug.
+  August/A
+  augusti/AS
+  auktion/ADHS
+***************
+*** 2376,2381 ****
+--- 2380,2386 ----
+  bikupa/AEGS
+  bikupe/S
+  bikups/S
++ bil.
+  bil/ADGS
+  bila/EGIJOS
+  bilaga/EGOS
+***************
+*** 2490,2495 ****
+--- 2495,2501 ----
+  Björn
+  björn/ADGS
+  Björns
++ bl.a.
+  bla/JS
+  black/DGS
+  blackout/DHS
+***************
+*** 3645,3650 ****
+--- 3651,3657 ----
+  debut/ADHS
+  debutant/DHS
+  debutera/JMS
++ dec.
+  december/AS
+  decennie/CIS
+  decennium/AJS
+***************
+*** 4117,4122 ****
+--- 4124,4130 ----
+  dotterson/ADS
+  Douglas
+  dov/OPS
++ dr
+  dra/AJS
+  drabant/DHS
+  drabba/ACMNPS
+***************
+*** 4315,4321 ****
+  duven/MS
+  dvala/EGJS
+  dvaldes/S
+! dvs
+  dväljas/S
+  dväljes/S
+  dväljs/NS
+--- 4323,4330 ----
+  duven/MS
+  dvala/EGJS
+  dvaldes/S
+! dvs.
+! d.v.s.
+  dväljas/S
+  dväljes/S
+  dväljs/NS
+***************
+*** 4463,4468 ****
+--- 4472,4478 ----
+  Ebbas
+  Ecuador/A
+  ed/ADHS
++ e.d.
+  Edberg/A
+  eder/AJMS
+  Edit/A
+***************
+*** 4612,4617 ****
+--- 4622,4628 ----
+  ekorre/AEGS
+  ekosystem/BDS
+  ekosändning/ADGS
++ e.Kr.
+  eksem/BDS
+  Eksjö/A
+  ekumenik/DS
+***************
+*** 4825,4830 ****
+--- 4836,4842 ----
+  enkrona/EGS
+  enkät/DHS
+  Enköping/A
++ enl.
+  enlighet/S
+  enligt/S
+  enorm/OPS
+***************
+*** 4990,4995 ****
+--- 5002,5008 ----
+  etanol/DS
+  etapp/DHS
+  etc
++ etc.
+  etcetera/S
+  eten/BDS
+  eter/ES
+***************
+*** 5334,5341 ****
+--- 5347,5356 ----
+  favorisera/ACDMNPS
+  favorit/ADHS
+  favör/DHS
++ f.d.
+  fe/EFHS
+  feber/ES
++ febr.
+  febril/MOPS
+  februari/AS
+  federal/MOS
+***************
+*** 5451,5456 ****
+--- 5466,5472 ----
+  fiffla/ACDMNS
+  fifflar/DJQS
+  fifflare/AEJS
++ fig.
+  figur/ADHS
+  figurativ/OS
+  figurera/ACJMNPS
+***************
+*** 5635,5640 ****
+--- 5651,5657 ----
+  fjäsk/ABS
+  fjäska/JMS
+  fjättra/CMNPS
++ f.Kr.
+  flack/OPS
+  flacka/ABCDJMNS
+  fladder/CS
+***************
+*** 5913,5918 ****
+--- 5930,5936 ----
+  fortplanta/ACMNPS
+  fortplantning/ADGS
+  fortran/S
++ forts.
+  fortsatt/OQS
+  fortskrida/KS
+  fortsätta/AJS
+***************
+*** 6075,6080 ****
+--- 6093,6099 ----
+  fras/DHS
+  frasa/BDHJMS
+  frasering/ADS
++ fre.
+  fred/ADS
+  freda/ACJMNPS
+  fredag/ADGS
+***************
+*** 6170,6175 ****
+--- 6189,6195 ----
+  frivol/MOS
+  froda/ACMNPS
+  frodig/OS
++ fr.o.m.
+  from/KLMNS
+  fromhet/ADS
+  fromt/S
+***************
+*** 6453,6458 ****
+--- 6473,6479 ----
+  fästman/AFS
+  fästmö/AEIS
+  fästning/ADGS
++ f.ö.
+  föda/ADEJKLRS
+  född/OQS
+  födelse/AES
+***************
+*** 10493,10498 ****
+--- 10514,10520 ----
+  Jan/A
+  Janne/A
+  Janos
++ jan.
+  januari/AS
+  japan/DHS
+  Japans
+***************
+*** 10520,10525 ****
+--- 10542,10548 ----
+  jetflyg/ABS
+  jetmotor/EHS
+  jetplan/ABDS
++ jfr
+  jiddisch/DS
+  Jimmy/A
+  jippo/ACES
+***************
+*** 10870,10875 ****
+--- 10893,10899 ----
+  kaos/BS
+  kaotisk/OS
+  Kap
++ kap.
+  kap/BDS
+  kapa/ACJMNPS
+  kapabel/KMS
+***************
+*** 11119,11124 ****
+--- 11143,11149 ----
+  Kjell/A
+  kjol/ADGS
+  kjortel/EIS
++ kl.
+  kl
+  klack/DGS
+  klacka/IJMS
+***************
+*** 13445,13450 ****
+--- 13470,13476 ----
+  löpning/ADGS
+  löpsedel/AEIS
+  löptid/DS
++ lör.
+  lördag/ADGS
+  lös/AORS
+  lösa/ABDJKLQRS
+***************
+*** 13783,13788 ****
+--- 13809,13815 ----
+  Mauretanien/A
+  Mauritius
+  mausoleum/JS
++ max.
+  max
+  maxim/DHS
+  maximal/MOS
+***************
+*** 13965,13970 ****
+--- 13992,13998 ----
+  mexikan/DHS
+  mexikanska/AEGS
+  Mexiko/A
++ m.fl.
+  mg
+  MHz
+  Michael/A
+***************
+*** 14016,14021 ****
+--- 14044,14050 ----
+  milslång/OS
+  milstolpe/AEGS
+  mimosa/AES
++ min.
+  min/ACDFHS
+  mina/HJS
+  mindervärdig/OQRS
+***************
+*** 14136,14141 ****
+--- 14165,14171 ----
+  mjölnar/DJQS
+  mjölnare/AEJS
+  ml
++ m.m.
+  mm
+  mo/AEGS
+  mobba/ACMNPS
+***************
+*** 14539,14544 ****
+--- 14569,14575 ----
+  målstyrd/OS
+  målsättning/ADGS
+  måltid/ADHS
++ mån.
+  mån/DGQS
+  måna/IJMPRS
+  månad/ADHQS
+***************
+*** 14792,14797 ****
+--- 14823,14830 ----
+  neutron/DHS
+  nevö/ES
+  New
++ ngn
++ ngt
+  nia/EGJQS
+  Nicaragua/A
+  nick/DGS
+***************
+*** 14920,14931 ****
+--- 14953,14966 ----
+  notifikation/ADS
+  notis/DHS
+  notorisk/OS
++ nov.
+  nova/AES
+  novell/DHS
+  novellmagasin/ABDS
+  novellsamling/ADGS
+  november/AS
+  novis/DHS
++ nr.
+  nr
+  nu/BS
+  nubb/S
+***************
+*** 15243,15248 ****
+--- 15278,15284 ----
+  obrottslig/OS
+  obrukbar/MOS
+  obruten/MS
++ obs.
+  obs
+  observant/OPS
+  observation/ADHS
+***************
+*** 15470,15475 ****
+--- 15506,15512 ----
+  okonventionell/MOS
+  okritisk/OS
+  okryddade/OS
++ okt.
+  oktagon/HS
+  oktal/MOS
+  oktav/DHS
+***************
+*** 15741,15746 ****
+--- 15778,15784 ----
+  onjutbar/MOS
+  onkel/AES
+  onormal/MOS
++ ons.
+  onsdag/ADGS
+  onyanserade/OS
+  onykter/MS
+***************
+*** 15977,15983 ****
+--- 16015,16023 ----
+  ostrukturerade/OS
+  ostörd/OS
+  osund/OS
++ osv.
+  osv
++ o.s.v.
+  osvensk/OS
+  osviklig/OPS
+  osympatisk/OPQS
+***************
+*** 16378,16383 ****
+--- 16418,16424 ----
+  petitum/ES
+  Petra/A
+  Pettersson/A
++ p.g.a.
+  pga
+  Philips
+  pi/FS
+***************
+*** 17457,17462 ****
+--- 17498,17504 ----
+  resonabel/MS
+  resonemang/ABDS
+  resonera/ACMNS
++ resp.
+  resp/S
+  respekt/S
+  respektabel/LMS
+***************
+*** 18328,18333 ****
+--- 18370,18376 ----
+  sentimentalitet/ADS
+  separat/OS
+  separera/ACMNPS
++ sept.
+  september/AS
+  seraf/DHS
+  serenad/DHS
+***************
+*** 18652,18657 ****
+--- 18695,18701 ----
+  sjöslag/S
+  sjöss/S
+  sjåpig/OS
++ s.k.
+  ska/GJMPS
+  skada/ABCDEGJMNPS
+  skadedjur/BDS
+***************
+*** 20767,20772 ****
+--- 20811,20817 ----
+  sömnlös/OQRS
+  sömnlöshet/ADS
+  sömnmedel/ACFS
++ sön.
+  söndag/ADGS
+  sönder/S
+  sönderbruten/MS
+***************
+*** 20832,20837 ****
+--- 20877,20883 ----
+  såväl/S
+  såvärst/S
+  ta/AKRS
++ tab.
+  tabbe/S
+  tabell/DHS
+  tabernaklet/AS
+***************
+*** 21063,21068 ****
+--- 21109,21115 ----
+  testar/DJQS
+  testare/AEJS
+  testning/ADGS
++ t.ex.
+  tex
+  Texas
+  text/DHOS
+***************
+*** 21336,21341 ****
+--- 21383,21389 ----
+  tippa/ACMNPS
+  tips/BDS
+  tipsa/ACJMNPS
++ tis.
+  tisdag/ADGS
+  tistel/EIS
+  titan/S
+***************
+*** 21463,21468 ****
+--- 21511,21517 ----
+  tolvårig/OS
+  tolvårs/S
+  Tom
++ t.o.m.
+  tom/LMS
+  Tomas
+  tomat/DHS
+***************
+*** 21513,21518 ****
+--- 21562,21568 ----
+  torped/ADHS
+  torpedbåt/ADGS
+  torr/MOPS
++ tors.
+  torsdag/ADGS
+  torsk/DGS
+  Torsten/A
+***************
+*** 22359,22364 ****
+--- 22409,22415 ----
+  uppkomst/DS
+  uppkoppling/ADGS
+  uppkrupen/MS
++ uppl.
+  upplaga/AEGOS
+  upplagd/OS
+  upplage/S
+***************
+*** 22639,22644 ****
+--- 22690,22696 ----
+  utförar/DJQS
+  utförare/AEJS
+  utförlig/OPS
++ utg.
+  utgallra/ACMNPS
+  utgamla/S
+  utgammal/MS
+***************
+*** 23003,23008 ****
+--- 23055,23061 ----
+  varannan/S
+  varav/S
+  Varberg/A
++ vard.
+  varda/BDS
+  vardag/ADGS
+  vardaglig/OPS
+***************
+*** 23091,23096 ****
+--- 23144,23150 ----
+  Vaxholm/A
+  vaxljus/BDS
+  Vaxmora
++ vd
+  VD
+  ve/GS
+  veck/ABDS
+***************
+*** 23203,23208 ****
+--- 23257,23264 ----
+  vettlös/OS
+  vev/DS
+  veva/ACJMNPS
++ v.g.
++ v.g.v.
+  vi/ACEOS
+  vibration/ADHS
+  vibrator/AES
+***************
+*** 23416,23421 ****
+--- 23472,23478 ----
+  VM
+  vokabulär/S
+  vokal/DHS
++ vol.
+  volontär/ADHS
+  volt/S
+  Volvo/A
diff --git a/runtime/syntax/catalog.vim b/runtime/syntax/catalog.vim
index 2f8e388..4dbff00 100644
--- a/runtime/syntax/catalog.vim
+++ b/runtime/syntax/catalog.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	sgml catalog file
 " Maintainer:	Johannes Zellner <johannes@zellner.org>
-" Last Change:	Tue, 27 Apr 2004 14:54:59 CEST
+" Last Change:	Fr, 04 Nov 2005 12:46:45 CET
 " Filenames:	/etc/sgml.catalog
 " $Id$
 
@@ -17,8 +17,8 @@
 syn region  catalogString start=+'+ skip=+\\\\\|\\'+ end=+'+ keepend
 
 syn region  catalogComment      start=+--+   end=+--+ contains=catalogTodo
-syn keyword catalogTodo		TODO FIXME XXX contained display
-syn keyword catalogKeyword	DOCTYPE OVERRIDE PUBLIC DTDDECL ENTITY display
+syn keyword catalogTodo		TODO FIXME XXX NOTE contained
+syn keyword catalogKeyword	DOCTYPE OVERRIDE PUBLIC DTDDECL ENTITY CATALOG
 
 
 " The default highlighting.
diff --git a/runtime/syntax/cf.vim b/runtime/syntax/cf.vim
index 647c56a..517a20d 100644
--- a/runtime/syntax/cf.vim
+++ b/runtime/syntax/cf.vim
@@ -1,175 +1,251 @@
-" Vim syntax file
-"    Language: ColdFusion
-"  Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)
-" Last Change: August 3, 2005
-" 	ColdFusion MX 7
-"	Usage: Since ColdFusion has its own version of HTML comments 
-"	(<!--- --->)
-"       make sure that you put 'let html_wrong_comments=1' in your .vimrc /
-"       _vimrc file.
-
-" For version 5.x, clear all syntax items.
-" For version 6.x, quit when a syntax file was already loaded.
-if version < 600
-  syntax clear
-elseif exists("b:current_syntax")
-  finish
-endif
-
-" Use all the stuff from the HTML syntax file.
-if version < 600
-  source <sfile>:p:h/html.vim
-else
-  runtime! syntax/html.vim
-endif
-
-" Tag names.
-syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate cfbreak cfcache
-syn keyword cfTagName contained cfcalendar cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection
-syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory cfdocument
-syn keyword cfTagName contained cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror cfexecute
-syn keyword cfTagName contained cfexit cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid
-syn keyword cfTagName contained cfgridcolumn cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif
-syn keyword cfTagName contained cfimport cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument
-syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout cfloop cfmail
-syn keyword cfTagName contained cfmailparam cfmailpart cfmodule cfNTauthenticate cfobject cfobjectcache
-syn keyword cfTagName contained cfoutput cfparam cfpop cfprocessingdirective cfprocparam cfprocresult
-syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow
-syn keyword cfTagName contained cfreturn cfsavecontent cfschedule cfscript cfsearch cfselect cfset cfsetting
-syn keyword cfTagName contained cfsilent cfslider cfstoredproc cfswitch cftable cftextarea cfthrow cftimer
-syn keyword cfTagName contained cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx cfxml 
-
-" Tag parameters.
-syn keyword cfArg contained abort accept access accessible action addnewline addtoken addtoken agentname
-syn keyword cfArg contained align appendkey appletsource application applicationtimeout applicationtoken
-syn keyword cfArg contained archive argumentcollection arguments asciiextensionlist attachmentpath
-syn keyword cfArg contained attributecollection attributes attributes autowidth backgroundcolor
-syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname blockfactor body bold
-syn keyword cfArg contained border branch cachedafter cachedwithin casesensitive categories category
-syn keyword cfArg contained categorytree cc cfsqltype charset chartheight chartwidth checked class
-syn keyword cfArg contained clientmanagement clientstorage codebase colheaderalign colheaderbold
-syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders colheadertextcolor
-syn keyword cfArg contained collection colorlist colspacing columns completepath component condition
-syn keyword cfArg contained connection contentid context contextbytes contexthighlightbegin
-syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria custom1 custom2
-syn keyword cfArg contained custom3 custom4 data dataalign databackgroundcolor datacollection
-syn keyword cfArg contained datalabelstyle datasource date daynames dbname dbserver dbtype dbvarname debug
-syn keyword cfArg contained default delete deletebutton deletefile delimiter delimiters description
-syn keyword cfArg contained destination detail directory disabled display displayname disposition dn domain
-syn keyword cfArg contained enablecab enablecfoutputonly enabled encoded encryption enctype enddate
-syn keyword cfArg contained endrange endrow endtime entry errorcode exception existing expand expires
-syn keyword cfArg contained expireurl expression extendedinfo extends extensions external failifexists
-syn keyword cfArg contained failto file filefield filename filter firstdayofweek firstrowasheaders font
-syn keyword cfArg contained fontbold fontembed fontitalic fontsize foregroundcolor format formfields
-syn keyword cfArg contained formula from generateuniquefilenames getasbinary grid griddataalign gridlines
-syn keyword cfArg contained groovecolor group groupcasesensitive header headeralign headerbold headerfont
-syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor height highlighthref
-syn keyword cfArg contained hint href hrefkey hscroll hspace htmltable id idletimeout img imgopen imgstyle
-syn keyword cfArg contained index inline input insert insertbutton interval isolation italic item
-syn keyword cfArg contained itemcolumn key keyonly label labelformat language list listgroups locale
-syn keyword cfArg contained localfile log loginstorage lookandfeel mailerid mailto marginbottom marginleft
-syn keyword cfArg contained marginright marginright margintop markersize markerstyle mask maxlength maxrows
-syn keyword cfArg contained message messagenumber method mimeattach mimetype mode modifytype monthnames
-syn keyword cfArg contained multipart multiple name namecomplict nameconflict namespace new newdirectory
-syn keyword cfArg contained notsupported null numberformat object omit onchange onclick onerror onkeydown
-syn keyword cfArg contained onkeyup onload onmousedown onmouseup onreset onsubmit onvalidate operation
-syn keyword cfArg contained orderby orientation output outputfile overwrite ownerpassword pageencoding
-syn keyword cfArg contained pageheight pagetype pagewidth paintstyle param_1 param_2 param_3 param_4
-syn keyword cfArg contained param_5 parent passive passthrough password path pattern permissions picturebar
-syn keyword cfArg contained pieslicestyle port porttypename prefix preloader preservedata previouscriteria
-syn keyword cfArg contained procedure protocol provider providerdsn proxybypass proxypassword proxyport
-syn keyword cfArg contained proxyserver proxyuser publish query queryasroot queryposition range rebind
-syn keyword cfArg contained recurse redirect referral refreshlabel remotefile replyto report requesttimeout
-syn keyword cfArg contained required reset resolveurl result resultset retrycount returnasbinary returncode
-syn keyword cfArg contained returntype returnvariable roles rowheaderalign rowheaderbold rowheaderfont
-syn keyword cfArg contained rowheaderfontsize rowheaderitalic rowheaders rowheadertextcolor rowheaderwidth
-syn keyword cfArg contained rowheight scale scalefrom scaleto scope scriptprotect scriptsrc secure
-syn keyword cfArg contained securitycontext select selectcolor selected selecteddate selectedindex
-syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement server serviceport
-syn keyword cfArg contained serviceportname sessionmanagement sessiontimeout setclientcookies setcookie
-syn keyword cfArg contained setdomaincookies show3d showborder showdebugoutput showerror showlegend
-syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort sortascendingbutton
-syn keyword cfArg contained sortcontrol sortdescendingbutton sortxaxis source spoolenable sql src start
-syn keyword cfArg contained startdate startrange startrow starttime status statuscode statust step
-syn keyword cfArg contained stoponerror style subject suggestions suppresswhitespace tablename tableowner
-syn keyword cfArg contained tablequalifier taglib target task template text textcolor textqualifier
-syn keyword cfArg contained thread throwonerror throwonfailure throwontimeout time timeout timespan tipbgcolor tipstyle
-syn keyword cfArg contained title to tooltip top toplevelvariable transfermode type uid unit url urlpath
-syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate validateat value
-syn keyword cfArg contained valuecolumn values valuesdelimiter valuesdisplay var variable vertical visible
-syn keyword cfArg contained vscroll vspace webservice width wmode wraptext wsdlfile xaxistitle xaxistype
-syn keyword cfArg contained xoffset yaxistitle yaxistype yoffset
-
-" ColdFusion Functions.
-syn keyword cfFunctionName contained Abs GetFunctionList Max ACos GetGatewayHelper Mid AddSOAPRequestHeader
-syn keyword cfFunctionName contained GetHttpRequestData Min AddSOAPResponseHeader GetHttpTimeString Minute
-syn keyword cfFunctionName contained ArrayAppend GetLocale Month ArrayAvg GetLocaleDisplayName MonthAsString
-syn keyword cfFunctionName contained ArrayClear GetMetaData Now ArrayDeleteAt GetMetricData NumberFormat
-syn keyword cfFunctionName contained ArrayInsertAt GetPageContext ParagraphFormat ArrayIsEmpty GetProfileSections
-syn keyword cfFunctionName contained ParseDateTime ArrayLen GetProfileString Pi ArrayMax GetSOAPRequest
-syn keyword cfFunctionName contained PreserveSingleQuotes ArrayMin GetSOAPRequestHeader Quarter ArrayNew
-syn keyword cfFunctionName contained GetSOAPResponse QueryAddColumn ArrayPrepend GetSOAPResponseHeader QueryAddRow
-syn keyword cfFunctionName contained ArrayResize GetTempDirectory QueryNew ArraySet GetTempFile QuerySetCell
-syn keyword cfFunctionName contained ArraySort GetTickCount QuotedValueList ArraySum GetTimeZoneInfo Rand ArraySwap
-syn keyword cfFunctionName contained GetToken Randomize ArrayToList Hash RandRange Asc Hour REFind ASin
-syn keyword cfFunctionName contained HTMLCodeFormat REFindNoCase Atn HTMLEditFormat ReleaseComObject BinaryDecode
-syn keyword cfFunctionName contained IIf RemoveChars BinaryEncode IncrementValue RepeatString BitAnd InputBaseN
-syn keyword cfFunctionName contained Replace BitMaskClear Insert ReplaceList BitMaskRead Int ReplaceNoCase
-syn keyword cfFunctionName contained BitMaskSet IsArray REReplace BitNot IsBinary REReplaceNoCase BitOr IsBoolean
-syn keyword cfFunctionName contained Reverse BitSHLN IsCustomFunction Right BitSHRN IsDate RJustify BitXor
-syn keyword cfFunctionName contained IsDebugMode Round Ceiling IsDefined RTrim CharsetDecode IsLeapYear Second
-syn keyword cfFunctionName contained CharsetEncode IsNumeric SendGatewayMessage Chr IsNumericDate SetEncoding
-syn keyword cfFunctionName contained CJustify IsObject SetLocale Compare IsQuery SetProfileString CompareNoCase
-syn keyword cfFunctionName contained IsSimpleValue SetVariable Cos IsSOAPRequest Sgn CreateDate IsStruct Sin
-syn keyword cfFunctionName contained CreateDateTime IsUserInRole SpanExcluding CreateObject IsValid SpanIncluding
-syn keyword cfFunctionName contained CreateODBCDate IsWDDX Sqr CreateODBCDateTime IsXML StripCR CreateODBCTime
-syn keyword cfFunctionName contained IsXmlAttribute StructAppend CreateTime IsXmlDoc StructClear CreateTimeSpan
-syn keyword cfFunctionName contained IsXmlElem StructCopy CreateUUID IsXmlNode StructCount DateAdd IsXmlRoot
-syn keyword cfFunctionName contained StructDelete DateCompare JavaCast StructFind DateConvert JSStringFormat
-syn keyword cfFunctionName contained StructFindKey DateDiff LCase StructFindValue DateFormat Left StructGet
-syn keyword cfFunctionName contained DatePart Len StructInsert Day ListAppend StructIsEmpty DayOfWeek
-syn keyword cfFunctionName contained ListChangeDelims StructKeyArray DayOfWeekAsString ListContains StructKeyExists
-syn keyword cfFunctionName contained DayOfYear ListContainsNoCase StructKeyList DaysInMonth ListDeleteAt StructNew
-syn keyword cfFunctionName contained DaysInYear ListFind StructSort DE ListFindNoCase StructUpdate DecimalFormat
-syn keyword cfFunctionName contained ListFirst Tan DecrementValue ListGetAt TimeFormat Decrypt ListInsertAt
-syn keyword cfFunctionName contained ToBase64 DeleteClientVariable ListLast ToBinary DirectoryExists ListLen
-syn keyword cfFunctionName contained ToScript DollarFormat ListPrepend ToString Duplicate ListQualify Trim Encrypt
-syn keyword cfFunctionName contained ListRest UCase Evaluate ListSetAt URLDecode Exp ListSort URLEncodedFormat
-syn keyword cfFunctionName contained ExpandPath ListToArray URLSessionFormat FileExists ListValueCount Val Find
-syn keyword cfFunctionName contained ListValueCountNoCase ValueList FindNoCase LJustify Week FindOneOf Log Wrap
-syn keyword cfFunctionName contained FirstDayOfMonth Log10 WriteOutput Fix LSCurrencyFormat XmlChildPos FormatBaseN
-syn keyword cfFunctionName contained LSDateFormat XmlElemNew GetTempDirectory LSEuroCurrencyFormat XmlFormat
-syn keyword cfFunctionName contained GetAuthUser LSIsCurrency XmlGetNodeType GetBaseTagData LSIsDate XmlNew
-syn keyword cfFunctionName contained GetBaseTagList LSIsNumeric XmlParse GetBaseTemplatePath LSNumberFormat
-syn keyword cfFunctionName contained XmlSearch GetClientVariablesList LSParseCurrency XmlTransform
-syn keyword cfFunctionName contained GetCurrentTemplatePath LSParseDateTime XmlValidate GetDirectoryFromPath
-syn keyword cfFunctionName contained LSParseEuroCurrency Year GetEncoding LSParseNumber YesNoFormat GetException
-syn keyword cfFunctionName contained LSTimeFormat GetFileFromPath LTrim 
-
-syn cluster htmlTagNameCluster add=cfTagName
-syn cluster htmlArgCluster add=cfArg,cfFunctionName
-
-syn region cfFunctionRegion start='#' end='#' contains=cfFunctionName
-
-" Define the default highlighting.
-" For version 5.x and earlier, only when not done already.
-" For version 5.8 and later, only when an item doesn't have highlighting yet.
-if version >= 508 || !exists("did_cf_syn_inits")
-  if version < 508
-    let did_cf_syn_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
-
-  HiLink cfTagName Statement
-  HiLink cfArg Type
-  HiLink cfFunctionName Function
-  HiLink cfFunctionRegion PreProc
-
-  delcommand HiLink
-endif
-
-let b:current_syntax = "cf"
-
-" vim: ts=8 sw=2
+" Vim syntax file

+"    Language: ColdFusion

+"  Maintainer: Toby Woodwark (toby.woodwark+vim@gmail.com)

+" Last Change: 2005-11-02

+"   Filenames: *.cfc *.cfm

+"     Version: Macromedia ColdFusion MX 7

+"       Usage: Note that ColdFusion has its own comment syntax

+"              i.e. <!--- --->

+

+" For version 5.x, clear all syntax items.

+" For version 6.x+, quit if a syntax file is already loaded.

+if version < 600

+  syntax clear

+elseif exists("b:current_syntax")

+  finish

+endif

+

+" Use all the stuff from the HTML syntax file.

+" TODO remove this; CFML is not a superset of HTML

+if version < 600

+  source <sfile>:p:h/html.vim

+else

+  runtime! syntax/html.vim

+endif

+

+syn sync fromstart

+syn sync maxlines=200

+syn case ignore

+

+" Scopes and keywords.

+syn keyword cfScope contained cgi cffile request caller this thistag cfcatch variables application server session client form url attributes arguments

+syn keyword cfBool contained yes no true false

+

+" Operator strings.

+" Not exhaustive, since there are longhand equivalents.

+syn keyword cfOperator contained xor eqv and or lt le lte gt ge gte eq neq not is mod contains

+syn match cfOperatorMatch contained "[\+\-\*\/\\\^\&][\+\-\*\/\\\^\&]\@!"

+syn cluster cfOperatorCluster contains=cfOperator,cfOperatorMatch

+

+" Tag names.

+syn keyword cfTagName contained cfabort cfapplet cfapplication cfargument cfassociate cfbreak cfcache

+syn keyword cfTagName contained cfcalendar cfcase cfcatch cfchart cfchartdata cfchartseries cfcol cfcollection

+syn keyword cfTagName contained cfcomponent cfcontent cfcookie cfdefaultcase cfdirectory cfdocument

+syn keyword cfTagName contained cfdocumentitem cfdocumentsection cfdump cfelse cfelseif cferror cfexecute

+syn keyword cfTagName contained cfexit cffile cfflush cfform cfformgroup cfformitem cfftp cffunction cfgrid

+syn keyword cfTagName contained cfgridcolumn cfgridrow cfgridupdate cfheader cfhtmlhead cfhttp cfhttpparam cfif

+syn keyword cfTagName contained cfimport cfinclude cfindex cfinput cfinsert cfinvoke cfinvokeargument

+syn keyword cfTagName contained cfldap cflocation cflock cflog cflogin cfloginuser cflogout cfloop cfmail

+syn keyword cfTagName contained cfmailparam cfmailpart cfmodule cfNTauthenticate cfobject cfobjectcache

+syn keyword cfTagName contained cfoutput cfparam cfpop cfprocessingdirective cfprocparam cfprocresult

+syn keyword cfTagName contained cfproperty cfquery cfqueryparam cfregistry cfreport cfreportparam cfrethrow

+syn keyword cfTagName contained cfreturn cfsavecontent cfschedule cfscript cfsearch cfselect cfset cfsetting

+syn keyword cfTagName contained cfsilent cfslider cfstoredproc cfswitch cftable cftextarea cfthrow cftimer

+syn keyword cfTagName contained cftrace cftransaction cftree cftreeitem cftry cfupdate cfwddx cfxml 

+

+" Tag parameters.

+syn keyword cfArg contained abort accept access accessible action addnewline addtoken addtoken agentname

+syn keyword cfArg contained align appendkey appletsource application applicationtimeout applicationtoken

+syn keyword cfArg contained archive argumentcollection arguments asciiextensionlist attachmentpath

+syn keyword cfArg contained attributecollection attributes attributes autowidth backgroundcolor

+syn keyword cfArg contained backgroundvisible basetag bcc bgcolor bind bindingname blockfactor body bold

+syn keyword cfArg contained border branch cachedafter cachedwithin casesensitive categories category

+syn keyword cfArg contained categorytree cc cfsqltype charset chartheight chartwidth checked class

+syn keyword cfArg contained clientmanagement clientstorage codebase colheaderalign colheaderbold

+syn keyword cfArg contained colheaderfont colheaderfontsize colheaderitalic colheaders colheadertextcolor

+syn keyword cfArg contained collection colorlist colspacing columns completepath component condition

+syn keyword cfArg contained connection contentid context contextbytes contexthighlightbegin

+syn keyword cfArg contained contexthighlightend contextpassages cookiedomain criteria custom1 custom2

+syn keyword cfArg contained custom3 custom4 data dataalign databackgroundcolor datacollection

+syn keyword cfArg contained datalabelstyle datasource date daynames dbname dbserver dbtype dbvarname debug

+syn keyword cfArg contained default delete deletebutton deletefile delimiter delimiters description

+syn keyword cfArg contained destination detail directory disabled display displayname disposition dn domain

+syn keyword cfArg contained enablecab enablecfoutputonly enabled encoded encryption enctype enddate

+syn keyword cfArg contained endrange endrow endtime entry errorcode exception existing expand expires

+syn keyword cfArg contained expireurl expression extendedinfo extends extensions external failifexists

+syn keyword cfArg contained failto file filefield filename filter firstdayofweek firstrowasheaders font

+syn keyword cfArg contained fontbold fontembed fontitalic fontsize foregroundcolor format formfields

+syn keyword cfArg contained formula from generateuniquefilenames getasbinary grid griddataalign gridlines

+syn keyword cfArg contained groovecolor group groupcasesensitive header headeralign headerbold headerfont

+syn keyword cfArg contained headerfontsize headeritalic headerlines headertextcolor height highlighthref

+syn keyword cfArg contained hint href hrefkey hscroll hspace htmltable id idletimeout img imgopen imgstyle

+syn keyword cfArg contained index inline input insert insertbutton interval isolation italic item

+syn keyword cfArg contained itemcolumn key keyonly label labelformat language list listgroups locale

+syn keyword cfArg contained localfile log loginstorage lookandfeel mailerid mailto marginbottom marginleft

+syn keyword cfArg contained marginright marginright margintop markersize markerstyle mask maxlength maxrows

+syn keyword cfArg contained message messagenumber method mimeattach mimetype mode modifytype monthnames

+syn keyword cfArg contained multipart multiple name namecomplict nameconflict namespace new newdirectory

+syn keyword cfArg contained notsupported null numberformat object omit onchange onclick onerror onkeydown

+syn keyword cfArg contained onkeyup onload onmousedown onmouseup onreset onsubmit onvalidate operation

+syn keyword cfArg contained orderby orientation output outputfile overwrite ownerpassword pageencoding

+syn keyword cfArg contained pageheight pagetype pagewidth paintstyle param_1 param_2 param_3 param_4

+syn keyword cfArg contained param_5 parent passive passthrough password path pattern permissions picturebar

+syn keyword cfArg contained pieslicestyle port porttypename prefix preloader preservedata previouscriteria

+syn keyword cfArg contained procedure protocol provider providerdsn proxybypass proxypassword proxyport

+syn keyword cfArg contained proxyserver proxyuser publish query queryasroot queryposition range rebind

+syn keyword cfArg contained recurse redirect referral refreshlabel remotefile replyto report requesttimeout

+syn keyword cfArg contained required reset resolveurl result resultset retrycount returnasbinary returncode

+syn keyword cfArg contained returntype returnvariable roles rowheaderalign rowheaderbold rowheaderfont

+syn keyword cfArg contained rowheaderfontsize rowheaderitalic rowheaders rowheadertextcolor rowheaderwidth

+syn keyword cfArg contained rowheight scale scalefrom scaleto scope scriptprotect scriptsrc secure

+syn keyword cfArg contained securitycontext select selectcolor selected selecteddate selectedindex

+syn keyword cfArg contained selectmode separator seriescolor serieslabel seriesplacement server serviceport

+syn keyword cfArg contained serviceportname sessionmanagement sessiontimeout setclientcookies setcookie

+syn keyword cfArg contained setdomaincookies show3d showborder showdebugoutput showerror showlegend

+syn keyword cfArg contained showmarkers showxgridlines showygridlines size skin sort sortascendingbutton

+syn keyword cfArg contained sortcontrol sortdescendingbutton sortxaxis source spoolenable sql src start

+syn keyword cfArg contained startdate startrange startrow starttime status statuscode statustext step

+syn keyword cfArg contained stoponerror style subject suggestions suppresswhitespace tablename tableowner

+syn keyword cfArg contained tablequalifier taglib target task template text textcolor textqualifier

+syn keyword cfArg contained thread throwonerror throwonfailure throwontimeout time timeout timespan tipbgcolor tipstyle

+syn keyword cfArg contained title to tooltip top toplevelvariable transfermode type uid unit url urlpath

+syn keyword cfArg contained useragent username userpassword usetimezoneinfo validate validateat value

+syn keyword cfArg contained valuecolumn values valuesdelimiter valuesdisplay var variable vertical visible

+syn keyword cfArg contained vscroll vspace webservice width wmode wraptext wsdlfile xaxistitle xaxistype

+syn keyword cfArg contained xoffset yaxistitle yaxistype yoffset

+

+" ColdFusion Functions.

+syn keyword cfFunctionName contained Abs GetFunctionList Max ACos GetGatewayHelper Mid AddSOAPRequestHeader

+syn keyword cfFunctionName contained GetHttpRequestData Min AddSOAPResponseHeader GetHttpTimeString Minute

+syn keyword cfFunctionName contained ArrayAppend GetLocale Month ArrayAvg GetLocaleDisplayName MonthAsString

+syn keyword cfFunctionName contained ArrayClear GetMetaData Now ArrayDeleteAt GetMetricData NumberFormat

+syn keyword cfFunctionName contained ArrayInsertAt GetPageContext ParagraphFormat ArrayIsEmpty GetProfileSections

+syn keyword cfFunctionName contained ParseDateTime ArrayLen GetProfileString Pi ArrayMax GetSOAPRequest

+syn keyword cfFunctionName contained PreserveSingleQuotes ArrayMin GetSOAPRequestHeader Quarter ArrayNew

+syn keyword cfFunctionName contained GetSOAPResponse QueryAddColumn ArrayPrepend GetSOAPResponseHeader QueryAddRow

+syn keyword cfFunctionName contained ArrayResize GetTempDirectory QueryNew ArraySet GetTempFile QuerySetCell

+syn keyword cfFunctionName contained ArraySort GetTickCount QuotedValueList ArraySum GetTimeZoneInfo Rand ArraySwap

+syn keyword cfFunctionName contained GetToken Randomize ArrayToList Hash RandRange Asc Hour REFind ASin

+syn keyword cfFunctionName contained HTMLCodeFormat REFindNoCase Atn HTMLEditFormat ReleaseComObject BinaryDecode

+syn keyword cfFunctionName contained IIf RemoveChars BinaryEncode IncrementValue RepeatString BitAnd InputBaseN

+syn keyword cfFunctionName contained Replace BitMaskClear Insert ReplaceList BitMaskRead Int ReplaceNoCase

+syn keyword cfFunctionName contained BitMaskSet IsArray REReplace BitNot IsBinary REReplaceNoCase BitOr IsBoolean

+syn keyword cfFunctionName contained Reverse BitSHLN IsCustomFunction Right BitSHRN IsDate RJustify BitXor

+syn keyword cfFunctionName contained IsDebugMode Round Ceiling IsDefined RTrim CharsetDecode IsLeapYear Second

+syn keyword cfFunctionName contained CharsetEncode IsNumeric SendGatewayMessage Chr IsNumericDate SetEncoding

+syn keyword cfFunctionName contained CJustify IsObject SetLocale Compare IsQuery SetProfileString CompareNoCase

+syn keyword cfFunctionName contained IsSimpleValue SetVariable Cos IsSOAPRequest Sgn CreateDate IsStruct Sin

+syn keyword cfFunctionName contained CreateDateTime IsUserInRole SpanExcluding CreateObject IsValid SpanIncluding

+syn keyword cfFunctionName contained CreateODBCDate IsWDDX Sqr CreateODBCDateTime IsXML StripCR CreateODBCTime

+syn keyword cfFunctionName contained IsXmlAttribute StructAppend CreateTime IsXmlDoc StructClear CreateTimeSpan

+syn keyword cfFunctionName contained IsXmlElem StructCopy CreateUUID IsXmlNode StructCount DateAdd IsXmlRoot

+syn keyword cfFunctionName contained StructDelete DateCompare JavaCast StructFind DateConvert JSStringFormat

+syn keyword cfFunctionName contained StructFindKey DateDiff LCase StructFindValue DateFormat Left StructGet

+syn keyword cfFunctionName contained DatePart Len StructInsert Day ListAppend StructIsEmpty DayOfWeek

+syn keyword cfFunctionName contained ListChangeDelims StructKeyArray DayOfWeekAsString ListContains StructKeyExists

+syn keyword cfFunctionName contained DayOfYear ListContainsNoCase StructKeyList DaysInMonth ListDeleteAt StructNew

+syn keyword cfFunctionName contained DaysInYear ListFind StructSort DE ListFindNoCase StructUpdate DecimalFormat

+syn keyword cfFunctionName contained ListFirst Tan DecrementValue ListGetAt TimeFormat Decrypt ListInsertAt

+syn keyword cfFunctionName contained ToBase64 DeleteClientVariable ListLast ToBinary DirectoryExists ListLen

+syn keyword cfFunctionName contained ToScript DollarFormat ListPrepend ToString Duplicate ListQualify Trim Encrypt

+syn keyword cfFunctionName contained ListRest UCase Evaluate ListSetAt URLDecode Exp ListSort URLEncodedFormat

+syn keyword cfFunctionName contained ExpandPath ListToArray URLSessionFormat FileExists ListValueCount Val Find

+syn keyword cfFunctionName contained ListValueCountNoCase ValueList FindNoCase LJustify Week FindOneOf Log Wrap

+syn keyword cfFunctionName contained FirstDayOfMonth Log10 WriteOutput Fix LSCurrencyFormat XmlChildPos FormatBaseN

+syn keyword cfFunctionName contained LSDateFormat XmlElemNew GetTempDirectory LSEuroCurrencyFormat XmlFormat

+syn keyword cfFunctionName contained GetAuthUser LSIsCurrency XmlGetNodeType GetBaseTagData LSIsDate XmlNew

+syn keyword cfFunctionName contained GetBaseTagList LSIsNumeric XmlParse GetBaseTemplatePath LSNumberFormat

+syn keyword cfFunctionName contained XmlSearch GetClientVariablesList LSParseCurrency XmlTransform

+syn keyword cfFunctionName contained GetCurrentTemplatePath LSParseDateTime XmlValidate GetDirectoryFromPath

+syn keyword cfFunctionName contained LSParseEuroCurrency Year GetEncoding LSParseNumber YesNoFormat GetException

+syn keyword cfFunctionName contained LSTimeFormat GetFileFromPath LTrim 

+

+syn cluster htmlTagNameCluster add=cfTagName

+syn cluster htmlArgCluster add=cfArg,cfHashRegion,cfScope

+syn cluster htmlPreproc add=cfHashRegion

+

+syn cluster cfExpressionCluster contains=cfFunctionName,cfScope,@cfOperatorCluster,cfScriptStringD,cfScriptStringS,cfScriptNumber,cfBool

+

+" Evaluation; skip strings ( this helps with cases like nested IIf() )

+syn region cfHashRegion start=+#+ skip=+"[^"]*"\|'[^']*'+ end=+#+ contains=@cfExpressionCluster,cfScriptParenError

+

+" <cfset>, <cfif>, <cfelseif>, <cfreturn> are analogous to hashmarks (implicit evaluation) and has 'var'

+syn region cfSetRegion start="<cfset " start="<cfreturn " start="<cfelseif " start="<cfif " end='>' keepend contains=@cfExpressionCluster,cfSetLHSRegion,cfSetTagEnd,cfScriptType

+syn region cfSetLHSRegion contained start="<cfreturn" start="<cfelseif" start="<cfif" start="<cfset" end=" " keepend contains=cfTagName,htmlTag

+syn match  cfSetTagEnd contained '>'

+

+" CF comments: similar to SGML comments

+syn region  cfComment     start='<!---' end='--->' keepend contains=cfCommentTodo

+syn keyword cfCommentTodo contained TODO FIXME XXX TBD WTF 

+

+" CFscript 

+syn match   cfScriptLineComment      contained "\/\/.*$" contains=cfCommentTodo

+syn region  cfScriptComment	     contained start="/\*"  end="\*/" contains=cfCommentTodo

+" in CF, quotes are escaped by doubling

+syn region  cfScriptStringD	     contained start=+"+  skip=+\\\\\|""+  end=+"+  extend contains=@htmlPreproc,cfHashRegion

+syn region  cfScriptStringS	     contained start=+'+  skip=+\\\\\|''+  end=+'+  extend contains=@htmlPreproc,cfHashRegion

+syn match   cfScriptNumber	     contained "-\=\<\d\+L\=\>"

+syn keyword cfScriptConditional      contained if else

+syn keyword cfScriptRepeat	     contained while for in

+syn keyword cfScriptBranch	     contained break switch case try catch continue

+syn keyword cfScriptFunction	     contained function

+syn keyword cfScriptType	     contained var

+syn match   cfScriptBraces	     contained "[{}]"

+syn keyword cfScriptStatement        contained return

+

+syn cluster cfScriptCluster contains=cfScriptParen,cfScriptLineComment,cfScriptComment,cfScriptStringD,cfScriptStringS,cfScriptFunction,cfScriptNumber,cfScriptRegexpString,cfScriptBoolean,cfScriptBraces,cfHashRegion,cfFunctionName,cfScope,@cfOperatorCluster,cfScriptConditional,cfScriptRepeat,cfScriptBranch,cfScriptType,@cfExpressionCluster,cfScriptStatement

+

+" Errors caused by wrong parenthesis; skip strings

+syn region  cfScriptParen       contained transparent skip=+"[^"]*"\|'[^']*'+ start=+(+ end=+)+ contains=@cfScriptCluster

+syn match   cfScrParenError 	contained +)+

+

+syn region cfscriptBlock matchgroup=NONE start="<cfscript>"  end="<\/cfscript>"me=s-1 keepend contains=@cfScriptCluster,cfscriptTag,cfScrParenError

+syn region  cfscriptTag contained start='<cfscript' end='>' keepend contains=cfTagName,htmlTag

+

+" Define the default highlighting.

+if version >= 508 || !exists("did_cf_syn_inits")

+  if version < 508

+    let did_cf_syn_inits = 1

+    command -nargs=+ HiLink hi link <args>

+  else

+    command -nargs=+ HiLink hi def link <args>

+  endif

+

+  HiLink cfTagName 		Statement

+  HiLink cfArg 			Type

+  HiLink cfFunctionName 	Function

+  HiLink cfHashRegion 		PreProc

+  HiLink cfComment 		Comment

+  HiLink cfCommentTodo 		Todo

+  HiLink cfOperator		Operator

+  HiLink cfOperatorMatch	Operator

+  HiLink cfScope		Title

+  HiLink cfBool			Constant

+

+  HiLink cfscriptBlock 		Special

+  HiLink cfscriptTag 		htmlTag

+  HiLink cfSetRegion 		PreProc

+  HiLink cfSetLHSRegion 	htmlTag

+  HiLink cfSetTagEnd		htmlTag

+

+  HiLink cfScriptLineComment	Comment

+  HiLink cfScriptComment	Comment

+  HiLink cfScriptStringS	String

+  HiLink cfScriptStringD	String

+  HiLink cfScriptNumber	     	cfScriptValue

+  HiLink cfScriptConditional	Conditional

+  HiLink cfScriptRepeat	     	Repeat

+  HiLink cfScriptBranch	     	Conditional

+  HiLink cfScriptType		Type

+  HiLink cfScriptStatement	Statement

+  HiLink cfScriptBraces	     	Function

+  HiLink cfScriptFunction    	Function

+  HiLink cfScriptError	     	Error

+  HiLink cfScrParenError	cfScriptError

+

+  delcommand HiLink

+endif

+

+let b:current_syntax = "cf"

+

+" vim: ts=8 sw=2

diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim
index c24b299..269a9f8 100644
--- a/runtime/syntax/css.vim
+++ b/runtime/syntax/css.vim
@@ -2,7 +2,7 @@
 " Language:	Cascading Style Sheets
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/css.vim
-" Last Change:	2004 Mar 30
+" Last Change:	2005 Nov 23
 " CSS2 by Nikolai Weibull
 " Full CSS2, HTML4 support by Yeti
 
@@ -38,7 +38,12 @@
 syn match cssSelectorOp2 "[~|]\?=" contained
 syn region cssAttributeSelector matchgroup=cssSelectorOp start="\[" end="]" transparent contains=cssUnicodeEscape,cssSelectorOp2,cssStringQ,cssStringQQ
 
+try
 syn match cssIdentifier "#[A-Za-zÀ-ÿ_@][A-Za-zÀ-ÿ0-9_@-]*"
+catch /^.*/
+syn match cssIdentifier "#[A-Za-z_@][A-Za-z0-9_@-]*"
+endtry
+
 
 syn match cssMedia "@media\>" nextgroup=cssMediaType skipwhite skipnl
 syn keyword cssMediaType contained screen print aural braile embosed handheld projection ty tv all nextgroup=cssMediaComma,cssMediaBlock skipwhite skipnl
@@ -270,5 +275,6 @@
   unlet main_syntax
 endif
 
+
 " vim: ts=8
 
diff --git a/runtime/syntax/d.vim b/runtime/syntax/d.vim
index 1b4995e..2ab9b25 100644
--- a/runtime/syntax/d.vim
+++ b/runtime/syntax/d.vim
@@ -1,9 +1,12 @@
-" Vim syntax file for the D programming language (version 0.116).
+" Vim syntax file for the D programming language (version 0.137).
 "
 " Language:	D
 " Maintainer:	Jason Mills<jmills@cs.mun.ca>
-" Last Change:	2005 Mar 09
-" Version:	0.12
+" Last Change:	2005 Oct 29
+" Version:	0.14
+"
+" Please email me with bugs, comments, and suggestion. Put vim in the subject
+" to ensure the email will not be marked has spam.
 "
 " Options:
 "   d_comment_strings - set to highlight strings and numbers in comments
@@ -21,6 +24,8 @@
 "
 "   - Mark contents of the asm statement body as special
 "
+"   - Highlight the string prefix r and and postfixes c,w,d
+"
 
 " Quit when a syntax file was already loaded
 if exists("b:current_syntax")
@@ -30,7 +35,7 @@
 " Keyword definitions
 "
 syn keyword dExternal		import package module extern
-syn keyword dConditional	if else switch
+syn keyword dConditional	if else switch iftype
 syn keyword dBranch		goto break continue
 syn keyword dRepeat		while for do foreach
 syn keyword dBoolean		true false
@@ -41,7 +46,7 @@
 syn keyword dOperator		new delete typeof typeid cast align is
 syn keyword dOperator		this super
 if exists("d_hl_operator_overload")
-  syn keyword dOpOverload	opNeg opCom opPostInc opPostDec opAdd opSub opSub_r
+  syn keyword dOpOverload	opNeg opCom opPostInc opPostDec opCast opAdd opSub opSub_r
   syn keyword dOpOverload	opMul opDiv opDiv_r opMod opMod_r opAnd opOr opXor
   syn keyword dOpOverload	opShl opShl_r opShr opShr_r opUShr opUShr_r opCat
   syn keyword dOpOverload	opCat_r opEquals opEquals opCmp opCmp opCmp opCmp
@@ -49,7 +54,7 @@
   syn keyword dOpOverload	opModAssign opAndAssign opOrAssign opXorAssign
   syn keyword dOpOverload	opShlAssign opShrAssign opUShrAssign opCatAssign
   syn keyword dOpOverload	opIndex opIndexAssign opCall opSlice opPos
-  syn keyword dOpOverload	opAdd_r opMul_r opAnd_r opOr_r opXor_r 
+  syn keyword dOpOverload	opAdd_r opMul_r opAnd_r opOr_r opXor_r
 endif
 syn keyword dType		ushort int uint long ulong float
 syn keyword dType		void byte ubyte double bit char wchar ucent cent
@@ -135,7 +140,7 @@
 "
 syn region dString	start=+"+ end=+"+ contains=dEscSequence,@Spell
 syn region dRawString	start=+`+ skip=+\\`+ end=+`+ contains=@Spell
-syn region dRawString	start=+r"+ skip=+\\"+ end=+"+ contains=@Spell
+"syn region dRawString	start=+r"+ skip=+\\"+ end=+"+ contains=@Spell
 syn region dHexString	start=+x"+ skip=+\\"+ end=+"+
 
 " Numbers
@@ -220,4 +225,4 @@
 
 let b:current_syntax = "d"
 
-" vim: ts=8
+" vim: ts=8 noet
diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim
index 59f042d..c3cc435 100644
--- a/runtime/syntax/eruby.vim
+++ b/runtime/syntax/eruby.vim
@@ -2,14 +2,9 @@
 " Language:	eRuby
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
+" ----------------------------------------------------------------------------
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
diff --git a/runtime/syntax/java.vim b/runtime/syntax/java.vim
index 030e9ec..c6363d9 100644
--- a/runtime/syntax/java.vim
+++ b/runtime/syntax/java.vim
@@ -2,7 +2,7 @@
 " Language:     Java
 " Maintainer:   Claudio Fleiner <claudio@fleiner.com>
 " URL:		http://www.fleiner.com/vim/syntax/java.vim
-" Last Change:  2004 Nov 12
+" Last Change:  2005 Nov 04
 
 " Please check :help java.vim for comments on some of the options available.
 
@@ -58,8 +58,11 @@
 syn keyword javaClassDecl	enum
 syn match   javaClassDecl	"^class\>"
 syn match   javaClassDecl	"[^.]\s*\<class\>"ms=s+1
+syn match   javaAnnotation      "@[_$a-zA-Z][_$a-zA-Z0-9_]*\>"
+syn match   javaClassDecl       "@interface\>"
 syn keyword javaBranch		break continue nextgroup=javaUserLabelRef skipwhite
 syn match   javaUserLabelRef	"\k\+" contained
+syn match   javaVarArg          "\.\.\."
 syn keyword javaScopeDecl	public protected private abstract
 
 if exists("java_highlight_java_lang_ids") || exists("java_highlight_java_lang") || exists("java_highlight_all")
@@ -130,7 +133,7 @@
 endif
 
 " The following cluster contains all java groups except the contained ones
-syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject
+syn cluster javaTop add=javaExternal,javaError,javaError,javaBranch,javaLabelRegion,javaLabel,javaConditional,javaRepeat,javaBoolean,javaConstant,javaTypedef,javaOperator,javaType,javaType,javaStatement,javaStorageClass,javaAssert,javaExceptions,javaMethodDecl,javaClassDecl,javaClassDecl,javaClassDecl,javaScopeDecl,javaError,javaError2,javaUserLabel,javaLangObject,javaAnnotation,javaVarArg
 
 
 " Comments
@@ -283,6 +286,7 @@
     let did_java_syn_inits = 1
   endif
   JavaHiLink javaFuncDef		Function
+  JavaHiLink javaVarArg                 Function
   JavaHiLink javaBraces			Function
   JavaHiLink javaBranch			Conditional
   JavaHiLink javaUserLabelRef		javaUserLabel
@@ -314,6 +318,7 @@
   JavaHiLink javaConstant		Constant
   JavaHiLink javaTypedef		Typedef
   JavaHiLink javaTodo			Todo
+  JavaHiLink javaAnnotation             PreProc
 
   JavaHiLink javaCommentTitle		SpecialComment
   JavaHiLink javaDocTags		Special
diff --git a/runtime/syntax/javascript.vim b/runtime/syntax/javascript.vim
index 10bf4db..9e959e1 100644
--- a/runtime/syntax/javascript.vim
+++ b/runtime/syntax/javascript.vim
@@ -1,8 +1,13 @@
 " Vim syntax file
 " Language:	JavaScript
 " Maintainer:	Claudio Fleiner <claudio@fleiner.com>
+" Updaters:	Scott Shattuck (ss) <ss@technicalpursuit.com>
 " URL:		http://www.fleiner.com/vim/syntax/javascript.vim
-" Last Change:	2005 Jul 13
+" Changes:	(ss) added keywords, reserved words, and other identifiers
+"		(ss) repaired several quoting and grouping glitches
+"		(ss) fixed regex parsing issue with multiple qualifiers [gi]
+"		(ss) additional factoring of keywords, globals, and members
+" Last Change:	2005 Nov 12 (ss)
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -27,23 +32,33 @@
 
 
 syn keyword javaScriptCommentTodo      TODO FIXME XXX TBD contained
-syn match   javaScriptLineComment      "\/\/.*$" contains=javaScriptCommentTodo
+syn match   javaScriptLineComment      "\/\/.*" contains=javaScriptCommentTodo
 syn match   javaScriptCommentSkip      "^[ \t]*\*\($\|[ \t]\+\)"
 syn region  javaScriptComment	       start="/\*"  end="\*/" contains=javaScriptCommentTodo
 syn match   javaScriptSpecial	       "\\\d\d\d\|\\."
-syn region  javaScriptStringD	       start=+"+  skip=+\\\\\|\\"+  end=+"+  contains=javaScriptSpecial,@htmlPreproc
-syn region  javaScriptStringS	       start=+'+  skip=+\\\\\|\\'+  end=+'+  contains=javaScriptSpecial,@htmlPreproc
+syn region  javaScriptStringD	       start=+"+  skip=+\\\\\|\\"+  end=+"\|$+  contains=javaScriptSpecial,@htmlPreproc
+syn region  javaScriptStringS	       start=+'+  skip=+\\\\\|\\'+  end=+'\|$+  contains=javaScriptSpecial,@htmlPreproc
+
 syn match   javaScriptSpecialCharacter "'\\.'"
 syn match   javaScriptNumber	       "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
-syn region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\?\s*$+ end=+/[gi]\?\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline
-syn keyword javaScriptConditional	if else
-syn keyword javaScriptRepeat		while for
-syn keyword javaScriptBranch		break continue switch case default
-syn keyword javaScriptOperator		new in
-syn keyword javaScriptType		this var const
+syn region  javaScriptRegexpString     start=+/[^/*]+me=e-1 skip=+\\\\\|\\/+ end=+/[gi]\{0,2\}\s*$+ end=+/[gi]\{0,2\}\s*[;.,)]+me=e-1 contains=@htmlPreproc oneline
+
+syn keyword javaScriptConditional	if else switch
+syn keyword javaScriptRepeat		while for do in
+syn keyword javaScriptBranch		break continue
+syn keyword javaScriptOperator		new delete instanceof typeof
+syn keyword javaScriptType		Array Boolean Date Function Number Object String RegExp
 syn keyword javaScriptStatement		return with
 syn keyword javaScriptBoolean		true false
-syn keyword javaScriptNull		null
+syn keyword javaScriptNull		null undefined
+syn keyword javaScriptIdentifier	arguments this var
+syn keyword javaScriptLabel		case default
+syn keyword javaScriptException		try catch finally throw
+syn keyword javaScriptMessage		alert confirm prompt status
+syn keyword javaScriptGlobal		self window top parent
+syn keyword javaScriptMember		document event location 
+syn keyword javaScriptDeprecated	escape unescape
+syn keyword javaScriptReserved		abstract boolean byte char class const debugger double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile 
 
 if exists("javaScript_fold")
     syn match	javaScriptFunction      "\<function\>"
@@ -56,17 +71,13 @@
     setlocal foldtext=getline(v:foldstart)
 else
     syn keyword	javaScriptFunction      function
-    syn match	javaScriptBraces	   "[{}]"
+    syn match	javaScriptBraces	   "[{}\[\]]"
+    syn match	javaScriptParens	   "[()]"
 endif
 
 syn sync fromstart
 syn sync maxlines=100
 
-" catch errors caused by wrong parenthesis
-syn region  javaScriptParen       transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces,javaScriptFunction,javaScriptFunctionFold,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptConstant
-" syn region  javaScriptParen       transparent start="(" end=")" contains=javaScriptParen,javaScriptComment,javaScriptSpecial,javaScriptStringD,javaScriptStringS,javaScriptSpecialCharacter,javaScriptNumber,javaScriptRegexpString,javaScriptBoolean,javaScriptBraces
-syn match   javaScrParenError  ")"
-
 if main_syntax == "javascript"
   syn sync ccomment javaScriptComment
 endif
@@ -103,6 +114,18 @@
   HiLink javaScriptNull			Keyword
   HiLink javaScriptBoolean		Boolean
   HiLink javaScriptRegexpString		String
+
+  HiLink javaScriptIdentifier		Identifier
+  HiLink javaScriptLabel		Label
+  HiLink javaScriptException		Exception
+  HiLink javaScriptMessage		Keyword
+  HiLink javaScriptGlobal		Keyword
+  HiLink javaScriptMember		Keyword
+  HiLink javaScriptDeprecated		Exception 
+  HiLink javaScriptReserved		Keyword
+  HiLink javaScriptDebug		Debug
+  HiLink javaScriptConstant		Label
+
   delcommand HiLink
 endif
 
diff --git a/runtime/syntax/lisp.vim b/runtime/syntax/lisp.vim
index e47f0a1..61792d1 100644
--- a/runtime/syntax/lisp.vim
+++ b/runtime/syntax/lisp.vim
@@ -2,19 +2,13 @@
 " Language:    Lisp
 " Maintainer:  Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
 " Last Change: Oct 12, 2005
-" Version:     16
+" Version:     17a
 " URL:	       http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 "  Thanks to F Xavier Noria for a list of 978 Common Lisp symbols
 "  taken from the HyperSpec
-"
-"  Options:
-"    g:lisp_instring : if it exists, then "(...") strings are highlighted
-"		       as if the contents were lisp.  Useful for AutoLisp.
-"		       Put
-"		         let g:lisp_instring=1
-"		       into your <.vimrc> if you want this option.
 
+" ---------------------------------------------------------------------
 "  Load Once: {{{1
 " For vim-version 5.x: Clear all syntax items
 " For vim-version 6.x: Quit when a syntax file was already loaded
@@ -30,6 +24,7 @@
  set iskeyword=42,43,45,47-58,60-62,64-90,97-122,_
 endif
 
+" ---------------------------------------------------------------------
 " Clusters: {{{1
 syn cluster			 lispAtomCluster		  contains=lispAtomBarSymbol,lispAtomList,lispAtomNmbr0,lispComment,lispDecl,lispFunc,lispLeadWhite
 syn cluster			 lispBaseListCluster		  contains=lispAtom,lispAtomBarSymbol,lispAtomMark,lispBQList,lispBarSymbol,lispComment,lispConcat,lispDecl,lispFunc,lispKey,lispList,lispNumber,lispSpecial,lispSymbol,lispVar,lispLeadWhite
@@ -39,6 +34,7 @@
  syn cluster			 lispListCluster		  contains=@lispBaseListCluster,lispString
 endif
 
+" ---------------------------------------------------------------------
 " Lists: {{{1
 syn match			 lispSymbol			  contained			   ![^()'`,"; \t]\+!
 syn match			 lispBarSymbol			  contained			   !|..\{-}|!
@@ -58,6 +54,7 @@
  syn region			 lispBQList			  matchgroup=PreProc   start="`("  skip="|.\{-}|"		    matchgroup=PreProc   end=")"		contains=@lispListCluster
 endif
 
+" ---------------------------------------------------------------------
 " Atoms: {{{1
 syn match			 lispAtomMark			  "'"
 syn match			 lispAtom			  "'("me=e-1			   contains=lispAtomMark	    nextgroup=lispAtomList
@@ -68,6 +65,7 @@
 syn match			 lispAtomNmbr			  contained			   "\<\d\+"
 syn match			 lispLeadWhite			  contained			   "^\s\+"
 
+" ---------------------------------------------------------------------
 " Standard Lisp Functions and Macros: {{{1
 syn keyword lispFunc		 *				  find-method			   pprint-indent
 syn keyword lispFunc		 **				  find-package			   pprint-linear
@@ -386,6 +384,7 @@
 
 syn match   lispFunc		 "\<c[ad]\+r\>"
 
+" ---------------------------------------------------------------------
 " Lisp Keywords (modifiers): {{{1
 syn keyword lispKey		 :abort				  :from-end			   :overwrite
 syn keyword lispKey		 :adjustable			  :gensym			   :predicate
@@ -414,6 +413,7 @@
 syn keyword lispKey		 :escape			  :output-file			   :version
 syn keyword lispKey		 :external
 
+" ---------------------------------------------------------------------
 " Standard Lisp Variables: {{{1
 syn keyword lispVar		 *applyhook*			  *load-pathname*		   *print-pprint-dispatch*
 syn keyword lispVar		 *break-on-signals*		  *load-print*			   *print-pprint-dispatch*
@@ -434,6 +434,7 @@
 syn keyword lispVar		 *features*			  *print-miser-width*		   *terminal-io*
 syn keyword lispVar		 *gensym-counter*		  *print-miser-width*		   *trace-output*
 
+" ---------------------------------------------------------------------
 " Strings: {{{1
 syn region			 lispString			  start=+"+ skip=+\\\\\|\\"+ end=+"+
 if exists("g:lisp_instring")
@@ -441,6 +442,7 @@
  syn region			 lispInStringString		  start=+\\"+ skip=+\\\\+ end=+\\"+ contained
 endif
 
+" ---------------------------------------------------------------------
 " Shared with Xlisp, Declarations, Macros, Functions: {{{1
 syn keyword lispDecl		 defmacro			  do-all-symbols		   labels
 syn keyword lispDecl		 defsetf			  do-external-symbols		   let
@@ -448,6 +450,7 @@
 syn keyword lispDecl		 defun				  dotimes			   macrolet
 syn keyword lispDecl		 do*				  flet				   multiple-value-bind
 
+" ---------------------------------------------------------------------
 " Numbers: supporting integers and floating point numbers {{{1
 syn match lispNumber		 "-\=\(\.\d\+\|\d\+\(\.\d*\)\=\)\(e[-+]\=\d\+\)\="
 
@@ -463,6 +466,7 @@
 syn match lispConcat		 "\s\.\s"
 syn match lispParenError	 ")"
 
+" ---------------------------------------------------------------------
 " Comments: {{{1
 syn cluster lispCommentGroup	 contains=lispTodo,@Spell
 syn match   lispComment		 ";.*$"				  contains=@lispCommentGroup
@@ -471,19 +475,16 @@
 syn keyword lispTodo		 contained			  combak			   combak:			    todo			     todo:
 syn case match
 
+" ---------------------------------------------------------------------
 " Synchronization: {{{1
 syn sync lines=100
 
+" ---------------------------------------------------------------------
 " Define Highlighting: {{{1
 " For version 5.7 and earlier: only when not done already
 " For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_lisp_syntax_inits")
-  if version < 508
-    let did_lisp_syntax_inits = 1
-    command -nargs=+ HiLink hi link <args>
-  else
-    command -nargs=+ HiLink hi def link <args>
-  endif
+if version >= 508
+  command -nargs=+ HiLink hi def link <args>
 
   HiLink lispCommentRegion	 lispComment
   HiLink lispAtomNmbr		 lispNumber
@@ -508,27 +509,27 @@
 
   if exists("g:lisp_rainbow") && g:lisp_rainbow != 0
    if &bg == "dark"
-    hi   hlLevel0 ctermfg=red         guifg=red1
-    hi   hlLevel1 ctermfg=yellow      guifg=orange1      
-    hi   hlLevel2 ctermfg=green       guifg=yellow1      
-    hi   hlLevel3 ctermfg=cyan        guifg=greenyellow  
-    hi   hlLevel4 ctermfg=magenta     guifg=green1       
-    hi   hlLevel5 ctermfg=red         guifg=springgreen1 
-    hi   hlLevel6 ctermfg=yellow      guifg=cyan1        
-    hi   hlLevel7 ctermfg=green       guifg=slateblue1   
-    hi   hlLevel8 ctermfg=cyan        guifg=magenta1     
-    hi   hlLevel9 ctermfg=magenta     guifg=purple1
+    hi def hlLevel0 ctermfg=red         guifg=red1
+    hi def hlLevel1 ctermfg=yellow      guifg=orange1      
+    hi def hlLevel2 ctermfg=green       guifg=yellow1      
+    hi def hlLevel3 ctermfg=cyan        guifg=greenyellow  
+    hi def hlLevel4 ctermfg=magenta     guifg=green1       
+    hi def hlLevel5 ctermfg=red         guifg=springgreen1 
+    hi def hlLevel6 ctermfg=yellow      guifg=cyan1        
+    hi def hlLevel7 ctermfg=green       guifg=slateblue1   
+    hi def hlLevel8 ctermfg=cyan        guifg=magenta1     
+    hi def hlLevel9 ctermfg=magenta     guifg=purple1
    else
-    hi   hlLevel0 ctermfg=red         guifg=red3
-    hi   hlLevel1 ctermfg=darkyellow  guifg=orangered3
-    hi   hlLevel2 ctermfg=darkgreen   guifg=orange2
-    hi   hlLevel3 ctermfg=blue        guifg=yellow3
-    hi   hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
-    hi   hlLevel5 ctermfg=red         guifg=green4
-    hi   hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
-    hi   hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
-    hi   hlLevel8 ctermfg=blue        guifg=darkslateblue
-    hi   hlLevel9 ctermfg=darkmagenta guifg=darkviolet
+    hi def hlLevel0 ctermfg=red         guifg=red3
+    hi def hlLevel1 ctermfg=darkyellow  guifg=orangered3
+    hi def hlLevel2 ctermfg=darkgreen   guifg=orange2
+    hi def hlLevel3 ctermfg=blue        guifg=yellow3
+    hi def hlLevel4 ctermfg=darkmagenta guifg=olivedrab4
+    hi def hlLevel5 ctermfg=red         guifg=green4
+    hi def hlLevel6 ctermfg=darkyellow  guifg=paleturquoise3
+    hi def hlLevel7 ctermfg=darkgreen   guifg=deepskyblue4
+    hi def hlLevel8 ctermfg=blue        guifg=darkslateblue
+    hi def hlLevel9 ctermfg=darkmagenta guifg=darkviolet
    endif
   endif
 
@@ -537,4 +538,5 @@
 
 let b:current_syntax = "lisp"
 
+" ---------------------------------------------------------------------
 " vim: ts=8 nowrap fdm=marker
diff --git a/runtime/syntax/mush.vim b/runtime/syntax/mush.vim
index 5565927..d43740b 100644
--- a/runtime/syntax/mush.vim
+++ b/runtime/syntax/mush.vim
@@ -1,7 +1,8 @@
 " MUSHcode syntax file
-" Maintainer:	Bek Oberin <gossamer@tertius.net.au>
-" Last updated by Rimnal on Mon Aug 20 08:28:56 MDT 2001
-
+" Maintainer: Rick Bird <nveid@nveid.com>	
+" Based on vim Syntax file by: Bek Oberin <gossamer@tertius.net.au>
+" Last Updated: Fri Nov 04 20:28:15 2005
+"
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
 if version < 600
@@ -12,57 +13,115 @@
 
 
 " regular mush functions
-syntax keyword mushFunction contained abs acos add after and andflags aposs
-syntax keyword mushFunction contained asin atan before capstr cat ceil center
-syntax keyword mushFunction contained comp con conn controls convsecs convtime
-syntax keyword mushFunction contained cos default delete dist2d dist3d div e
-syntax keyword mushFunction contained edefault edit elements elock eq escape
-syntax keyword mushFunction contained exit exp extract fdiv filter first flags
-syntax keyword mushFunction contained floor fold foreach findable fullname get
-syntax keyword mushFunction contained get_eval grab gt gte hasattr hasflag
-syntax keyword mushFunction contained home idle index insert isdbref isnum
-syntax keyword mushFunction contained isword iter last lattr lcon lcstr
-syntax keyword mushFunction contained ldelete left lexits ljust ln lnum loc
-syntax keyword mushFunction contained locate lock log lpos lt lte lwho map
-syntax keyword mushFunction contained match matchall max member merge mid min
-syntax keyword mushFunction contained mix mod money mudname mul munge name
-syntax keyword mushFunction contained nearby neq next not num obj objeval
-syntax keyword mushFunction contained objmem or orflags owner parent parse pi
-syntax keyword mushFunction contained ports pos poss power r rand remove repeat
-syntax keyword mushFunction contained replace rest reverse revwords right
-syntax keyword mushFunction contained rjust rloc room round s scramble search
-syntax keyword mushFunction contained secs secure setdiff setinter setq
-syntax keyword mushFunction contained setunion shuffle sign sin sort sortby
-syntax keyword mushFunction contained space splice sqrt squish starttime stats
-syntax keyword mushFunction contained strlen strmatch sub subj switch tan time
-syntax keyword mushFunction contained trim trunc type u ucstr udefault ulocal
-syntax keyword mushFunction contained v version visible where wordpos words
-syntax keyword mushFunction contained xcon xor
-" only highligh functions when they have an in-bracket immediately after
-syntax match mushFunctionBrackets  "\i\I*(" contains=mushFunction
 
+syntax keyword mushFunction contained @@ abs accent accname acos add after align
+syntax keyword mushFunction contained allof alphamax alphamin and andflags
+syntax keyword mushFunction contained andlflags andlpowers andpowers ansi aposs art
+syntax keyword mushFunction contained asin atan atan2 atrlock attrcnt band baseconv
+syntax keyword mushFunction contained beep before blank2tilde bnand bnot bor bound
+syntax keyword mushFunction contained brackets break bxor cand cansee capstr case
+syntax keyword mushFunction contained caseall cat ceil center checkpass children
+syntax keyword mushFunction contained chr clone cmds cnetpost comp con config conn
+syntax keyword mushFunction contained controls convsecs convtime convutcsecs cor
+syntax keyword mushFunction contained cos create ctime ctu dec decrypt default
+syntax keyword mushFunction contained delete die dig digest dist2d dist3d div
+syntax keyword mushFunction contained division divscope doing downdiv dynhelp e
+syntax keyword mushFunction contained edefault edit element elements elist elock
+syntax keyword mushFunction contained emit empire empower encrypt endtag entrances
+syntax keyword mushFunction contained eq escape etimefmt eval exit exp extract fdiv
+syntax keyword mushFunction contained filter filterbool findable first firstof
+syntax keyword mushFunction contained flags flip floor floordiv fmod fold
+syntax keyword mushFunction contained folderstats followers following foreach
+syntax keyword mushFunction contained fraction fullname functions get get_eval grab
+syntax keyword mushFunction contained graball grep grepi gt gte hasattr hasattrp
+syntax keyword mushFunction contained hasattrpval hasattrval hasdivpower hasflag
+syntax keyword mushFunction contained haspower haspowergroup hastype height hidden
+syntax keyword mushFunction contained home host hostname html idle idlesecs
+syntax keyword mushFunction contained idle_average idle_times idle_total if ifelse
+syntax keyword mushFunction contained ilev iname inc index indiv indivall insert
+syntax keyword mushFunction contained inum ipaddr isdaylight isdbref isint isnum
+syntax keyword mushFunction contained isword itemize items iter itext last lattr
+syntax keyword mushFunction contained lcon lcstr ldelete ldivisions left lemit
+syntax keyword mushFunction contained level lexits lflags link list lit ljust lmath
+syntax keyword mushFunction contained ln lnum loc localize locate lock loctree log
+syntax keyword mushFunction contained lparent lplayers lports lpos lsearch lsearchr
+syntax keyword mushFunction contained lstats lt lte lthings lvcon lvexits lvplayers
+syntax keyword mushFunction contained lvthings lwho mail maildstats mailfrom
+syntax keyword mushFunction contained mailfstats mailstats mailstatus mailsubject
+syntax keyword mushFunction contained mailtime map match matchall max mean median
+syntax keyword mushFunction contained member merge mid min mix mod modulo modulus
+syntax keyword mushFunction contained money mtime mudname mul munge mwho name nand
+syntax keyword mushFunction contained nattr ncon nearby neq nexits next nor not
+syntax keyword mushFunction contained nplayers nsemit nslemit nsoemit nspemit
+syntax keyword mushFunction contained nsremit nszemit nthings null num nvcon
+syntax keyword mushFunction contained nvexits nvplayers nvthings obj objeval objid
+syntax keyword mushFunction contained objmem oemit ooref open or ord orflags
+syntax keyword mushFunction contained orlflags orlpowers orpowers owner parent
+syntax keyword mushFunction contained parse pcreate pemit pi pickrand playermem
+syntax keyword mushFunction contained pmatch poll ports pos poss power powergroups
+syntax keyword mushFunction contained powers powover program prompt pueblo quitprog
+syntax keyword mushFunction contained quota r rand randword recv regedit regeditall
+syntax keyword mushFunction contained regeditalli regediti regmatch regmatchi
+syntax keyword mushFunction contained regrab regraball regraballi regrabi regrep
+syntax keyword mushFunction contained regrepi remainder remit remove repeat replace
+syntax keyword mushFunction contained rest restarts restarttime reswitch
+syntax keyword mushFunction contained reswitchall reswitchalli reswitchi reverse
+syntax keyword mushFunction contained revwords right rjust rloc rnum room root
+syntax keyword mushFunction contained round s scan scramble search secs secure sent
+syntax keyword mushFunction contained set setdiff setinter setq setr setunion sha0
+syntax keyword mushFunction contained shl shr shuffle sign signal sin sort sortby
+syntax keyword mushFunction contained soundex soundlike soundslike space spellnum
+syntax keyword mushFunction contained splice sql sqlescape sqrt squish ssl
+syntax keyword mushFunction contained starttime stats stddev step strcat strinsert
+syntax keyword mushFunction contained stripaccents stripansi strlen strmatch
+syntax keyword mushFunction contained strreplace sub subj switch switchall t table
+syntax keyword mushFunction contained tag tagwrap tan tel terminfo textfile
+syntax keyword mushFunction contained tilde2blank time timefmt timestring tr
+syntax keyword mushFunction contained trigger trim trimpenn trimtiny trunc type u
+syntax keyword mushFunction contained ucstr udefault ufun uldefault ulocal updiv
+syntax keyword mushFunction contained utctime v vadd val valid vcross vdim vdot
+syntax keyword mushFunction contained version visible vmag vmax vmin vmul vsub
+syntax keyword mushFunction contained vtattr vtcount vtcreate vtdestroy vtlcon
+syntax keyword mushFunction contained vtloc vtlocate vtmaster vtname vtref vttel
+syntax keyword mushFunction contained vunit wait where width wipe wordpos words
+syntax keyword mushFunction contained wrap xcon xexits xget xor xplayers xthings
+syntax keyword mushFunction contained xvcon xvexits xvplayers xvthings zemit zfun
+syntax keyword mushFunction contained zmwho zone zwho
+
+" only highligh functions when they have an in-bracket immediately after
+syntax match mushFunctionBrackets  "\i*(" contains=mushFunction
+"
 " regular mush commands
-syntax keyword mushAtCommandList contained @alias @chown @clone @create
-syntax keyword mushAtCommandList contained @decompile @destroy @doing @dolist
-syntax keyword mushAtCommandList contained @drain @edit @emit @entrances @femit
-syntax keyword mushAtCommandList contained @force @fpose @fsay @halt @last
-syntax keyword mushAtCommandList contained @link @list @listmotd @lock @mudwho
-syntax keyword mushAtCommandList contained @mvattr @name @notify @oemit @parent
-syntax keyword mushAtCommandList contained @password @pemit @ps @quota @robot
-syntax keyword mushAtCommandList contained @search @set @stats @sweep @switch
-syntax keyword mushAtCommandList contained @teleport @trigger @unlink @unlock
-syntax keyword mushAtCommandList contained @verb @wait @wipe
+syntax keyword mushAtCommandList contained @ALLHALT @ALLQUOTA @ASSERT @ATRCHOWN @ATRLOCK @ATTRIBUTE @BOOT 
+syntax keyword mushAtCommandList contained @BREAK @CEMIT @CHANNEL @CHAT @CHOWN @CHOWNALL @CHZONE @CHZONEALL 
+syntax keyword mushAtCommandList contained @CLOCK @CLONE @COBJ @COMMAND @CONFIG @CPATTR @CREATE @CRPLOG @DBCK
+syntax keyword mushAtCommandList contained @DECOMPILE @DESTROY @DIG @DISABLE @DIVISION @DOING @DOLIST @DRAIN 
+syntax keyword mushAtCommandList contained @DUMP @EDIT @ELOCK @EMIT @EMPOWER @ENABLE @ENTRANCES @EUNLOCK @FIND 
+syntax keyword mushAtCommandList contained @FIRSTEXIT @FLAG @FORCE @FUNCTION @EDIT @GREP @HALT @HIDE @HOOK @KICK 
+syntax keyword mushAtCommandList contained @LEMIT @LEVEL @LINK @LIST @LISTMOTD @LOCK @LOG @LOGWIPE @LSET @MAIL @MALIAS 
+syntax keyword mushAtCommandList contained @MAP @MOTD @MVATTR @NAME @NEWPASSWORD @NOTIFY @NSCEMIT @NSEMIT @NSLEMIT 
+syntax keyword mushAtCommandList contained @NSOEMIT @NSPEMIT @NSPEMIT @NSREMIT @NSZEMIT @NUKE @OEMIT @OPEN @PARENT @PASSWORD
+syntax keyword mushAtCommandList contained @PCREATE @PEMIT @POLL @POOR @POWERLEVEL @PROGRAM @PROMPT @PS @PURGE @QUOTA 
+syntax keyword mushAtCommandList contained @READCACHE @RECYCLE @REJECTMOTD @REMIT @RESTART @SCAN @SEARCH @SELECT @SET 
+syntax keyword mushAtCommandList contained @SHUTDOWN @SITELOCK @SNOOP @SQL @SQUOTA @STATS @SWITCH @SWEEP @SWITCH @TELEPORT 
+syntax keyword mushAtCommandList contained @TRIGGER @ULOCK @UNDESTROY @UNLINK @UNLOCK @UNRECYCLE @UPTIME @UUNLOCK @VERB 
+syntax keyword mushAtCommandList contained @VERSION @WAIT @WALL @WARNINGS @WCHECK @WHEREIS @WIPE @ZCLONE @ZEMIT
 syntax match mushCommand  "@\i\I*" contains=mushAtCommandList
 
 
-syntax keyword mushCommand drop enter examine get give goto help inventory
-syntax keyword mushCommand kill leave look news page pose say score use
-syntax keyword mushCommand version whisper DOING LOGOUT OUTPUTPREFIX
-syntax keyword mushCommand OUTPUTSUFFIX QUIT SESSION WHO
+syntax keyword mushCommand AHELP ANEWS ATTRIB_SET BRIEF BRIEF BUY CHANGES DESERT
+syntax keyword mushCommand DISMISS DROP EMPTY ENTER EXAMINE FOLLOW GET GIVE GOTO 
+syntax keyword mushCommand HELP HUH_COMMAND INVENTORY INVENTORY LOOK LEAVE LOOK
+syntax keyword mushCommand GOTO NEWS PAGE PAGE POSE RULES SAY SCORE SEMIPOSE 
+syntax keyword mushCommand SPECIALNEWS TAKE TEACH THINK UNFOLLOW USE WHISPER WHISPER
+syntax keyword mushCommand WARN_ON_MISSING WHISPER WITH
 
 syntax match mushSpecial     "\*\|!\|=\|-\|\\\|+"
 syntax match mushSpecial2 contained     "\*"
 
+syn region    mushString         start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=mushSpecial,mushSpecial2,@Spell
+
+
 syntax match mushIdentifier   "&[^ ]\+"
 
 syntax match mushVariable   "%r\|%t\|%cr\|%[A-Za-z0-9]\+\|%#\|##\|here"
@@ -73,9 +132,32 @@
 " A comment line starts with a or # or " at the start of the line
 " or an @@
 syntax keyword mushTodo contained	TODO FIXME XXX
-syntax match	mushComment	+^\s*@@.*$+	contains=mushTodo
-syntax match	mushComment	+^".*$+	contains=mushTodo
-syntax match	mushComment	+^#.*$+	contains=mushTodo
+syntax cluster mushCommentGroup contains=mushTodo
+syntax match	mushComment	"^\s*@@.*$"	contains=mushTodo
+syntax match mushComment "^#[^define|^ifdef|^else|^pragma|^ifndef|^echo|^elif|^undef|^warning].*$" contains=mushTodo
+syntax match mushComment "^#$" contains=mushTodo
+syntax region mushComment        matchgroup=mushCommentStart start="/@@" end="@@/" contains=@mushCommentGroup,mushCommentStartError,mushCommentString,@Spell
+syntax region mushCommentString  contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+@@/+me=s-1 contains=mushCommentSkip
+syntax match  mushCommentSkip    contained "^\s*@@\($\|\s\+\)"
+
+
+syntax match mushCommentStartError display "/@@"me=e-1 contained
+
+" syntax match	mushComment	+^".*$+	contains=mushTodo
+" Work on this one
+" syntax match	mushComment	+^#.*$+	contains=mushTodo
+
+syn region      mushPreCondit      start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=mushComment
+syn match       mushPreCondit      display "^\s*\(%:\|#\)\s*\(else\|endif\)\>"
+
+syn cluster     mushPreProcGroup   contains=mushPreCondit,mushIncluded,mushInclude,mushDefine,mushSpecial,mushString,mushCommentSkip,mushCommentString,@mushCommentGroup,mushCommentStartError
+
+syn region      mushIncluded       display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match       mushIncluded       display contained "<[^>]*>"
+syn match       mushInclude        display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=mushIncluded
+syn region	mushDefine		start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@mushPreProcGroup,@Spell
+syn region	mushPreProc	start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@mushPreProcGroup
+
 
 syntax region	mushFuncBoundaries start="\[" end="\]" contains=mushFunction,mushFlag,mushAttributes,mushNumber,mushCommand,mushVariable,mushSpecial2
 
@@ -114,7 +196,6 @@
   " The default methods for highlighting.  Can be overridden later
   HiLink mushAttribute  Constant
   HiLink mushCommand    Function
-  HiLink mushComment    Comment
   HiLink mushNumber     Number
   HiLink mushSetting    PreProc
   HiLink mushFunction   Statement
@@ -123,6 +204,20 @@
   HiLink mushTodo       Todo
   HiLink mushFlag       Special
   HiLink mushIdentifier Identifier
+  HiLink mushDefine     Macro
+  HiLink mushPreProc    PreProc
+  HiLink mushPreProcGroup PreProc 
+  HiLink mushPreCondit PreCondit
+  HiLink mushIncluded cString
+  HiLink  mushInclude Include
+
+
+
+" Comments
+  HiLink mushCommentStart mushComment
+  HiLink mushComment    Comment
+  HiLink mushCommentString mushString
+
 
   delcommand HiLink
 endif
diff --git a/runtime/syntax/perl.vim b/runtime/syntax/perl.vim
index 8cd40b4..ff566e1 100644
--- a/runtime/syntax/perl.vim
+++ b/runtime/syntax/perl.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Perl
 " Maintainer:	Nick Hibma <n_hibma@van-laarhoven.org>
-" Last Change:	2005 Oct 06
+" Last Change:	2005 October 18
 " Location:	http://www.van-laarhoven.org/vim/syntax/perl.vim
 "
 " Please download most recent version first before mailing
@@ -47,18 +47,18 @@
   syn include @Pod syntax/pod.vim
   unlet b:current_syntax
   if exists("perl_fold")
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend fold
+    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend fold
     syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend fold
   else
-    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,perlTodo keepend
+    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Pod,@Spell,perlTodo keepend
     syn region perlPOD start="^=cut" end="^=cut" contains=perlTodo keepend
   endif
 else
   " Use only the bare minimum of rules
   if exists("perl_fold")
-    syn region perlPOD start="^=[a-z]" end="^=cut" fold
+    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Spell fold
   else
-    syn region perlPOD start="^=[a-z]" end="^=cut"
+    syn region perlPOD start="^=[a-z]" end="^=cut" contains=@Spell
   endif
 endif
 
@@ -87,8 +87,8 @@
 endif
 syn keyword perlOperator		defined undef and or not bless ref
 if exists("perl_fold")
-  " if BEGIN/END would be a keyword the perlBEGINENDFold does not work
-  syn match perlControl			"\<BEGIN\|CHECK\|INIT\|END\>" contained
+  " if BEGIN/END is a keyword the perlBEGINENDFold does not work
+  syn match perlControl			"\<BEGIN\|END\|CHECK\|INIT\>" contained
 else
   syn keyword perlControl		BEGIN END CHECK INIT
 endif
@@ -108,8 +108,8 @@
 syn match   perlStatementFiles		"-[rwxoRWXOezsfdlpSbctugkTBMAC]\>"
 syn keyword perlStatementFlow		caller die dump eval exit wantarray
 syn keyword perlStatementInclude	require
-syn match   perlStatementInclude	"\(use\|no\)\s\+\(integer\>\|strict\>\|lib\>\|sigtrap\>\|subs\>\|vars\>\|warnings\>\|utf8\>\|byte\>\)\="
-syn keyword perlStatementScope		import
+syn match   perlStatementInclude	"\<\(use\|no\)\s\+\(\(attributes\|autouse\|base\|big\(int\|num\|rat\)\|blib\|bytes\|charnames\|constant\|diagnostics\|encoding\|fields\|filetest\|if\|integer\|less\|lib\|locale\|open\|ops\|overload\|re\|sigtrap\|sort\|strict\|subs\|threads\(::shared\)\=\|utf8\|vars\|vmsish\|warnings\(::register\)\=\)\>\)\="
+
 syn keyword perlStatementProc		alarm exec fork getpgrp getppid getpriority kill pipe setpgrp setpriority sleep system times wait waitpid
 syn keyword perlStatementSocket		accept bind connect getpeername getsockname getsockopt listen recv send setsockopt shutdown socket socketpair
 syn keyword perlStatementIPC		msgctl msgget msgrcv msgsnd semctl semget semop shmctl shmget shmread shmwrite
@@ -118,8 +118,11 @@
 syn keyword perlStatementTime		gmtime localtime time times
 
 syn keyword perlStatementMisc		warn formline reset scalar delete prototype lock
-syn keyword perlStatementNew		new
-
+if !exists("perl_no_semi_keywords")
+  syn keyword perlStatementScope	import
+  syn keyword perlStatementNew		new
+  syn keyword perlStatementCarp		carp confess croak 		
+endif
 syn keyword perlTodo			TODO TBD FIXME XXX contained
 
 " Perl Identifiers.
@@ -134,14 +137,16 @@
 
 " Special variables first ($^A, ...) and ($|, $', ...)
 syn match  perlVarPlain		 "$^[ADEFHILMOPSTWX]\="
-syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~!?@$<>(-]"
-syn match  perlVarPlain		 "$\(0\|[1-9][0-9]*\)"
+syn match  perlVarPlain		 "$[\\\"\[\]'&`+*.,;=%~?@$<>(-]"
+syn match  perlVarPlain		 "$\(0\|[1-9]\d*\)"
 " Same as above, but avoids confusion in $::foo (equivalent to $main::foo)
 syn match  perlVarPlain		 "$:[^:]"
 " These variables are not recognized within matches.
 syn match  perlVarNotInMatches	 "$[|)]"
-" This variable is not recognized within matches delimited by m//.
+" This variable is not recognized within matches delimited by '/'.
 syn match  perlVarSlash		 "$/"
+" This variable is not recognized within matches delimited by '!'.
+syn match  perlVarBang		 "$!"
 
 " And plain identifiers
 syn match  perlPackageRef	 "\(\h\w*\)\=\(::\|'\)\I"me=e-1 contained
@@ -159,7 +164,7 @@
 endif
 
 if !exists("perl_no_extended_vars")
-  syn cluster perlExpr		contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ
+  syn cluster perlExpr		contains=perlStatementScalar,perlStatementRegexp,perlStatementNumeric,perlStatementList,perlStatementHash,perlStatementFiles,perlStatementTime,perlStatementMisc,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBang,perlVarBlock,perlShellCommand,perlFloat,perlNumber,perlStringUnexpanded,perlString,perlQQ
   syn region perlVarBlock	matchgroup=perlVarPlain start="\($#\|[@%$]\)\$*{" skip="\\}" end="}" contains=@perlExpr nextgroup=perlVarMember,perlVarSimpleMember
   syn region perlVarBlock	matchgroup=perlVarPlain start="&\$*{" skip="\\}" end="}" contains=@perlExpr
   syn match  perlVarPlain	"\\\=\(\$#\|[@%&$]\)\$*{\I\i*}" nextgroup=perlVarMember,perlVarSimpleMember
@@ -174,17 +179,18 @@
 syn match  perlFiledescRead	"[<]\h\w\+[>]"
 
 syn match  perlFiledescStatementComma	"(\=\s*\u\w*\s*,"me=e-1 transparent contained contains=perlFiledescStatement
-syn match  perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^, \t]"me=e-1 transparent contained contains=perlFiledescStatement
+syn match  perlFiledescStatementNocomma "(\=\s*\u\w*\s*[^,[:space:]]"me=e-1 transparent contained contains=perlFiledescStatement
 
 syn match  perlFiledescStatement	"\u\w*" contained
 
 " Special characters in strings and matches
 syn match  perlSpecialString	"\\\(\d\+\|[xX]\x\+\|c\u\|.\)" contained
 syn match  perlSpecialStringU	"\\['\\]" contained
-syn match  perlSpecialMatch	"{\d\+\(,\(\d\+\)\=\)\=}" contained
+syn match  perlSpecialMatch	"{\d\+\(,\d*\)\=}" contained
 syn match  perlSpecialMatch	"\[\(\]\|-\)\=[^\[\]]*\(\[\|\-\)\=\]" contained
 syn match  perlSpecialMatch	"[+*()?.]" contained
 syn match  perlSpecialMatch	"(?[#:=!]" contained
+syn match  perlSpecialMatch	"(?<[=!]" contained
 syn match  perlSpecialMatch	"(?[imsx]\+)" contained
 " FIXME the line below does not work. It should mark end of line and
 " begin of line as perlSpecial.
@@ -201,13 +207,13 @@
 " Variable interpolation
 "
 " These items are interpolated inside "" strings and similar constructs.
-syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBlock
+syn cluster perlInterpDQ	contains=perlSpecialString,perlVarPlain,perlVarNotInMatches,perlVarSlash,perlVarBang,perlVarBlock
 " These items are interpolated inside '' strings and similar constructs.
 syn cluster perlInterpSQ	contains=perlSpecialStringU
 " These items are interpolated inside m// matches and s/// substitutions.
 syn cluster perlInterpSlash	contains=perlSpecialString,perlSpecialMatch,perlVarPlain,perlVarBlock,perlSpecialBEOM
 " These items are interpolated inside m## matches and s### substitutions.
-syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash
+syn cluster perlInterpMatch	contains=@perlInterpSlash,perlVarSlash,perlVarBang
 
 " Shell commands
 syn region  perlShellCommand	matchgroup=perlMatchStartEnd start="`" end="`" contains=@perlInterpDQ
@@ -233,8 +239,7 @@
 
 " Below some hacks to recognise the // variant. This is virtually impossible to catch in all
 " cases as the / is used in so many other ways, but these should be the most obvious ones.
-"syn region perlMatch	matchgroup=perlMatchStartEnd start=+^split /+lc=5 start=+[^$@%]\<split /+lc=6 start=+^if /+lc=2 start=+[^$@%]if /+lc=3 start=+[!=]\~\s*/+lc=2 start=+[(~]/+lc=1 start=+\.\./+lc=2 start=+\s/[^= \t0-9$@%]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
-syn region perlMatch	matchgroup=perlMatchStartEnd start=+^split /+lc=5 start=+[^$@%]\<split /+lc=6 start=+^while /+lc=5 start=+[^$@%]while /+lc=6 start=+^if /+lc=2 start=+[^$@%]if /+lc=3 start=+[!=]\~\s*/+lc=2 start=+[(~]/+lc=1 start=+\.\./+lc=2 start=+\s/[^= \t0-9$@%]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
+syn region perlMatch	matchgroup=perlMatchStartEnd start=+^split /+lc=5 start=+[^$@%&]\<split /+lc=6 start=+^while /+lc=5 start=+[^$@%&]while /+lc=6 start=+^if /+lc=2 start=+[^$@%&]if /+lc=3 start=+[!=]\~\s*/+lc=2 start=+[(~]/+lc=1 start=+\.\./+lc=2 start=+\s/[^=[:space:][:digit:]$@%&]+lc=1,me=e-1,rs=e-1 start=+^/+ skip=+\\/+ end=+/[cgimosx]*+ contains=@perlInterpSlash
 
 
 " Substitutions
@@ -253,7 +258,7 @@
 syn region perlSubstitutionBracket	matchgroup=perlMatchStartEnd start=+\[+ end=+\][ecgimosx]*+ contained contains=@perlInterpDQ
 syn region perlSubstitutionCurly	matchgroup=perlMatchStartEnd start=+{+  end=+}[ecgimosx]*+ contained contains=@perlInterpDQ
 
-" A special case for m!!x which allows for comments and extra whitespace in the pattern
+" A special case for s!!!x which allows for comments and extra whitespace in the pattern
 syn region perlMatch	matchgroup=perlMatchStartEnd start=+\<s!+ end=+!+me=e-1 contains=@perlInterpSlash,perlComment nextgroup=perlSubstitutionPling
 syn region perlSubstitutionPling	matchgroup=perlMatchStartEnd start=+!+ end=+![ecgimosx]*+ contained contains=@perlInterpDQ
 
@@ -280,24 +285,24 @@
 
 " Strings and q, qq, qw and qr expressions
 
-" Brackets in qq()
-syn region perlBrackets	start=+(+ end=+)+ contained transparent contains=perlBrackets,@perlStringSQ
+" Parentheses in qq()
+syn region perlParens	start=+(+ end=+)+ contained transparent contains=perlParens,@perlStringSQ
 
-syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@perlInterpSQ
-syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@perlInterpDQ
+syn region perlStringUnexpanded	matchgroup=perlStringStartEnd start="'" end="'" contains=@Spell,@perlInterpSQ
+syn region perlString		matchgroup=perlStringStartEnd start=+"+  end=+"+ contains=@Spell,@perlInterpDQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q#+ end=+#+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q|+ end=+|+ contains=@perlInterpSQ
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q(+ end=+)+ contains=@perlInterpSQ,perlBrackets
+syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q(+ end=+)+ contains=@perlInterpSQ,perlParens
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q{+ end=+}+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q/+ end=+/+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx]#+ end=+#+ contains=@perlInterpDQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx]|+ end=+|+ contains=@perlInterpDQ
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx](+ end=+)+ contains=@perlInterpDQ,perlBrackets
+syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx](+ end=+)+ contains=@perlInterpDQ,perlParens
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx]{+ end=+}+ contains=@perlInterpDQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<q[qx]/+ end=+/+ contains=@perlInterpDQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw#+  end=+#+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw|+  end=+|+ contains=@perlInterpSQ
-syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw(+  end=+)+ contains=@perlInterpSQ,perlBrackets
+syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw(+  end=+)+ contains=@perlInterpSQ,perlParens
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw{+  end=+}+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qw/+  end=+/+ contains=@perlInterpSQ
 syn region perlQQ		matchgroup=perlStringStartEnd start=+\<qr#+  end=+#[imosx]*+ contains=@perlInterpMatch
@@ -362,7 +367,7 @@
 
 
 " All other # are comments, except ^#!
-syn match  perlComment		"#.*" contains=perlTodo
+syn match  perlComment		"#.*" contains=@Spell,perlTodo
 syn match  perlSharpBang	"^#!.*"
 
 " Formats
@@ -391,8 +396,8 @@
   syn region perlBEGINENDFold start="^\z(\s*\)\<\(BEGIN\|END\|CHECK\|INIT\)\>.*[^};]$" end="^\z1}\s*$" transparent fold keepend
 
   if exists("perl_fold_blocks")
-    syn region perlIfFold start="^\z(\s*\)\(if\|unless\|for\|while\|until\)\s*(.*)\s*{\s*$" start="^\z(\s*\)foreach\s*\(\(my\|our\)\=\s*\S\+\s*\)\=(.*)\s*{\s*$" end="^\z1}\s*;\=$" transparent fold keepend
-    syn region perlIfFold start="^\z(\s*\)do\s*{\s*$" end="^\z1}\s*while" end="^\z1}\s*;\=$" transparent fold keepend
+    syn region perlIfFold start="^\z(\s*\)\(if\|unless\|for\|while\|until\)\s*(.*)\(\s*{\)\=\s*$" start="^\z(\s*\)foreach\s*\(\(my\|our\)\=\s*\S\+\s*\)\=(.*)\(\s*{\)\=\s*$" start="\z(\s*\)else\s*{\s*$" end="^\z1}\s*;\=$" transparent fold keepend
+    syn region perlIfFold start="^\z(\s*\)do\(\s*{\)\=\s*$" end="^\z1}\s*while" end="^\z1}\s*;\=$" transparent fold keepend
   endif
 
   setlocal foldmethod=syntax
@@ -445,6 +450,7 @@
   HiLink perlVarSimpleMemberName perlString
   HiLink perlVarNotInMatches	perlIdentifier
   HiLink perlVarSlash		perlIdentifier
+  HiLink perlVarBang		perlIdentifier
   HiLink perlQQ			perlString
   if version >= 600
     HiLink perlHereDoc		perlString
@@ -454,7 +460,7 @@
     HiLink perlUntilEOFSQ	perlString
     HiLink perlUntilEmptyDQ	perlString
     HiLink perlUntilEmptySQ	perlString
-    HiLink perlUntilEOF		perlString
+    HiLink perlUntilEOF		perlString		
   endif
   HiLink perlStringUnexpanded	perlString
   HiLink perlSubstitutionSQ	perlString
@@ -490,7 +496,7 @@
   HiLink perlStatementFiles	perlStatement
   HiLink perlStatementFlow	perlStatement
   HiLink perlStatementScope	perlStatement
-  HiLink perlStatementInclude	perlStatement
+  HiLink perlStatementInclude	perlInclude
   HiLink perlStatementProc	perlStatement
   HiLink perlStatementSocket	perlStatement
   HiLink perlStatementIPC	perlStatement
@@ -511,9 +517,9 @@
   HiLink perlSpecialMatch	perlSpecial
   HiLink perlSpecialBEOM	perlSpecial
   HiLink perlDATA		perlComment
-
-  HiLink perlBrackets		Error
-
+  
+  HiLink perlParens		Error
+  
   " Possible errors
   HiLink perlNotEmptyLine	Error
   HiLink perlElseIfError	Error
diff --git a/runtime/syntax/ruby.vim b/runtime/syntax/ruby.vim
index 23079e9..bdd6e2e 100644
--- a/runtime/syntax/ruby.vim
+++ b/runtime/syntax/ruby.vim
@@ -2,14 +2,8 @@
 " Language:	Ruby
 " Maintainer:	Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
 " Info:		$Id$
-" URL:		http://vim-ruby.sourceforge.net
+" URL:		http://vim-ruby.rubyforge.org
 " Anon CVS:	See above site
-" Licence:	GPL (http://www.gnu.org)
-" Disclaimer:
-"    This program is distributed in the hope that it will be useful,
-"    but WITHOUT ANY WARRANTY; without even the implied warranty of
-"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-"    GNU General Public License for more details.
 " ----------------------------------------------------------------------------
 "
 " Previous Maintainer:	Mirko Nasato
diff --git a/runtime/syntax/sh.vim b/runtime/syntax/sh.vim
index b979221..7615c59 100644
--- a/runtime/syntax/sh.vim
+++ b/runtime/syntax/sh.vim
@@ -2,21 +2,22 @@
 " Language:		shell (sh) Korn shell (ksh) bash (sh)
 " Maintainer:		Dr. Charles E. Campbell, Jr.  <NdrOchipS@PcampbellAfamily.Mbiz>
 " Previous Maintainer:	Lennart Schultz <Lennart.Schultz@ecmwf.int>
-" Last Change:		Sep 06, 2005
-" Version:		77
+" Last Change:		Oct 18, 2005
+" Version:		78
 " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
 "
 " Using the following VIM variables: {{{1
-" b:is_kornshell	if defined, enhance with kornshell syntax
+" b:is_kornshell	if defined, enhance with kornshell/POSIX syntax
 " b:is_bash		if defined, enhance with bash syntax
-"   is_kornshell	if neither b:is_kornshell or b:is_bash is
-"		defined, then if is_kornshell is set
-"		b:is_kornshell is default
-"   is_bash		if none of the previous three variables are
-"		defined, then if is_bash is set b:is_bash is default
+" g:is_kornshell	if neither b:is_kornshell or b:is_bash is
+"		defined, then if g:is_kornshell is set
+"		enhance with kornshell/POSIX syntax highlighting
+" g:is_bash		if none of the previous three variables are
+"		defined, then if g:is_bash is set enhance with
+"		bash syntax highlighting
 " g:sh_fold_enabled	if non-zero, syntax folding is enabled
-"   sh_minlines		sets up syn sync minlines  (default: 200)
-"   sh_maxlines		sets up syn sync maxlines  (default: twice sh_minlines)
+" g:sh_minlines		sets up syn sync minlines (dflt: 200)
+" g:sh_maxlines		sets up syn sync maxlines (dflt: 2x sh_minlines)
 "
 " This file includes many ideas from Éric Brunet (eric.brunet@ens.fr)
 
@@ -385,7 +386,7 @@
  " bash : ${parameter//pattern/string}
  " bash : ${parameter//pattern}
  syn match  shDerefPPS	contained	'/\{1,2}'	nextgroup=shDerefPPSleft
- syn region shDerefPPSleft	contained	start='.'	skip=@\%(\\\)\/@ matchgroup=shDerefOp end='/' nextgroup=shDerefPPSright contains=@shCommandSubList
+ syn region shDerefPPSleft	contained	start='.'	skip=@\%(\\\)\/@ matchgroup=shDerefOp end='/' end='\ze}' nextgroup=shDerefPPSright contains=@shCommandSubList
  syn region shDerefPPSright	contained	start='.'	end='\ze}'	contains=@shCommandSubList
 endif
 
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index 9ab7646..4d14f86 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:	October 12, 2005
-" Version:	7.0-17
+" Last Change:	Nov 18, 2005
+" Version:	7.0-20
 " Automatically generated keyword lists: {{{1
 
 " Quit when a syntax file was already loaded {{{2
@@ -123,11 +123,11 @@
 
 " Operators: {{{2
 " =========
-syn cluster vimOperGroup	contains=vimOper,vimOperParen,vimNumber,vimString,vimOperOk,vimRegister
+syn cluster vimOperGroup	contains=vimOper,vimOperParen,vimNumber,vimString,vimOperOk,vimRegister,vimContinue
 syn match  vimOper	"\(==\|!=\|>=\|<=\|=\~\|!\~\|>\|<\|=\)[?#]\{0,2}"	skipwhite nextgroup=vimString,vimSpecFile
 syn match  vimOper	"||\|&&\|[-+.]"	skipwhite nextgroup=vimString,vimSpecFile
 syn region vimOperParen oneline	matchgroup=vimOper start="(" end=")" contains=@vimOperGroup
-syn region vimOperParen oneline	matchgroup=vimSep  start="{" end="}" contains=@vimOperGroup nextgroup=vimVar
+syn region vimOperParen	matchgroup=vimSep  start="{" end="}" contains=@vimOperGroup nextgroup=vimVar
 syn match  vimOperOk	"\<[aiAIrR][()]"
 if !exists("g:vimsyntax_noerror")
  syn match  vimOperError	")"
@@ -217,7 +217,7 @@
 syn match   vimCollClass    contained transparent	"\[:\(alnum\|alpha\|blank\|cntrl\|digit\|graph\|lower\|print\|punct\|space\|upper\|xdigit\|return\|tab\|escape\|backspace\):\]"
 syn match   vimSubstSubstr  contained	"\\z\=\d"
 syn match   vimSubstTwoBS   contained	"\\\\"
-syn match   vimSubstFlagErr contained	"[^< \t\r]\+" contains=vimSubstFlags
+syn match   vimSubstFlagErr contained	"[^< \t\r|]\+" contains=vimSubstFlags
 syn match   vimSubstFlags   contained	"[&cegiIpr]\+"
 
 " 'String': {{{2
diff --git a/runtime/tutor/tutor.sk.cp1250 b/runtime/tutor/tutor.sk.cp1250
new file mode 100644
index 0000000..dc13b26
--- /dev/null
+++ b/runtime/tutor/tutor.sk.cp1250
@@ -0,0 +1,821 @@
+===============================================================================
+=    V i t a j t e   v o   V I M   T u t o r i a l i    -    Verzia 1.5       =
+===============================================================================
+
+     Vim je ve¾mi výkonný editor, ktorý má príliž ve¾a príkazov na to aby
+     mohli byt všetky popísané vo výuke akou je táto. Táto výuka
+     popisuje dostatoèné množstvo príkazov nato aby bolo možné používa
+     Vim ako viacúèelový editor.
+
+     Približný èas potrebný na prebratie tejto výuky je 25-30 minút,
+     závisí na tom, ko¾ko je stráveného èasu s preskúšavaním.
+
+     Príkazy v lekciách modifikujú text. Vytvor kópiu tohto súboru aby
+     sa mohlo precvièova na òom (pri štarte "vimtutor" je toto kópia).
+
+     Je dôležité zapamäta si, že táto výuka je vytvorená pre výuku
+     používaním. To znamená, že je potrebné si príkazy vyskúša, aby bolo
+     uèenie správne. Ak len èitas text, príkazy zabudneš!
+
+     Presvedè sa, že Shift-Lock NIEJE stlaèený a stlaèt klávesu
+     j  nieko¾ko krát, aby sa kurzor posunul nato¾ko, že lekcia 1.1
+     celkom zaplní obrazovku.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 1.1:  POHYB KURZOROM
+
+
+   ** Pre pohyb kurzorum stlaè klávesy h,j,k,l ako je znázornené. **
+	     ^
+	     k		 Funkcia: Klávesa h je na¾avo a vykoná pohyb do¾ava.
+       < h	 l   >	 Klávesa l je napravo a vykoná pohyb doprava.
+	     j		 Klávesa j vyzerá ako šípka dole
+	     v
+  1. Pohybuj kurzorom po obrazovke, kým si na to nezvykneš.
+
+  2. Drž stlaèenú klávesu pre pohyb dole (j), kým sa jej funkcia nezopakuje.
+---> Teraz sa už vieš pohybova na nasledujúcu lekciu.
+
+  3. Použitím klávesy pre pohyb dole prejdi na Lekciu 1.2.
+
+Poznámka: Ak si niesi istý tým èo si napísal, stlaè <ESC>
+	  na prechod do normálneho módu.
+
+Poznámka: Kurzorové klávesy sú tiež funkèné. Ale používaním hjkl sa budeš
+	  schopný pohybova rýchlejšie, keï si zvykneš ich používa.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     LEKCIA 1.2: SPڊANIE A ZATVÁRANIE VIMU
+
+  !! POZNÁMKA: Pred vykonaním týchto krokov si preèítaj celú túto lekciu !!
+
+  1. Stlaè klávesu <ESC> (aby si sa uèite nachádzal v normálnom móde)
+
+  2. Napíš:			:q! <ENTER>.
+
+---> Tým ukonèíš prácu s editorom BEZ uloženia zmien, ktoré si vykonal.
+     Ak chceš uloži vykonané zmeny a ukonèi prácu s editorom napíš:
+				:wq   <ENTER>
+
+  3. Keï sa dostaneš na príkazový riadok, napíš príkaz, ktorým sa dostaneš
+     spe do tejto výuky. To môže by:	vimtutor <ENTER>
+     Zvyèajne sa používa:		vim tutor <ENTER>
+
+---> 'vim' znamená spustenie editora vim, 'tutor' je názov súboru, ktorý
+     chceš editova.
+
+  4. Ak si si tieto kroky spo¾ahlivo zapamätal, vykonaj kroky 1 až 3, pre
+     ukonèenie a znovu spustenie editora. Potom presuò kurzor dole na
+     lekciu 1.3.
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 1.3: EDITÁCIA TEXTU - MAZANIE
+
+
+** Stlaèenie klávesy  x  v normálnom móde zmaže znak na mieste kurzora. **
+
+  1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->.
+
+  2. Aby si mohol odstráni chyby, pohybuj kurzorom kým neprejde na znak,
+     ktorý chceš zmaza.
+
+  3. Stlaè klávesu  x  aby sa zmazal nechcený znak.
+
+  4. Zopakuj kroky 2 až 4 až kým veta nieje správna.
+
+---> Kraava skooèilla ccezz mesiiac.
+
+  5. Ak je veta správna, prejdi na lekciu 1.4.
+
+POZNÁMKA: Neskúšaj si zapametä obsah tejto výuky, ale sa uè používaním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 1.4: EDITÁCIA TEXTU - VKLADANIE
+
+
+    ** Stlaèenie klávesy  i  v normálnom móde umožòuje vkladanie textu. **
+
+  1. Presuò kurzor nižšie na prvý riadok za znaèku --->.
+
+  2. Pre upravenie prvého riadku do rovnakého tvaru ako je druhý riadok,
+     presuò kurzor na prvý znak za misto, kde má by text vložený.
+
+  3. Stlaè klávesu  i  a napíš potrebný text.
+
+  4. Po opravení každej chyby, stlaè <ESC> pre návrat do normálneho módu.
+     Zopakuj kroky 2 až 4 kým nieje veta správna.
+
+---> Tu je text chýbajúci tejto.
+---> Tu je nejaký text chýbajúci od tejto èiary.
+
+  5. Keï sa dostatoène nauèíš vklada text, prejdi na nasledujúce zhrnutie.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       ZHRNUTIE LEKCIE 1
+
+
+  1. Kurzor sa pohybuje použitím kláves so šípkami alebo klávesmi hjkl.
+	  h (do lava)	j (dole)	k (hore)	l (doprava)
+
+  2. Pre spustenie Vimu (z príkazového riadku) napíš: vim FILENAME <ENTER>
+
+  3. Na ukonèenie Vimu napíš: <ESC>  :q!  <ENTER> pre zrušenie všetkých zmien
+       alebo napíš:   <ESC>   :wq   <ENTER>    pre uloženie zmien.
+
+  4. Na zmazanie znaku na mieste kurzora napíš v normálnom móde:  x
+
+  5. Pre vloženie textu na mieste kurzora v normálnom móde napíš:
+	 i     vkladaný text	<ESC>
+
+POZNÁMKA: Stlaèenie <ESC> a premiestní do normálneho módu alebo zruší
+	  nejaký nechcený a èiastoène dokonèený príkaz.
+
+Teraz pokraèuj lekciou 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 2.1: Mazacie príkazy
+
+
+	 ** Napísanie príkazu  dw  zmaže znaky do konca slova. **
+
+1. Stlaè  <ESC>  aby si bol bezpeène v normálnom móde.
+
+2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->.
+
+3. Presuò kurzor na zaèiatok slova, ktoré je potrebné zmaza.
+
+4. Napíš  dw  aby slovo zmizlo.
+
+POZNÁMKA: Písmená dw sa zobrazia na poslednom riadku obrazovky tak ako ich
+	  píšeš. Ak píšeš nieèo zle, stlaè	<ESC>  a zaèni znova.
+
+---> Tu je nieko¾ko slov zábava, ktoré nie patria list do tejto vety.
+
+5. Zopakuj kroky 3 až 4 kým veta nieje správna a prejdi na lekciu 2.2.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 2.2: VIAC MAZACÍCH PRÍKAZOV
+
+
+	 ** Napísanie príkazu d$  zmaže znaky do konca riadku **
+
+1. Stlaè  <ESC>  aby si bol bezpeène v normálnom móde.
+
+2. Presuò kurzor nižšie na riadok oznaèený znaèkou --->.
+
+3. Presuò kurzor na koniec správnej vety (ZA prvú bodku).
+
+4. Napíš    d$    aby sa zmazali znaky do konca riadku.
+
+---> Niekto napísal koniec tohto riadku dvakrát. koniec tohot riadku dvakrát.
+
+
+5. Prejdi na lekciu 2.3 pre pochopenie toho èo sa stalo.
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 2.3: ROZŠIROVACIE PRÍKAZY A OBJEKTY
+
+
+  Formát mazacieho príkazu  d  je nasledovný:
+
+   [èíslo]   d objekt       ALEBO      d   [èíslo]    objekt
+  Kde:
+    èíslo - udáva ko¾ko krát sa príkaz vykoná (volite¾né, implicitne=1)
+    d - je príkaz pre mazanie
+    objekt - udáva na èom sa príkaz vykonáva (vypísané nižšie)
+
+  Krátky výpis objektov:
+    w - od kurzora do konca slova, vrátanie medzier
+    e - od kurzora do konca slova, BEZ medzier
+    $ - od kurzora do konca riadku.
+
+POZNÁMKA: Ak stlaèíš klávesu objektu v normálnom móde bez príkazu, kurzor
+	  sa presunie na miesto špecifikované vo výpise objektov.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcia 2.4: VÝNIMKA V 'PRÍKAZOVOM OBJEKTE'
+
+
+	    ** Napísanie príkazu   dd   zmaže celý riadok. **
+
+Vzh¾adom na frekvenciu mazania celého riadku, sa autori Vimu rozhodli,
+že bude jednoduchšie maza celý riadok napísaním dvoch písmen d.
+
+1. Presuò kurzor na druhý riadok v texte na spodu.
+2. Napíš  dd  aby si zmazal riadok.
+3. Prejdi na štvrtý riadok.
+4. Napíš   2dd   (pametaj si  èíslo-príkaz-objekt) aby si zmazal dva riadky.
+
+    1)  Ruže sú èervené,
+    2)  Blato je zábavné,
+    3)  Fialky sú modré,
+    4)  Mám auto,
+    5)  Hodinky ukazujú èas,
+    6)  Cukor je sladký,
+    7)  A to si ty.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 2.5: PRÍKAZ UNDO
+
+
+** Stlaè  u  pre vrátenie posledného príkazu,  U  pre úpravu celého riadku. **
+
+1. Presuò kurzor nižšie na riadok oznaèený znaèkou ---> a premiestni ho na
+   prvú chybu.
+2. Napíš  x  pre zmazanie prvého nechceného riadku.
+3. Teraz napíš  u  èím vrátíš spä posledne vykonaný príkaz.
+4. Teraz oprav všetky chyby na riadku použitím príkazu  x  .
+5. Teraz napíš ve¾ké   U  èím vrátíš riadok do pôvodného stavu.
+6. Teraz napíš  u  nieko¾ko krát, èím vrátíš spä príkaz U.
+7. Teraz napíš CTRL-R (drž klávesu CTRL stlaèenú kým stláèaš R) nieko¾ko
+   krát, èím vrátíš spä predtým vrátené príkazy (redo).
+
+---> Opprav chybby nna toomto riadku a zmeeò ich pommocou undo.
+
+  8. Tieto príkazy sú èasto používané. Teraz prejdi na zhrnutie lekcie 2.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 2 ZHRNUTIE
+
+
+  1. Pre zmazanie znakov od kurzora do konca slova napíš:   dw
+
+  2. Pre zmazanie znakov od kurzora do konca riadku napíš:   d$
+
+  3. Pre zmazanie celého riadku napíš:   dd
+
+  4. Formát pre píkaz v norálnom móde je:
+
+       [èíslo]   príkaz   objekt    ALEBO   príkaz [èíslo]   objekt
+     kde:
+       èíslo - udáva ko¾ko krát sa príkaz zopakuje
+       príkaz - udáva vykonávaný príkaz, ako napríklad  d  pre mazanie
+       objekt - udáva rozsah príkazu, ako napríklad  w(slovo),
+		$ (do konca riadku), atï.
+
+  5. Pre vrátenie spä predošlej operácie napíš:	u   (malé u)
+     Pre vrátenie všetkých úprav na riadku napíš:    U   (ve¾ké U)
+     Pre vrátenie vrátených úprav napíš:	      CTRL-R
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 3.1: PRÍKAZ VLOŽI
+
+
+	  ** Napísanie príkazu  p  vloží psledný výmaz za kurzor. **
+
+  1. Presuò kurzor nižšie na prvý riadok textu.
+
+  2. Napíš  dd  èím zmažeš riadok a uložíš ho do buffera editora Vim.
+
+  3. Presuò kurzor vyššie tam, kam zmazaný riadok patrí.
+
+  4. Ak napíšeš v normálnom móde   p   zmazaný riadk sa vloží.
+
+  5. Zopakuj kroky 2 až 4, kým riadky niesú v správnom poradí.
+
+     d) Tiež sa dokážeš vzdeláva?
+     b) Fialky sú modré,
+     c) Inteligencia sa vzdeláva,
+     a) Ruže sú èervené,
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.2: PRÍKAZ NAHRADENIA
+
+
+     ** Napísaním  r  a znaku sa nahradí znak na mieste kurzora. **
+
+  1. Presuò kurzor nižšie na prví riadok textu oznaèeného znaèkou --->.
+
+  2. Presuò kurzor na zaèiatok prvej chyby.
+
+  3. napíš  r  a potom znak, ktorý nahradí chybu.
+
+  4. Zopakuj kroky 2 a 3, kým prvý riadok nieje správny.
+
+---> Kaï bol tento riasok píaaný, niekro stlašil nesprábne klávesy!
+---> Keï bol tento riadok písaný, niekto stlaèil nesprávne klávesy!
+
+  5. Teraz prejdi na lekciu 3.2.
+
+POZNÁMKA: Pamätaj si, že nauèi sa môžeš len používanim, nie pamätaním.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.3. PRÍKAZ ÚPRAVY
+
+
+     ** Ak chceš zmeni èas slova alebo celé slovo, napíš  cw . **
+
+  1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->.
+
+  2. Umiestni kurzor na písmeno o v slove rosfpl.
+
+  3. Napíš  cw  a oprav slovo (v tomto prípade napíš 'iadok'.)
+
+  4. Stlaè <ESC> a prejdi na ïalšiu chybu (prvý znak, ktorý treba zmeni.)
+
+  5. Zopakuj kroky 3 a 4, kým prvá veta nieje rovnaká ako druhá.
+
+---> Tento rosfpl má nieko¾ko skic, ktoré je pirewvbí zmeni piyuèán príkazu.
+---> Tento riadok má nieko¾ko slov, ktoré je potrebné zmeni použitím príkazu.
+
+Poznámka, že  cw  nielen nahrádza slovo, ale a aj premiestní do vkladania.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		       Lekcia 3.4: VIAC ZMIEN POUŽITÍM c
+
+
+   ** Príkaz pre úpravy sa používa s rovnakými objektami ako pre mazanie **
+
+  1. Príkaz pre úpravy pracuje rovnako ako pre mazanie. Formát je:
+
+    [èíslo]   c   objekt       ALEBO       c [èíslo]   objekt
+
+  2. Objekty sú rovnaké, ako napríklad  w (slovo), $ (koniec riadku), atï.
+
+  3. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->.
+
+  4. Presuò kurzor na prvú chybu.
+
+  5. napíš  c$  aby si mohol upravi zvyšok riadku pod¾a druhého
+     a stlaè <ESC>.
+
+---> Koniec tohto riadku potrebuje pomoc, aby bol ako druhy.
+---> Koniec tohto riadku potrebuje opravi použitím príkazu  c$ .
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 3 ZHRNUTIE
+
+
+  1. Na vloženie textu, ktorý už bol zmazaný, napíš  p . To vloží zmazaný
+     text ZA kurzor (ak bol riadok zmazaný prejde na riadok pod kurzorom).
+
+  2. Pre naradenie znaku na mieste kurzora, napíš  r  a potom znak, ktorý
+     nahradí pôvodný znak.
+
+  3. Príkaz na upravenie umožòuje zmeni špecifikovaný objekt od kurzora
+     až po koniec objektu.  napr. Napíš  cw  èím zmníš text od pozície
+     kurzora do konca slova, c$  zmení text do konca riadku.
+
+  4. Format pre nahradenie je:
+
+	[èíslo]   c objekt	 ALEBO	     c	 [èíslo]    objekt
+
+
+Teraz prejdi na nalsedujúcu lekciu.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		     Lekcia 4.1: POZÍCIA A STATUS SÚBORU
+
+
+  ** Stlaè CTRL-g pre zobrazenie svojej pozície v súbore a statusu súboru.
+     Stlaè SHIFT-G pre prechod na riadok v súbore. **
+
+  Poznámka: Preèítaj si celú túto lekciu skôr ako zaèneš vykonáva kroky!!
+
+  1. Drž stlaèenú klávesu Ctrl a stlaè  g . Na spodu obrazovky sa zobrazí
+     stavový riadok s názvom súboru a riadkom na ktorom práve si. Zapamätaj
+     si si èíslo riadku pre krok 3.
+
+  2. Stlaè Shift-G èím sa dostaneš na spodok súboru.
+
+  3. Napíš èíslo riadku na ktorom si sa nachádzal a stlaè Shift-G. To a
+     vráti na riadok, na ktorom si prvý krát stlaèil Ctrl-g.
+     (Keï píšeš èísla, tieto sa nezobrazujú na obrazovke.)
+
+  4. Ak sa cítíš schopný vykona teto kroky, vykonaj kroky 1 až 3.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 4.2: PRÍKAZ VYH¼ADÁVANIA
+
+
+  ** Napíš  /  nasledované reazcom pre vyh¾adanie príslušného reazca. **
+
+  1. Napíš znak  /  v normálnom móde. Poznámka, že tento znak sa spolu
+     s kurzorom zobrazí v dolnej èasti obrazovky ako s  :  príkazom.
+
+  2. Teraz napíš 'errroor' <ENTER>. To je slovo, ktoré chceš vyh¾ada.
+
+  3. Pre vyh¾adanie ïalšieho výskytu rovnakého reazca, stlaè jednoducho  n.
+     Pre vyh¾adanie ïalšieho výskytu rovnakého reazca opaèným smerom,
+     napíš Shift-N.
+
+  4. Ak chceš vyh¾ada reazec v spätnom smere, použí príkaz  ?  miesto
+     príkazu /.
+
+ ---> Keï vyh¾adávanie dosiahne koniec tohto súboru, bude pokraèova na
+      zaèiatku.
+
+  "errroor" nie je spôsob ako nahradi error; errroor je error.
+
+POZNÁMKA: Keï vyh¾adávanie dosiahne koniec súboru, bude pokraèova na jeho
+	  zaèiatku.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	     Lekcia 4.3: VYH¼ADÁVANIE ZODPOVEDAJÚCICH ZÁTAVORIEK
+
+
+	 ** Napíš  %  pre vyh¾adanie príslušného znaku ),], alebo } . **
+
+  1. Premiestni kurzor na hocaký zo znakov (, [, alebo { v riadku nižšie
+     oznaèeného znaèkou --->.
+
+  2. Teraz napíš znak  % .
+
+  3. Kurzor sa premiestni na zodpovedajúcu zátvorku.
+
+  4. Napíš  %  pre presun kurzoru spä na otvárajúcu zátvorku.
+
+---> Toto ( je testovací riadok s ('s, ['s ] a {'s } v riadku. ))
+
+Poznámka: Toto je ve¾mi výhodné použí pri ladení programu s chýbajúcimi
+	  uzatvárajúcimi zátvorkami.
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 4.4: SPOSOB AKO ZMENI CHYBY
+
+
+ ** Napíš   :s/starý/nový/g  pre nahradenie slova 'starý' za slovo 'nový'. **
+
+  1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->.
+
+  2. Napíš  :s/thee/the <ENTER> . Poznamka, že tento príkaz zmení len prvý
+     výskyt v riadku.
+
+  3. Teraz napíš   :s/thee/the/g   èo znamená celkové nahradenie v riadku.
+     Toto nahradí všetky výskyty v riadku.
+
+---> Thee best time to see thee flowers in thee spring.
+
+  4. Pre zmenu všetkých výskytov daného reazca medzi dvomi ridakami,
+     napíš  :#,#s/starý/nový/g  kde #,# sú èísla dvoch riadkov.
+     napíš  :%s/starý/nový/g    pre zmenu všetkých výskytov v celom riadku
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 4 ZHRNUTIE
+
+
+  1. Ctrl-g  vypíše tvoju pozíciu v súbore a status súboru.
+     Shift-g  a premiestni na koniec riadku. Èíslo riadku nasledované
+     Shift-g  a presunie na dané èíslo riadku.
+
+  2. Napísanie  /  nasledované reazcom vyh¾adá reazec smerom DOPREDU.
+     Napísanie  ?  nasledované reazcom vyh¾ada reazec smerom DOZADU.
+     Napísanie  n  po vyh¾adávaní, vyh¾adá nasledujúci výskyt reazca
+     v rovnakom smere, prièom  Shift-N  vyh¾adá v opaènom smere.
+
+  3. Napísanie  %  keï kurzor je na (,),[,],{, alebo } nájde zodpovdajúcu
+     párú zátvorku.
+
+  4. Pre nahradenie nového za prvý starý v riadku napíš    :s/nový/starý
+     Pre nahradenie nového za všetky staré v riadku napíš  :s/nový/starý/g
+     Pre nahradenie reazcov medzi dvoma riadkami 3 napíš  :#,#/nový/starý/g
+     Pre nahradenie všetkých výskytov v súbore napíš       :%s/starý/nový/g
+     Pre potvrdenie každého nahradenia pridaj 'c'	    :%s/nový/starý/gc
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		Lekcia 5.1 AKO SPUSTI VONKAJŠÍ PRÍKAZ
+
+
+ ** Napíš príkaz  :!  nasledovaný vonkajším príkazom pre spustenie príkazu **
+
+  1. Napíš obvyklý píkaz  :  ktorý nastaví kurzor na spodok obrazovky.
+     To umožní napísa príkaz.
+
+  2. Teraz napíš  !  (výkrièník). To umožní spusti hociaký vonkajší príkaz
+     z príkazového riadku.
+
+  3. Ako príklad napíš  ls  za ! a stlaè <ENTER>. Tento príkaz
+     zobrazí obsah tvojho adresára rovnako ako na príkazovom riadku.
+     Alebo použi  :!dir  ak ls nefunguje.
+
+Poznámka:  Takto je možné spusti hociaký vonkajší príkaz.
+Poznámka:  Všetky príkazy  :  musia by dokonèené stlaèením <ENTER>
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		      Lekcia 5.2: VIAC O UKLADANÍ SÚBOROV
+
+
+     ** Pre uloženie zmien v súbore, napíš  :w FILENAME. **
+
+  1. Napíš  :!dir  alebo  :!ls  pre výpis aktuálneho adresára.
+     Už vieš, že musíš za týmto stlaèi <ENTER> .
+
+  2. Vyber názov súboru, ktorý EŠTE neexistuje.
+
+  3. Teraz napíš:   :w TEST   (kde TEST je názov vybratého súboru.)
+
+  4. To uloží celý súbor  (Vim Tutor)  pod názovm TEST.
+     Pre overenie napíš   :!dir   , èím  zobrazíš obsah adresára.
+
+Poznámka: že ak ukonèíš prácu s editorom Vim a znovu ho spustíš s názvom
+	  súboru TEST, súbor bude kópia výuky, keï si ho uložil.
+
+  5. Teraz odstráò súbor napísaním (MS-DOS):   :!del TEST
+			     alebo (Unix):     :!rm TEST
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcia 5.3 VÝBEROVÝ PRÍKAZ PRE ULOŽENIE
+
+
+  ** Pre uloženie èasti súboru, napíš   :#,# w FILENAME **
+
+  1. Znovu napíš  :!dir  alebo  :!ls  pre zobrazenie obsahu aktuálneho
+     adresára a vyber vhodný súbor ako TEST.
+
+  2. Presuò kurzor na vrch tejto strany a napíš  Ctrl-g  pre vyh¾adanie èísla
+     tohto riadku.  PAMETAJ SI TOTO ÈÍSLO!
+
+  3. Teraz prejdi na spodok strany a napíš  Ctrl-g  znovu. ZAPAMETAJ SI ÈÍSLO
+     AJ TOHTO RIADKU!
+
+  4. Pre uloženie LEN èasti súboru, napíš   :#,# w TEST  kde #,# sú dve èísla
+     zapamätaných riadkov (vrch, spodok) a TEST je názov súboru.
+
+  5. Znova sa pozri, èi tam ten súbor je pomocou príkazu   :!dir ale
+     NEODSTRAÒUJ ho.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		   Lekcia 5.4: VÝBER A ZLUÈOVANIE SÚBOROV
+
+
+	** Pre vloženie obsahu súboru, napíš   :r FILENAME **
+
+  1. Napíš   :!dir   aby si sa presvedèil, že súbor TEST stále existuje.
+
+  2. Presuò kurzor na vrch tejto strany.
+
+POZNÁMKA:  Po vykonaní kroku 3 uvidíš Lekciu 5.3. Potom sa presuò dole
+	   na túto lekciu.
+
+  3. Teraz vlož súbor TEST použitím príkazu   :r TEST   kde TEST je názov
+     súboru.
+
+POZNÁMKA:  Súbor, ktorý si vložil sa vloží od miesta, kde sa nachádza kurzor.
+
+  4. Pre kontrolu vloženia súboru, presuò kurzor spä a všimni si, že teraz
+     mᚠdve kópie lekcie 5.3, originál a súborovú verziu.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			       LEKCIA 5 ZHRNUTIE
+
+
+  1.  :!príkaz  spustí vonkajší príkaz.
+
+      Niektoré využite¾né príklady sú:
+	(MS_DOS)	  (UNIX)
+	 :!dir		   :!ls		    -  zobrazí obsah adresára
+	 :!del FILENAME    :!rm FILENAME    -  odstráni súbor FILENAME
+
+  2.  :w FILENAME  uloží aktuálny súbor na disk pod menom FILENAME.
+
+  3.  :#,#w FILENAME  uloží riadky od # do # do súboru FILENAME.
+
+  4.  :r FILENAME  vyberie z disku súbor FILENAME a vloží ho do aktuálneho
+      súboru za pozíciou kurzora.
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 6.1: PRÍKAZ OTVORI
+
+
+** Napíš  o  pre vloženie riadku pod kurzor a prepnutie do vkladacieho módu **
+
+  1. Presuò kurzor nižšie na riadok oznaèený znaèkou --->.
+
+  2. Napíš o (malé písmeno) pre vloženie èistého riadku pod kurzorm
+     a prepnutie do vkladacieho módu.
+
+  3. Teraz skopíruj riadok oznaèený ---> a stlaè <ESC> pre ukonèenie
+     vkladacieho módu.
+
+---> Po napísaní  o  sa kurzor premiestní na vložený riadok do vkladacieho
+     módu.
+
+  4. Pre otvorenie riadku nad kurzorom, jednotucho napíš ve¾ké  O , namiesto
+     malého o. Vyskúšaj si to na nasledujúcom riadku.
+Vlož riadok nad týmto napísaním Shift-O, keï kurzor je na tomto riadku.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			Lekcia 6.2: PRÍKAZ PRIDA
+
+
+	   ** Napíš  a  pre vloženie textu ZA kurzor. **
+
+  1. Presuò kurzor nižšie na koniec prvého riadku oznaèeného znaèkou --->
+     napísaním  $  v normálnom móde.
+
+  2. Napíš  a  (malé písmeno) pre pridanie textu ZA znakom na mieste
+     kurzora. (Ve¾ké A pridá na koniec riadku.)
+
+Poznámka: Toto obchádza písanie  i , posledný znak, text na vloženie, <ESC>,
+	  kurzor doprava, a nakoniec, x , na pridávanie na koniec riadku!
+
+  3. Teraz dokonèi prvý riadok. Poznámka, že pridávanie je vlastne rovnaké
+     ako vkladací mód, okrem miesta, kde sa text vkladá.
+
+---> Tento riadok ti dovo¾uje nácvik
+---> Tento riadok ti dovo¾uje nácvik pridávania textu na koniec riadku.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    Lekcia 6.3: INÝ SPOSOB NAHRADZOVANIA
+
+
+      ** Napíš ve¾ké R pre nahradenie viac ako jedného znaku. **
+
+  1. Presuò kurzor nižšie na prvý riadok oznaèený znaèkou --->.
+
+  2. Premiestni kurzor na zaèiatok prvého slova, ktoré je odlišné od druhého
+     riadku oznaèeného ---> (slovo 'posledná').
+
+  3. Teraz napíš  R  a nahraï zvyšok textu na prvom riadku písaním cez starý
+     text tak, aby prvý riadok bol rovnaký ako druhý.
+
+---> Na úpravu prvého riadku do tvaru ako je posledný na strane použi klávesy.
+---> Na úpravu prvého riadku do tavru ako je druhý, napíš R a nový text.
+
+  4. Poznámka, že ak stlaèíš <ESC> pre ukonèenie, všetok nezmenený text
+     zostane.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			 Lekcia 6.4: NASTAVENIE MOŽNOSTÍ
+
+
+** Nastav možnosti, takže vyh¾adávanie alebo nahradzovanie ignoruje
+   rozlišovanie **
+
+
+  1. Vyh¾adaj reazec 'ignore' napísaním:
+     /ignore
+     Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n
+
+  2. Nastav možnos 'ic' (Ignore case) napísaním príkazu:
+     :set ic
+
+  3. Teraz vyh¾adaj reazec 'ingore' znova stlaèením klávesy: n
+     Zopakuj vyh¾adávanie nieko¾ko krát stlaèením klávesy n
+
+  4. Nastav možnosi 'hlsearch' a 'incsearch':
+     :set hls is
+
+  5. Teraz spusti vyh¾adávací príkaz znovu, a pozri èo sa stalo:
+     /ignore
+
+  6. Na odstránenie zvýraznenia výrazov napíš:
+     :nohlsearch
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+			      LEKCIA 6 ZHRNUTIE
+
+
+  1. Napísaním  o  sa otvorí nový riadok pod kurzorom a premiestni sa kurzor
+     na vložený riadok do vkladacieho módu.
+     napísaním ve¾kého  O  sa otvorí riadok nad aktuálnym riadkom s kurzorom.
+
+  2. Napíš  a  pre vkladanie textu ZA znak na pozícii kurzoru.
+     Napísaním ve¾kého  A  sa text automatický pridáva na koniec riadku.
+
+  3. Napísanie ve¾kého  R  prepne do nahradzovacieho módu, kým nieje
+     stlaèené <ESC> pre ukonèenie nahradzovacieho módu.
+
+  4. Napísanie ":set xxx" nastaví možnos "xxx".
+
+
+
+
+
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		    LEKCIA 7: PRÍKAZY ON-LINE NÁPOVEDY
+
+
+	  ** Používaj on-line systém nápovedy **
+
+  Vim má obsiahly on-line systém nápovedy. Pre odštartovanie, vyskúšaj jeden
+  z týchto troch:
+	- stlaè klávesu <HELP> (ak nejakú máš)
+	- stlaè klávesu <F1> (ak nejakú máš)
+	- napíš  :help <ENTER>
+
+  Napíš  :q <ENTER>  èím zatvoríš okno nápovedy.
+
+  Môžeš nájs help ku hociakej téme pridaním argumentu ku príkazu ":help".
+  Vyskúšaj tieto (nezabudni stlaèi <ENTER>):
+
+	:help w
+	:help c_<T
+	:help insert-index
+	:help user-manual
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+		 LEKCIA 8: VYTVORENIE ŠTARTOVACIEHO SKRIPTU
+
+		       ** Zapni funkcie editora Vim **
+
+  Vim má omnoho viac funkcii než Vi, ale veèšina z nich je implicitne
+  vypnutá. Pre používanie viac Vim funkcii vytvor "vimrc" súbor.
+
+  1. Zaèni editova "vimrc" súbor, to závisí na použitom systéme:
+	:edit ~/.vimrc      pre Unix
+	:edit $VIM/_vimrc   pre MS-Windows
+
+  2. Teraz si preèítaj text príkladu "vimrc" súboru:
+
+	:read $VIMRUNTIME/vimrc_example.vim
+
+  3. Ulož súbor:
+
+	:write
+
+  Pri nasledujúcom štarte editora Vim sa použije zvýrazòovanie syntaxe.
+  Do "vimrc" súboru môžeš prida všetky svoje uprednostòované nastavenia.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Toto vymedzuje výuku Vimu. Toto je urèené pre strucný preh¾ad o editore
+  Vim, úplne postaèujúce pre ¾ahké a obstojné používanie tohto editora.
+  Táto výuka je ïaleko od kompletnosti, pretože Vim má omnoho viacej príkazov.
+  Ako ïalšie si preèítaj užívat¾ský manuál: ":help user-manual".
+
+  Pre ïalšie èítanie a štúdium je odporúèaná kniha:
+  Vim - Vi Improved - od Steve Oualline
+  Vydavate¾: New Riders
+  Prvá kniha urèená pre Vim. Špeciálne vhodná pre zaèiatoèníkov.
+  Obsahuje množstvo príkladov a obrázkov.
+  Pozri na http://iccf-holland.org/click5.html
+
+  Táto kniha je staršia a je viac o Vi ako o Vim, ale je tiež odporúèaná:
+  Learning the Vi Editor - od Linda Lamb
+  Vydavate¾: O'Reilly & Associates Inc.
+  Je to dobrá kniha pre získanie vedomostí o práci s editorom Vi.
+  Šieste vydanie obsahuje tiež informácie o editore Vim.
+
+  Táto výuka bola napísaná autormi Michael C. Pierce a Robert K. Ware,
+  Colorado School of Mines s použitím myšlienok dodanými od Charles Smith,
+  Colorado State University.  E-mail: bware@mines.colorado.edu.
+
+  Modifikované pre Vim od Bram Moolenaar.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  Preklad do Slovenèiny: ¼uboš Èelko
+  e-mail:       celbos@inmail.sk
+  Last Change:  2004 Apr 29
+  encoding:     cp1250
diff --git a/runtime/tutor/tutor.vim b/runtime/tutor/tutor.vim
index 8621ae2..29eda4c 100644
--- a/runtime/tutor/tutor.vim
+++ b/runtime/tutor/tutor.vim
@@ -1,6 +1,6 @@
 " Vim tutor support file
 " Author: Eduardo F. Amatria <eferna1@platea.pntic.mec.es>
-" Last Change:	2005 Mar 15
+" Last Change:	2005 Oct 16
 
 " This small source file is used for detecting if a translation of the
 " tutor file exist, i.e., a tutor.xx file, where xx is the language.
@@ -83,6 +83,15 @@
   endif
 endif
 
+" The Turkish tutor is available in two encodings, guess which one to use
+if s:ext =~? '\.tr'
+  if &enc == "utf-8"
+    let s:ext = ".tr.utf-8"
+  elseif &enc == "iso-8859-9"
+    let s:ext = ".tr.iso9"
+  endif
+endif
+
 " The Greek tutor is available in two encodings, guess which one to use
 if s:ext =~? '\.gr' && &enc =~ 737
   let s:ext = ".gr.cp737"